Mercurial > emacs
changeset 52341:6a060e586596
(c-lineup-math): Don't align the operators "!=", "<=" and ">=" as assignment
operators.
(c-assignment-operators): New language constant that only contains the
assignment operators.
(c-assignment-op-regexp): New language variable used by c-lineup-math'.
author | Martin Stjernholm <mast@lysator.liu.se> |
---|---|
date | Tue, 26 Aug 2003 11:52:40 +0000 |
parents | 600f01b30149 |
children | a3cdc2f62039 |
files | lisp/progmodes/cc-align.el lisp/progmodes/cc-langs.el |
diffstat | 2 files changed, 37 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/progmodes/cc-align.el Tue Aug 26 11:51:55 2003 +0000 +++ b/lisp/progmodes/cc-align.el Tue Aug 26 11:52:40 2003 +0000 @@ -708,18 +708,20 @@ (save-excursion (beginning-of-line) (when (c-syntactic-re-search-forward - ;; This regexp avoids matches on ==. - "\\(\\=\\|[^=]\\)=\\([^=]\\|$\\)" - (c-point 'eol) t t) - (setq equalp (- (match-beginning 2) (c-point 'boi)))))) + c-assignment-op-regexp + (c-point 'eol) t t t) + (setq equalp (- (or (match-beginning 1) + (match-end 0)) + (c-point 'boi)))))) (save-excursion (goto-char startpos) (if (or (if (c-syntactic-re-search-forward - "\\(\\=\\|[^=]\\)=\\([^=]\\|$\\)" - (min endpos (c-point 'eol)) t t) + c-assignment-op-regexp + (min endpos (c-point 'eol)) t t t) (progn - (goto-char (match-beginning 2)) + (goto-char (or (match-beginning 1) + (match-end 0))) nil) t) (save-excursion
--- a/lisp/progmodes/cc-langs.el Tue Aug 26 11:51:55 2003 +0000 +++ b/lisp/progmodes/cc-langs.el Tue Aug 26 11:52:40 2003 +0000 @@ -544,6 +544,15 @@ '("defined")) pike '("defined" "efun" "constant")) +(c-lang-defconst c-assignment-operators + "List of all assignment operators." + t '("=" "*=" "/=" "%=" "+=" "-=" ">>=" "<<=" "&=" "^=" "|=") + java (append (c-lang-const c-assignment-operators) + '(">>>=")) + c++ (append (c-lang-const c-assignment-operators) + '("and_eq" "or_eq" "xor_eq")) + idl nil) + (c-lang-defconst c-operators "List describing all operators, along with their precedence and associativity. The order in the list corresponds to the precedence of @@ -686,11 +695,7 @@ (right-assoc-sequence "?" ":") ;; Assignment. - (right-assoc "=" "*=" "/=" "%=" "+=" "-=" ">>=" "<<=" "&=" "^=" "|=" - ,@(when (c-major-mode-is 'java-mode) - '(">>>=")) - ,@(when (c-major-mode-is 'c++-mode) - '("and_eq" "or_eq" "xor_eq"))) + (right-assoc ,@(c-lang-const c-assignment-operators)) ;; Exception. ,@(when (c-major-mode-is 'c++-mode) @@ -788,6 +793,23 @@ (c-lang-defvar c-nonsymbol-token-regexp (c-lang-const c-nonsymbol-token-regexp)) +(c-lang-defconst c-assignment-op-regexp + ;; Regexp matching all assignment operators and only them. The + ;; beginning of the first submatch is used to detect the end of the + ;; token, along with the end of the whole match. + t (if (c-lang-const c-assignment-operators) + (concat + ;; Need special case for "=" since it's a prefix of "==". + "=\\([^=]\\|$\\)" + "\\|" + (c-make-keywords-re nil + (set-difference (c-lang-const c-assignment-operators) + '("=") + :test 'string-equal))) + "\\<\\>")) +(c-lang-defvar c-assignment-op-regexp + (c-lang-const c-assignment-op-regexp)) + (c-lang-defconst c-<-op-cont-regexp ;; Regexp matching the second and subsequent characters of all ;; multicharacter tokens that begin with "<". @@ -1441,7 +1463,7 @@ (c-lang-defconst c-opt-<>-sexp-key ;; Adorned regexp matching keywords that can be followed by an angle - ;; bracket sexp. + ;; bracket sexp. Always set when `c-recognize-<>-arglists' is. t (if (c-lang-const c-recognize-<>-arglists) (c-make-keywords-re t (c-lang-const c-<>-sexp-kwds)))) (c-lang-defvar c-opt-<>-sexp-key (c-lang-const c-opt-<>-sexp-key))