changeset 109249:452ecb3f69c0

* progmodes/cc-mode.el (c-before-hack-hook): When the mode is set in file local variables, set it first.
author Alan Mackenzie <acm@muc.de>
date Sun, 20 Jun 2010 16:17:05 +0000
parents f969130f2bb4
children d3b4a3311253
files lisp/ChangeLog lisp/progmodes/cc-mode.el
diffstat 2 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Jun 19 15:43:47 2010 -0400
+++ b/lisp/ChangeLog	Sun Jun 20 16:17:05 2010 +0000
@@ -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
--- a/lisp/progmodes/cc-mode.el	Sat Jun 19 15:43:47 2010 -0400
+++ b/lisp/progmodes/cc-mode.el	Sun Jun 20 16:17:05 2010 +0000
@@ -662,8 +662,13 @@
 
 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))