Mercurial > emacs
changeset 82189:5b68c6fcbb95
Fix problem with modes derived from CC Mode: Move macro
`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).
author | Alan Mackenzie <acm@muc.de> |
---|---|
date | Sat, 28 Jul 2007 11:51:38 +0000 |
parents | 399658799dc5 |
children | 3b2cbc59143e |
files | lisp/progmodes/cc-langs.el lisp/progmodes/cc-mode.el |
diffstat | 2 files changed, 10 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/progmodes/cc-langs.el Sat Jul 28 11:50:44 2007 +0000 +++ b/lisp/progmodes/cc-langs.el Sat Jul 28 11:51:38 2007 +0000 @@ -2875,6 +2875,14 @@ (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 @@ ;; 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 @@ (init (append (cdr c-emacs-variable-inits) (cdr c-lang-variable-inits))) current-var) + (c-make-emacs-variables-local) (condition-case err (while init
--- a/lisp/progmodes/cc-mode.el Sat Jul 28 11:50:44 2007 +0000 +++ b/lisp/progmodes/cc-mode.el Sat Jul 28 11:51:38 2007 +0000 @@ -154,21 +154,12 @@ (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))