]> git.eshelyaron.com Git - emacs.git/commitdiff
Bind open-paren-in-column-0-is-defun-start to nil at some entry points.
authorAlan Mackenzie <acm@muc.de>
Sun, 19 Jan 2014 12:32:47 +0000 (12:32 +0000)
committerAlan Mackenzie <acm@muc.de>
Sun, 19 Jan 2014 12:32:47 +0000 (12:32 +0000)
* progmodes/cc-engine.el (c-invalidate-state-cache-1)
(c-parse-state-1, c-guess-basic-syntax):  Bind it here.
* progmodes/cc-mode.el (c-before-change, c-after-change)
(c-font-lock-fontify-region): Bind it here.

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

index 471be5eee78e216c6fc8e2ddc9b8607956d892ca..138949b0c8e7a910ce520e9558163defbce32f52 100644 (file)
@@ -1,3 +1,12 @@
+2014-01-19  Alan Mackenzie  <acm@muc.de>
+
+       Bind open-paren-in-column-0-is-defun-start to nil at some entry
+       points.
+       * progmodes/cc-engine.el (c-invalidate-state-cache-1)
+       (c-parse-state-1, c-guess-basic-syntax):  Bind it here.
+       * progmodes/cc-mode.el (c-before-change, c-after-change)
+       (c-font-lock-fontify-region): Bind it here.
+
 2014-01-19  Martin Rudalics  <rudalics@gmx.at>
 
        * term.el (term-window-width): Call window-text-width instead of
index efa8be1c80cb0673b6ee405855ff60d422534fb3..24ca6ca7ea472f97c1fd5259915dda1c0d5ce62c 100644 (file)
@@ -3183,7 +3183,8 @@ comment at the start of cc-engine.el for more info."
     ;; Truncate `c-state-cache' and set `c-state-cache-good-pos' to a value
     ;; below `here'.  To maintain its consistency, we may need to insert a new
     ;; brace pair.
-    (let ((here-bol (c-point 'bol here))
+    (let (open-paren-in-column-0-is-defun-start
+         (here-bol (c-point 'bol here))
          too-high-pa             ; recorded {/(/[ next above here, or nil.
          dropped-cons            ; was the last removed element a brace pair?
          pa)
@@ -3254,6 +3255,7 @@ comment at the start of cc-engine.el for more info."
   ;; This function might do hidden buffer changes.
   (let* ((here (point))
         (here-bopl (c-point 'bopl))
+        open-paren-in-column-0-is-defun-start
         strategy            ; 'forward, 'backward etc..
         ;; Candidate positions to start scanning from:
         cache-pos           ; highest position below HERE already existing in
@@ -9370,7 +9372,8 @@ comment at the start of cc-engine.el for more info."
     (c-save-buffer-state
        ((indent-point (point))
         (case-fold-search nil)
-        ;; A whole ugly bunch of various temporary variables.  Have
+        open-paren-in-column-0-is-defun-start
+        ;; A whole ugly bunch of various temporary variables.  Have
         ;; to declare them here since it's not possible to declare
         ;; a variable with only the scope of a cond test and the
         ;; following result clauses, and most of this function is a
index 98bf7053ce07c7b9ceed49af39768007bcb7ef85..e961343713eee94a2b455dc978515205c80b3e50 100644 (file)
@@ -1032,15 +1032,16 @@ Note that the style variables are always made local to the buffer."
                      (list type marked-id
                            type-pos term-pos
                            (buffer-substring-no-properties type-pos term-pos)
-                           (buffer-substring-no-properties beg end)))))))
-
-       (if c-get-state-before-change-functions
-           (mapc (lambda (fn)
-                   (funcall fn beg end))
-                 c-get-state-before-change-functions))
-       )))
-  ;; The following must be done here rather than in `c-after-change' because
-  ;; newly inserted parens would foul up the invalidation algorithm.
+                             (buffer-substring-no-properties beg end)))))))
+
+         (if c-get-state-before-change-functions
+             (let (open-paren-in-column-0-is-defun-start)
+               (mapc (lambda (fn)
+                       (funcall fn beg end))
+                     c-get-state-before-change-functions)))
+         )))
+    ;; The following must be done here rather than in `c-after-change' because
+    ;; newly inserted parens would foul up the invalidation algorithm.
   (c-invalidate-state-cache beg))
 
 (defvar c-in-after-change-fontification nil)
@@ -1062,7 +1063,7 @@ Note that the style variables are always made local to the buffer."
   ;; This calls the language variable c-before-font-lock-functions, if non nil.
   ;; This typically sets `syntax-table' properties.
 
-  (c-save-buffer-state (case-fold-search)
+  (c-save-buffer-state (case-fold-search open-paren-in-column-0-is-defun-start)
     ;; When `combine-after-change-calls' is used we might get calls
     ;; with regions outside the current narrowing.  This has been
     ;; observed in Emacs 20.7.
@@ -1178,7 +1179,8 @@ Note that the style variables are always made local to the buffer."
   ;; 
   ;; Type a space in the first blank line, and the fontification of the next
   ;; line was fouled up by context fontification.
-  (let ((new-beg beg) (new-end end) new-region case-fold-search)
+  (let ((new-beg beg) (new-end end) new-region case-fold-search
+       open-paren-in-column-0-is-defun-start)
     (if c-in-after-change-fontification
        (setq c-in-after-change-fontification nil)
       (save-restriction