diff options
| author | Taylor R Campbell <campbell@mumble.net> | 2008-10-25 20:12:14 +0000 | 
|---|---|---|
| committer | Taylor R Campbell <campbell@mumble.net> | 2008-10-25 20:12:14 +0000 | 
| commit | 0ada66e5c5b62af4f25b97b21e69bfe587912a81 (patch) | |
| tree | 450102a51461c2d6f352db9526150f1a3ce2b794 | |
| parent | 8ab1694f0f85914347e1c7873291bcc03adbb4e1 (diff) | |
Update the compatibility and compiler warning suppression hacks for Emacs 22.
The byte-code compiler of GNU Emacs 22 is now clever enough to detect
and flag (funcall 'an-undefined-function ...), so use `autoload' for
the newcomment.el routines instead.
There may be other functions that should be autoloaded, such as
`comment-kill' and `comment-indent'.  Currently GNU Emacs 22 signals
no warnings about these, however.  I don't know whether these changes
works in GNU Emacs 21 or XEmacs, but they probably do.
darcs-hash:20081025201214-00fcc-350188c1285ba0519aa7bf20fbab0209c1ee21df
| -rw-r--r-- | paredit.el | 46 | 
1 files changed, 24 insertions, 22 deletions
| @@ -988,6 +988,29 @@ If the point is in a string or a comment, fill the paragraph instead,  ;;;; Comment Insertion +;;; This is all a horrible, horrible hack, primarily for GNU Emacs 21, +;;; in which there is no `comment-or-uncomment-region'. + +(autoload 'comment-forward "newcomment") +(autoload 'comment-normalize-vars "newcomment") +(autoload 'comment-region "newcomment") +(autoload 'comment-search-forward "newcomment") +(autoload 'uncomment-region "newcomment") + +(defun paredit-initialize-comment-dwim () +  (require 'newcomment) +  (if (not (fboundp 'comment-or-uncomment-region)) +      (defalias 'comment-or-uncomment-region +        (lambda (beginning end &optional argument) +          (interactive "*r\nP") +          (if (save-excursion (goto-char beginning) +                              (comment-forward (point-max)) +                              (<= end (point))) +              (uncomment-region beginning end argument) +              (comment-region beginning end argument))))) +  (defalias 'paredit-initialize-comment-dwim 'comment-normalize-vars) +  (comment-normalize-vars)) +  (defun paredit-comment-dwim (&optional argument)    "Call the Lisp comment command you want (Do What I Mean).  This is like `comment-dwim', but it is specialized for Lisp editing. @@ -1016,27 +1039,6 @@ At the top level, where indentation is calculated to be at column 0,               (comment-kill (if (integerp argument) argument nil))               (comment-indent)))          (t (paredit-insert-comment)))) - -;;; This is all a horrible, horrible hack, primarily for GNU Emacs 21, -;;; in which there is no `comment-or-uncomment-region'. - -(defun paredit-initialize-comment-dwim () -  (require 'newcomment) -  (if (not (fboundp 'comment-or-uncomment-region)) -      (defalias 'comment-or-uncomment-region -        (lambda (beginning end &optional argument) -          (interactive "*r\nP") -          (funcall (if (save-excursion (goto-char beginning) -                                       ;; This is undefined until `newcomment' -                                       ;; is loaded.  Using `funcall' with a -                                       ;; symbol shuts up the compiler. -                                       (funcall 'comment-forward (point-max)) -                                       (<= end (point))) -                       'uncomment-region -                     'comment-region) -                   beginning end argument)))) -  (defalias 'paredit-initialize-comment-dwim 'comment-normalize-vars) -  (comment-normalize-vars))  (defun paredit-comment-on-line-p ()    "True if there is a comment on the line following point. @@ -1049,7 +1051,7 @@ This is expected to be called only in `paredit-comment-dwim'; do not        ;; COMMENT-P to true; if not, it will be nil.        (while (progn                 (setq comment-p          ;t -> no error -                     (funcall 'comment-search-forward (point-at-eol) t)) +                     (comment-search-forward (point-at-eol) t))                 (and comment-p                      (or (paredit-in-string-p)                          (paredit-in-char-p (1- (point)))))) | 
