diff options
| author | Jim Blandy <jimb@redhat.com> | 1993-01-16 06:04:16 +0000 |
|---|---|---|
| committer | Jim Blandy <jimb@redhat.com> | 1993-01-16 06:04:16 +0000 |
| commit | 3a65941e41fb91642792e02b6f284dcb0cca030b (patch) | |
| tree | f3223042db66b0f642e208014ca3428b03a44f91 /lisp | |
| parent | cf7cb199e517cc684378abe078474d1737d2663d (diff) | |
| download | emacs-3a65941e41fb91642792e02b6f284dcb0cca030b.tar.gz | |
* 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.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/progmodes/c-mode.el | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lisp/progmodes/c-mode.el b/lisp/progmodes/c-mode.el index 56db49bc5c5..7bdfbdf8031 100644 --- a/lisp/progmodes/c-mode.el +++ b/lisp/progmodes/c-mode.el @@ -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) |
