]> git.eshelyaron.com Git - emacs.git/commitdiff
(easy-mmode-define-global-mode): Autoload.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 5 Jun 2000 06:06:30 +0000 (06:06 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 5 Jun 2000 06:06:30 +0000 (06:06 +0000)
Use find-file-hooks in the minor-mode function.
Be careful not to loop indefinitely in the post-command-hook function.

lisp/ChangeLog
lisp/emacs-lisp/easy-mmode.el

index 90c447d803f8fc39a8c78dc494423d4836c5aeb4..905c15ff5232d96d9ef246d47b78bbde40093201 100644 (file)
@@ -1,23 +1,44 @@
+2000-06-05  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * emacs-lisp/easy-mmode.el (easy-mmode-define-global-mode): Autoload.
+       Use find-file-hooks in the minor-mode function.
+       Be careful not to loop indefinitely in the post-command-hook function.
+
 2000-06-05  Michael Kifer  <kifer@cs.sunysb.edu>
        
        * ediff-init.el (ediff-has-face-support-p): make it paint faces on
        tty's.
        * ediff-diff.el (ediff-exec-process): use --binary for fine
-       differences whenever apropriate.
+       differences whenever appropriate.
        * viper-cmd.el (viper-smart-suffix-list): rearranged list members.
-       * viper.el (find-file,find-file-other-window): get viper to do
+       * viper.el (find-file, find-file-other-window): get viper to do
        wildcards. 
        
 2000-06-04  Stefan Monnier  <monnier@cs.yale.edu>
 
-       * emacs-lisp/easy-mmode.el (easy-mmode-define-toggle):
-       Remove (inline into define-minor-mode).
+       * jit-lock.el (jit-lock-saved-fontify-buffer-function): New var.
+       (jit-lock-fontify-buffer): New function for JIT refontification.
+       (jit-lock-mode): Fix docstring.
+       Use jit-lock-fontify-buffer for font-lock-fontify-buffer-function.
+       Remove jit-lock-after-change from the _local_ hook.
+       (jit-lock-function-1): Fix docstring.
+
+       * info.el (Info-on-current-buffer): Initialize info.
+
+       * newcomment.el (comment-indent): Ignore comment-indent-hook.
+
+       * progmodes/tcl.el (tcl-indent-for-comment):
+       Ignore comment-indent-hook.
+
+       * emacs-lisp/easy-mmode.el: Require CL during compilation.
+       (easy-mmode-define-toggle): Remove (inline into define-minor-mode).
        (easy-mmode-pretty-mode-name): Rename from easy-mmode-derive-name
        and improve to use the lighter to guess the capitalization.
        (define-minor-mode): Inline code from easy-mmode-define-toggle.
        Add keyword arguments to specify global-ness or the custom group.
        Add local-map and help-echo properties to the lighter.
        (easy-mmode-define-navigation): Add the errors to debug-ignored-errors.
+       (easy-mmode-define-global-mode): New macro.
 
 2000-06-02  Dave Love  <fx@gnu.org>
 
index 72b64a4a88107ccd809a283b1695cbd56f63e38e..32ceecd299624333655dc3d092753fcbea322a33 100644 (file)
@@ -120,32 +120,21 @@ BODY contains code that will be executed each time the mode is (dis)activated.
 
     `(progn
        ;; Define the variable to enable or disable the mode.
-       ,(if globalp
-           ;; BEWARE! autoload.el depends on this `defcustom' coming
-           ;; as the first element after progn.
-           `(defcustom ,mode ,init-value
-              ,(format "Toggle %s.
-Setting this variable directly does not take effect;
-use either \\[customize] or the function `%s'."
-                       pretty-name mode)
-              :set (lambda (symbol value) (funcall symbol (or value 0)))
-              :initialize 'custom-initialize-default
-              :group ,group
-              :type 'boolean)
-         `(progn
-            (defvar ,mode ,init-value ,(format "Non-nil if %s is enabled.
+       ,(if (not globalp)
+           `(progn
+              (defvar ,mode ,init-value ,(format "Non-nil if %s is enabled.
 Use the function `%s' to change this variable." pretty-name mode))
-            (make-variable-buffer-local ',mode)))
+              (make-variable-buffer-local ',mode))
 
-       ;; Define the minor-mode keymap.
-       ,(when keymap
-         `(defvar ,keymap-sym
-            (cond ((and ,keymap (keymapp ,keymap))
-                   ,keymap)
-                  ((listp ,keymap)
-                   (easy-mmode-define-keymap ,keymap))
-                  (t (error "Invalid keymap %S" ,keymap)))
-            ,(format "Keymap for `%s'." mode-name)))
+         `(defcustom ,mode ,init-value
+            ,(format "Toggle %s.
+Setting this variable directly does not take effect;
+use either \\[customize] or the function `%s'."
+                     pretty-name mode)
+            :set (lambda (symbol value) (funcall symbol (or value 0)))
+            :initialize 'custom-initialize-default
+            :group ,group
+            :type 'boolean))
 
        ;; The toggle's hook.
        (defcustom ,hook  nil
@@ -174,6 +163,14 @@ With zero or negative ARG turn mode off.
                      (if ,mode "en" "dis")))
         ,mode)
 
+       ;; Define the minor-mode keymap.
+       ,(when keymap
+         `(defvar ,keymap-sym
+            (cond ((keymapp ,keymap) ,keymap)
+                  ((listp ,keymap) (easy-mmode-define-keymap ,keymap))
+                  (t (error "Invalid keymap %S" ,keymap)))
+            ,(format "Keymap for `%s'." mode-name)))
+
        (add-minor-mode ',mode ',lighter
                       (if (boundp ',keymap-sym) (symbol-value ',keymap-sym)))
        
@@ -184,6 +181,7 @@ With zero or negative ARG turn mode off.
 ;;; make global minor mode
 ;;;
 
+;;;###autoload
 (defmacro easy-mmode-define-global-mode (global-mode mode turn-on
                                                     &rest keys)
   "Make GLOBAL-MODE out of the MODE buffer-local minor mode.
@@ -209,9 +207,6 @@ KEYS is a list of CL-style keyword arguments:
        (t (setq keys (cdr keys)))))
 
     `(progn
-       ;; BEWARE!  autoload.el depends on `define-minor-mode' coming
-       ;; as the first element after progn.
-
        ;; The actual global minor-mode
        (define-minor-mode ,global-mode
         ,(format "Toggle %s in every buffer.
@@ -223,7 +218,10 @@ in which `%s' turns it on."
 
         ;; Setup hook to handle future mode changes and new buffers.
         (if ,global-mode
-            (add-hook 'change-major-mode-hook ',cmmh)
+            (progn
+              (add-hook 'find-file-hooks ',buffers)
+              (add-hook 'change-major-mode-hook ',cmmh))
+          (remove-hook 'find-file-hooks ',buffers)
           (remove-hook 'change-major-mode-hook ',cmmh))
 
         ;; Go through existing buffers.
@@ -236,18 +234,16 @@ in which `%s' turns it on."
 
        ;; The function that calls TURN-ON in each buffer.
        (defun ,buffers ()
-        (while ,buffers
-          (when (buffer-name (car ,buffers))
-            (with-current-buffer (pop ,buffers)
-              (,turn-on))))
         (remove-hook 'post-command-hook ',buffers)
-        (remove-hook 'after-find-file ',buffers))
+        (while ,buffers
+          (let ((buf (pop ,buffers)))
+            (when (buffer-live-p buf)
+              (with-current-buffer buf (,turn-on))))))
 
        ;; The function that catches kill-all-local-variables.
        (defun ,cmmh ()
         (add-to-list ',buffers (current-buffer))
-        (add-hook 'post-command-hook ',buffers)
-        (add-hook 'after-find-file ',buffers)))))
+        (add-hook 'post-command-hook ',buffers)))))
 
 ;;;
 ;;; easy-mmode-defmap