1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-27 07:37:33 +00:00

* c-mode.el (c-switch-label-regexp): New constant.

(electric-c-terminator, c-indent-line, indent-c-exp): Use it to
	correctly recognize default labels in switch statements.
This commit is contained in:
Jim Blandy 1993-01-16 06:04:16 +00:00
parent cf7cb199e5
commit 3a65941e41

View File

@ -127,6 +127,11 @@ If you do not want a leading newline before braces then use:
(defconst c-tab-always-indent t
"*Non-nil means TAB in C mode should always reindent the current line,
regardless of where in the line point is when the TAB command is used.")
;;; Regular expression used internally to recognize labels in switch
;;; statements.
(defconst c-switch-label-regexp "case[ \t'/(]\\|default\\(\\S_\\|'\\)")
(defun c-mode ()
"Major mode for editing C code.
@ -423,7 +428,7 @@ preserving the comment indentation or line-starting decorations."
;; So quickly rule out most other uses of colon
;; and do no indentation for them.
(and (eq last-command-char ?:)
(not (looking-at "case[ \t'/(]\\|default\\>"))
(not (looking-at c-switch-label-regexp))
(save-excursion
(skip-chars-forward "a-zA-Z0-9_$")
(skip-chars-forward " \t")
@ -515,7 +520,7 @@ Return the amount the indentation changed by."
(t
(skip-chars-forward " \t")
(if (listp indent) (setq indent (car indent)))
(cond ((or (looking-at "case[ \t'/(]\\|default\\>")
(cond ((or (looking-at c-switch-label-regexp)
(and (looking-at "[A-Za-z]")
(save-excursion
(forward-sexp 1)
@ -1079,7 +1084,7 @@ ENDPOS is encountered."
(setcar indent-stack
(setq this-indent val))))
;; Adjust line indentation according to its contents
(if (or (looking-at "case[ \t'/(]\\|default\\>")
(if (or (looking-at c-switch-label-regexp)
(and (looking-at "[A-Za-z]")
(save-excursion
(forward-sexp 1)