]> code.delx.au - gnu-emacs/commitdiff
Fix problem with modes derived from CC Mode: Move macro
authorAlan Mackenzie <acm@muc.de>
Sat, 28 Jul 2007 11:45:55 +0000 (11:45 +0000)
committerAlan Mackenzie <acm@muc.de>
Sat, 28 Jul 2007 11:45:55 +0000 (11:45 +0000)
`c-make-emacs-variables-local' from cc-mode.el to cc-langs.el.  Call it
from c-make-init-lang-vars-fun (cc-langs.el) instead of
c-init-language-vars-for (cc-mode.el).

lisp/progmodes/cc-langs.el
lisp/progmodes/cc-mode.el

index 9c749c11b6ae6ab90a0ca1f81271b6cc0ff1e50e..c5d9c162520d122f1126c16f5963de4dfdf726b4 100644 (file)
@@ -2875,6 +2875,14 @@ way."
 (defconst c-lang-variable-inits (cc-eval-when-compile c-lang-variable-inits))
 (defconst c-emacs-variable-inits (cc-eval-when-compile c-emacs-variable-inits))
 
+;; Make the `c-lang-setvar' variables buffer local in the current buffer.
+;; These are typically standard emacs variables such as `comment-start'.
+(defmacro c-make-emacs-variables-local ()
+  `(progn
+     ,@(mapcar (lambda (init)
+                `(make-local-variable ',(car init)))
+              (cdr c-emacs-variable-inits))))
+
 (defun c-make-init-lang-vars-fun (mode)
   "Create a function that initializes all the language dependent variables
 for the given mode.
@@ -2898,6 +2906,7 @@ accomplish that conveniently."
         ;; that could be in the result from `cl-macroexpand-all'.
         (let ((c-buffer-is-cc-mode ',mode)
               current-var source-eval)
+          (c-make-emacs-variables-local)
           (condition-case err
 
               (if (eq c-version-sym ',c-version-sym)
@@ -2956,6 +2965,7 @@ accomplish that conveniently."
             (init (append (cdr c-emacs-variable-inits)
                           (cdr c-lang-variable-inits)))
             current-var)
+        (c-make-emacs-variables-local)
         (condition-case err
 
             (while init
index f201f9bab6c5a3e99e1684dd2d0b9794c00169ac..8669a41c2f03970d4c3e5e6f3820f35735af9123 100644 (file)
 (defun c-leave-cc-mode-mode ()
   (setq c-buffer-is-cc-mode nil))
 
-;; Make the `c-lang-setvar' variables buffer local in the current buffer.
-;; These are typically standard emacs variables such as `comment-start'.
-(defmacro c-make-emacs-variables-local ()
-  `(progn
-     ,@(mapcar (lambda (init)
-                `(make-local-variable ',(car init)))
-              (cdr c-emacs-variable-inits))))
-
 (defun c-init-language-vars-for (mode)
   "Initialize the language variables for one of the language modes
 directly supported by CC Mode.  This can be used instead of the
 `c-init-language-vars' macro if the language you want to use is one of
 those, rather than a derived language defined through the language
 variable system (see \"cc-langs.el\")."
-  (c-make-emacs-variables-local)
   (cond ((eq mode 'c-mode)    (c-init-language-vars c-mode))
        ((eq mode 'c++-mode)  (c-init-language-vars c++-mode))
        ((eq mode 'objc-mode) (c-init-language-vars objc-mode))