diff lisp/progmodes/cc-cmds.el @ 69140:3d8b060d10fb

cc-align.el, cc-awk.el, cc-bytecomp.el, cc-cmds.el, cc-compat.el, cc-defs.el, cc-engine.el, cc-fonts.el, cc-langs.el, cc-menus.el, cc-mode.el, cc-styles.el, cc-subword.el, cc-vars.el: Add 2006 to the copyright statement. cc-awk.el: (c-awk-after-change): Protect the match data with save-match-data. It was being corrupted when Font Lock was not enabled. (ii): Fix a typo. cc-cmds.el, cc-mode.el, cc-engine.el (c-update-modeline): Concatenate the minor mode indicators directly onto mode-name, removing c-submode-indicators. Sometimes, c-s-i got separated from the mode name on the mode line. cc-cmds.el, cc-mode.el: Rename c-hungry-backspace to c-hungry-delete-backwards, at the request of RMS. Leave the old name as an alias. cc-cmds.el (c-electric-brace, c-electric-semi&comma, c-electric-colon): Correct doc-strings: "/ln" -> "/la". cc-cmds.el (c-electric-brace): Fix clean-up brace-else-brace (error due to mbeg, mend being undefined). cc-defs.el (c-version): Update to 5.31.3. cc-defs.el: [Supersedes patch V1.38]: (top level): Check for a buggy font-lock-compile-keywords ONLY in XEmacs. GNU Emacs 22 now has a check which would throw an error here. cc-engine.el (c-beginning-of-statement-1): Clarify doc-string and comments. Distinguish real labels ("case 1:" or "foo:") from non-labels ("public:"). cc-engine.el (c-after-change-check-<>-operators): Remove save-match-data, reversing change for V1.45. save-match-data is now in c-after-change. cc-engine.el (c-forward-objc-directive): Replace c-forward-token-2 with crude coding; c-f-t-2 doesn't move over a token at EOB. Objc Mode was hanging after typing, e.g., "@implementation". cc-langs.el (c-filter-ops): Made it available at runtime too to work when `c-make-init-lang-vars-fun' needs to evaluate from source. cc-langs.el (c-make-init-lang-vars-fun): Improved the error message when there's an evaluation error to show whether it's loaded from source or not. (c-mode-menu): Add menu items for Electric Mode and Subword Mode. cc-mode.el (c-after-change): Protect the match data with save-match-data. It was getting corrupted by c-after-change-check-<>-operators. cc-mode.el: File Local variables: Solve the problem where both `mode' and c-file-offsets are specified: `mode' will overwrite c-f-o's settings: (c-remove-any-local-eval-or-mode-variables): new function. (c-postprocess-file-styles): call the above new function, within c-tentative-buffer-change, to splat `mode' and `eval' before the second hack-local-variables.
author Alan Mackenzie <acm@muc.de>
date Fri, 24 Feb 2006 15:33:02 +0000
parents dc49655f57ae
children d5980f6ee343 8a1ee48a8386
line wrap: on
line diff
--- a/lisp/progmodes/cc-cmds.el	Fri Feb 24 12:20:45 2006 +0000
+++ b/lisp/progmodes/cc-cmds.el	Fri Feb 24 15:33:02 2006 +0000
@@ -1,7 +1,7 @@
 ;;; cc-cmds.el --- user level commands for CC Mode
 
-;; Copyright (C) 1985,1987,1992-2003, 2004, 2005, 2006
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1992-2003, 2004, 2005, 2006 Free Software
+;; Foundation, Inc.
 
 ;; Authors:    1998- Martin Stjernholm
 ;;             1992-1999 Barry A. Warsaw
@@ -262,10 +262,17 @@
 			  (boundp 'c-subword-mode)
 			  (symbol-value 'c-subword-mode))
 			 "w"
-		       ""))))
-    (setq c-submode-indicators
+		       "")))
+	(bare-mode-name (if (string-match "\\(^[^/]*\\)/" mode-name)
+			    (substring mode-name (match-beginning 1) (match-end 1))
+			  mode-name)))
+;;     (setq c-submode-indicators
+;; 	  (if (> (length fmt) 1)
+;; 	      fmt))
+    (setq mode-name
 	  (if (> (length fmt) 1)
-	      fmt))
+	      (concat bare-mode-name fmt) 
+	bare-mode-name))
     (force-mode-line-update)))
 
 (defun c-toggle-syntactic-indentation (&optional arg)
@@ -365,9 +372,9 @@
 	    arg
 	    (c-in-literal)))
       (funcall c-backspace-function (prefix-numeric-value arg))
-    (c-hungry-backspace)))
-
-(defun c-hungry-backspace ()
+    (c-hungry-delete-backwards)))
+
+(defun c-hungry-delete-backwards ()
   "Delete the preceding character or all preceding whitespace
 back to the previous non-whitespace character.
 See also \\[c-hungry-delete-forward]."
@@ -378,6 +385,8 @@
 	(delete-region (point) here)
       (funcall c-backspace-function 1))))
 
+(defalias 'c-hungry-backspace 'c-hungry-delete-backwards)
+
 (defun c-electric-delete-forward (arg)
   "Delete the following character or whitespace.
 If `c-hungry-delete-key' is non-nil (indicated by \"/h\" on the mode
@@ -396,7 +405,7 @@
 (defun c-hungry-delete-forward ()
   "Delete the following character or all following whitespace
 up to the next non-whitespace character.
-See also \\[c-hungry-backspace]."
+See also \\[c-hungry-delete-backwards]."
   (interactive)
   (let ((here (point)))
     (c-skip-ws-forward)
@@ -436,7 +445,7 @@
   (if (and (fboundp 'delete-forward-p)
 	   (delete-forward-p))
       (c-hungry-delete-forward)
-    (c-hungry-backspace)))
+    (c-hungry-delete-backwards)))
 
 (defun c-electric-pound (arg)
   "Insert a \"#\".
@@ -648,7 +657,7 @@
 numeric ARG hasn't been supplied, the command performs several electric
 actions:
 
-\(a) If the auto-newline feature is turned on (indicated by \"/ln\" on
+\(a) If the auto-newline feature is turned on (indicated by \"/la\" on
 the mode line) newlines are inserted before and after the brace as
 directed by the settings in `c-hanging-braces-alist'.
 
@@ -752,7 +761,7 @@
 				"{"
 				"\\=")
 			nil t))
-		  (delete-region mbeg mend)
+		  (delete-region (match-beginning 0) (match-end 0))
 		  (insert-and-inherit "} else {"))
 		 ((and (memq 'brace-elseif-brace c-cleanup-list)
 		       (progn
@@ -886,7 +895,7 @@
 numeric ARG hasn't been supplied, the command performs several electric
 actions:
 
-\(a) When the auto-newline feature is turned on (indicated by \"/ln\" on
+\(a) When the auto-newline feature is turned on (indicated by \"/la\" on
 the mode line) a newline might be inserted.  See the variable
 `c-hanging-semi&comma-criteria' for how newline insertion is determined.
 
@@ -958,7 +967,7 @@
 numeric ARG hasn't been supplied, the command performs several electric
 actions:
 
-\(a) If the auto-newline feature is turned on (indicated by \"/ln\" on
+\(a) If the auto-newline feature is turned on (indicated by \"/la\" on
 the mode line) newlines are inserted before and after the colon based on
 the settings in `c-hanging-colons-alist'.