* progmodes/cc-mode.el (c-before-hack-hook): When the mode is set in file
authorAlan Mackenzie <acm@muc.de>
Sun, 20 Jun 2010 16:17:05 +0000 (16:17 +0000)
committerAlan Mackenzie <acm@muc.de>
Sun, 20 Jun 2010 16:17:05 +0000 (16:17 +0000)
local variables, set it first.

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

index 3371fb4..47763f3 100644 (file)
@@ -1,3 +1,8 @@
+2010-06-20  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-mode.el (c-before-hack-hook): When the mode is set
+       in file local variables, set it first.
+
 2010-06-19  Glenn Morris  <rgm@gnu.org>
 
        * descr-text.el (describe-char-unicode-data): Insert separating
index 2bfa2b7..6b0d3f8 100644 (file)
@@ -662,8 +662,13 @@ They are set only when, respectively, the pseudo variables
 
 This function is called from the hook `before-hack-local-variables-hook'."
   (when c-buffer-is-cc-mode
-    (let ((stile (cdr (assq 'c-file-style file-local-variables-alist)))
+    (let ((mode-cons (assq 'mode file-local-variables-alist))
+         (stile (cdr (assq 'c-file-style file-local-variables-alist)))
          (offsets (cdr (assq 'c-file-offsets file-local-variables-alist))))
+      (when mode-cons
+       (hack-one-local-variable (car mode-cons) (cdr mode-cons))
+       (setq file-local-variables-alist
+             (delq mode-cons file-local-variables-alist)))
       (when stile
        (or (stringp stile) (error "c-file-style is not a string"))
        (c-set-style stile))