changeset 107026:746534c20a06

Merge from mainline.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Thu, 21 Jan 2010 22:03:46 +0000
parents d263e3698b86 (current diff) 719b13c3b762 (diff)
children a64b73ff7ed5
files
diffstat 3 files changed, 21 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Thu Jan 21 09:12:33 2010 +0000
+++ b/lisp/ChangeLog	Thu Jan 21 22:03:46 2010 +0000
@@ -1,3 +1,16 @@
+2010-01-21  Alan Mackenzie  <acm@muc.de>
+
+	Fix a situation where deletion of a cpp construct throws an error.
+	* progmodes/cc-engine.el (c-invalidate-state-cache): Before
+	invoking c-with-all-but-one-cpps-commented-out, check that the
+	special cpp construct is still in the buffer.
+	(c-parse-state): Record the special cpp with markers, not numbers.
+
+2010-01-21  Kenichi Handa  <handa@m17n.org>
+
+	* textmodes/sgml-mode.el (sgml-maybe-name-self): No need to
+	process last-command-event, as it is now decoded first (Bug#5380).
+
 2010-01-20  Chong Yidong  <cyd@stupidchicken.com>
 
 	* term.el (term-send-raw-meta): Revert 2009-12-04 change (Bug#5330).
--- a/lisp/progmodes/cc-engine.el	Thu Jan 21 09:12:33 2010 +0000
+++ b/lisp/progmodes/cc-engine.el	Thu Jan 21 22:03:46 2010 +0000
@@ -2996,9 +2996,11 @@
   ;; containing point.  We can then call `c-invalidate-state-cache-1' without
   ;; worrying further about macros and template delimiters.
   (c-with-<->-as-parens-suppressed
-   (if c-state-old-cpp-beg
+   (if (and c-state-old-cpp-beg
+	    (< c-state-old-cpp-beg here))
        (c-with-all-but-one-cpps-commented-out
-	c-state-old-cpp-beg c-state-old-cpp-end
+	c-state-old-cpp-beg
+	(min c-state-old-cpp-end here)
 	(c-invalidate-state-cache-1 here))
      (c-with-cpps-commented-out
       (c-invalidate-state-cache-1 here)))))
@@ -3029,8 +3031,9 @@
 	      (c-parse-state-1))
 	   (c-with-cpps-commented-out
 	    (c-parse-state-1))))
-      (setq c-state-old-cpp-beg here-cpp-beg
-	    c-state-old-cpp-end here-cpp-end))))
+      (setq c-state-old-cpp-beg (and here-cpp-beg (copy-marker here-cpp-beg t))
+	    c-state-old-cpp-end (and here-cpp-end (copy-marker here-cpp-end t)))
+      )))
 
 ;; Debug tool to catch cache inconsistencies.  This is called from
 ;; 000tests.el.
--- a/lisp/textmodes/sgml-mode.el	Thu Jan 21 09:12:33 2010 +0000
+++ b/lisp/textmodes/sgml-mode.el	Thu Jan 21 22:03:46 2010 +0000
@@ -608,11 +608,7 @@
   "Insert a symbolic character name according to `sgml-char-names'."
   (interactive "*")
   (if sgml-name-8bit-mode
-      (let ((mc last-command-event))
-	(if (< mc 256)
-	    (setq mc (unibyte-char-to-multibyte mc)))
-	(or mc (setq mc last-command-event))
-	(sgml-name-char mc))
+      (sgml-name-char last-command-event)
     (self-insert-command 1)))
 
 (defun sgml-name-8bit-mode ()