summaryrefslogtreecommitdiff
path: root/lisp/progmodes/cc-langs.el
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-10-101-3/+15
|\| |
| * | CC Mode: Move the handling of keyword auto into type handling for C++.Alan Mackenzie2020-10-081-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This should allow auto, const, static, ... to be in any order. * lisp/progmodes/cc-engine.el (c-forward-type): New return value 'no-id for when auto precludes the parsing of a type identifier. Adapt processing for this. (c-forward-decl-or-cast-1): Use the new facility from c-forward-type. * lisp/progmodes/cc-langs.el (c-type-modifier-prefix-kwds): Insert the value of c-no-type-kwds into the value. (c-no-type-kwds, c-no-type-key): New lang consts/vars, basically "auto". (c-typeless-decl-kwds, c-modifier-kwds): Remove "auto" from the C++ value.
* | | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-09-211-1/+12
|\| |
| * | C++ Mode: Modernize the fontification of "using"Alan Mackenzie2020-09-201-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since "using" is now used in three distinct ways in C++, write a special function to handle these rather than attempting to adapt the old regular expressions. * lisp/progmodes/cc-fonts.el (c-font-lock-declarators): Amend to allow the argument TYPES to be a face. This face is given to the declarator being processed. (c-font-lock-single-decl): Make an argument to c-font-lock-declarators nil or t, not merely nil or non-nil. (c-complex-decl-matchers): Include c-font-lock-c++-using in the C++ value of this variable. (c-font-lock-c++-using): New function. * lisp/progmodes/cc-langs.el (c-using-kwds, c-using-key): New lang consts/vars. (c-modifier-kwds): Remove "using" from the C++ value.
* | | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-09-101-0/+14
|\| |
| * | Merge from origin/emacs-27Glenn Morris2020-09-091-0/+14
| |\| | | | | | | | | | | | | | | | 366a97c980 (origin/emacs-27) Avoid crashes when trying to load bad GI... 7938713105 C++ Mode: handle comma separated brace initializers. 2b95300cf8 * lisp/display-fill-column-indicator.el: Fix bug#41145
| | * C++ Mode: handle comma separated brace initializers.Alan Mackenzie2020-09-041-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This includes both indentation and fontification. * lisp/progmodes/cc-engine.el (c-do-declarators): Handle brace initializers without = correctly. (c-looking-at-or-maybe-in-bracelist): Use c-do-declarators with a simple inline function to check that after-type-id-pos points to the start of a declarator. * lisp/progmodes/cc-langs.el (c-recognize-bare-brace-inits): New lang const/variable.
* | | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-07-071-1/+1
|\| |
| * | CC Mode: Fix wrong value of comment-start-skip, fixing half of bug #41952Alan Mackenzie2020-07-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also add functions to enable correct use of CC Mode's filling functionality from major modes which don't initialize CC Mode fully. These modes are currently js-mode and mhtml-mode. * lisp/progmodes/cc-langs.el (comment-start-skip): Replace "\\(" by "\\(?:" so that (match-end 1) isn't falsely taken to be the start of the comment. * lisp/progmodes/cc-engine.el (c-foreign-truncate-lit-pos-cache) (c-foreign-init-lit-pos-cache): New functions.
* | | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-06-271-3/+2
|\| |
| * | Make switch work in AWK Mode. Fixes bug #41923Alan Mackenzie2020-06-241-3/+2
| | | | | | | | | | | | | | | | | | lisp/progmodes/cc-langs.el (c-block-stmt-2-kwds): Insert "switch" into the AWK Mode entry. (c-case-kwds): Remove the special entry for AWK Mode.
* | | Do not native compile two functions to allow cc-mode hackAndrea Corallo2020-06-221-1/+2
|/ / | | | | | | | | | | | | | | * lisp/progmodes/cc-langs.el (c-populate-syntax-table): Declare with speed -1. * lisp/progmodes/cc-bytecomp.el (cc-bytecomp-compiling-or-loading): Declare with speed -1.
* | Introduce some Objective-C 2.0 keywords. This fixes bug #5953Alan Mackenzie2020-05-261-4/+7
| | | | | | | | | | | | | | | | * lisp/progmodes/cc-langs.el (c-other-decl-kwds): New keywords @property, @dynamic, @synthesize, @compatibility_alias. (c-protection-kwds): New keywords @package, @required, @optional. (c-block-stmt-1-kwds): New keyword @autoreleasepool. (c-constant-kwds): New keywords IBAction, IBOutlet.
* | Add three C++20 coroutine keywords, co_await, co_yield, and co_returnCarl Lei2020-05-241-1/+3
| | | | | | | | | | | | | | | | | | * lisp/progmodes/cc-langs.el (c-operators): Add co_await and co_yield to the C++ value of "Exception" keywords. (c-return-kwds): Create a C++ value containing co_return. (c-simple-stmt-kwds): Add co_return to the C++ value. Copyright-paperwork-exempt: yes.
* | CC Mode: Allow "static" etc. to be placed after a declaration's type nameAlan Mackenzie2020-05-181-2/+8
| | | | | | | | | | | | | | Fixes bug #41284. * lisp/progmodes/cc-langs.el (c-type-decl-prefix-key): include additionally c-modifier-kwds in the set of keywords at the base of this lang-const.
* | CC Mode: allow specified directives (e.g. pragma) to be indented as statementsAlan Mackenzie2020-03-081-1/+8
|/ | | | | | | | | | | | | | | | | | | * lisp/progmodes/cc-cmds.el (c-align-cpp-indent-to-body) (c-cpp-indent-to-body-flag, c-electric-pragma) (c-add-indent-to-body-to-abbrev-table, c-clear-stale-indent-to-body-abbrevs) (c-toggle-cpp-indent-to-body): New functions and variables. * lisp/progmodes/cc-langs.el (c-std-abbrev-keywords): New lang const/var. * lisp/progmodes/cc-mode.el (c-populate-abbrev-table): New function. (c-basic-common-init): call the c-populate-abbrev-table. (c-mode, c++-mode, objc-mode, java-mode, idl-mode, pike-mode, awk-mode): Remove the setting of MODE-abbrev-table. * lisp/progmodes/cc-vars.el (c-cpp-indent-to-body-directives): New defcustom. * doc/misc/cc-mode.texi (Custom Macros): Introduce and refer to .... (Indenting Directives): New page documenting the new mechanism.
* Reformulate c-end-of-macro, handling multiline block comments betterAlan Mackenzie2020-02-161-26/+10
| | | | | | | | | | * lisp/progmodes/cc-langs.el (c-last-open-c-comment-start-on-line-re): Comment out. (c-open-c-comment-on-logical-line-re): Remove. * lisp/progmodes/cc-engine.el (c-end-of-macro): Handle multiline block comments lacking escaped newlines using parse-partial-sexp rather than the former variables removed from cc-langs.el.
* c-end-of-macro: Handle block coment lines with unescaped NLs correctlyAlan Mackenzie2020-02-101-1/+18
| | | | | | | | | * lisp/progmodes/cc-langs.el (c-last-open-c-comment-start-on-line-re): Make obsolete, and supersede by ... (c-open-c-comment-on-logical-line-re): New language variable. * lisp/progmodes/cc-engine.el (c-end-of-macro): Inside macros, handle multiline block comments whose line ends are not escaped correctly.
* Correct "different than" to "different from" where appropriateAlan Mackenzie2020-02-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | (doc/emacs/screen.texi) (doc/lispintro/emacs-lisp-intro.texi) (doc/misc/calc.texi) (doc/misc/gnus.texi) (doc/misc/sc.texi) (lisp/align.el) (lisp/allout-widgets.el) (lisp/allout.el) (lisp/emacs-lisp/gv.el) (lisp/font-lock.el) (lisp/gnus/mm-util.el) (lisp/mail/feedmail.el) (lisp/mail/sendmail.el) (lisp/mail/supercite.el) (lisp/org/org-attach.el) (lisp/progmodes/cc-langs.el) (lisp/progmodes/idlw-shell.el) (lisp/ps-print.el) (lisp/simple.el) (src/cmds.c) (src/editfns.c) (src/frame.h) (src/regex-emacs.c) (src/xfaces.c): Replace "different than" by "different from".
* Objective C Mode: Make c-forward-type work with "unsigned long", etc.Alan Mackenzie2020-01-261-3/+2
| | | | | | | | This allows the correct fontification of and correct functioning of C-c C-z (c-display-defun-name) in ns_get_pixel in Emacs's src/nsimage.m. * lisp/progmodes/cc-langs.el (c-primitive-type-prefix-kwds): For objc, use the same value as for c and c++ rather than the default nil.
* Update copyright year to 2020Paul Eggert2020-01-011-1/+1
| | | | Run "TZ=UTC0 admin/update-copyright $(git ls-files)".
* ; Spelling fixesPaul Eggert2019-12-101-1/+1
|
* CC-Mode: Remove unneeded backslashes from doc strings and regular expressionsAlan Mackenzie2019-10-121-8/+8
| | | | | | | | | | | | | | | Also make miscellaneous amendments. * lisp/progmodes/cc-align.el, lisp/progmodes/cc-cmds.el * lisp/progmodes/cc-defs.el, lisp/progmodes/cc-engine.el * lisp/progmodes/cc-langs.el, lisp/progmodes/cc-vars.el: Remove lots of unneeded backslashes. * lisp/progmodes/cc-langs.el (c-string-innards-re-alist): Remove redundant "\\|\r" from regular expression. * lisp/progmodes/cc-mode.el (c-make-mode-syntax-table): Correct the name of the hook normal-erase-is-backspace-MODE-hook from a non-existant hook name.
* C++ Mode: Correctly handle <:, <::, <::>, etc, according to the C++ standardAlan Mackenzie2019-10-111-0/+17
| | | | | | | | | * lisp/progmodes/cc-engine.el (c-before-change-check-<>-operators): Perform checking now on an insertion, should point be inside a critical token. (c-forward-<>-arglist-recur, c-guess-continued-construct): Check for <::, etc. * lisp/progmodes/cc-langs.el (c-<-pseudo-digraph-cont-regexp) (c-<-pseudo-digraph-cont-len): New lang variables/constants.
* C++ Mode: Fontify correctly declarators with identifier preceded by &Alan Mackenzie2019-10-031-1/+1
| | | | | | | | | | | | | | The problem was bar in the following being spuriously recognised as a function, and foo as a type, as though the & were a *: Foo foo (&bar);. * lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): New variable got-function-name-prefix, which is set when an operator like * (but not &) precedes the putative identifer in parentheses. Test this variable when deciding whether or not to "move the type backwards" to the previous identifier. * lisp/progmodes/cc-langs.el (c-type-decl-operator-prefix-key): New lang const and var.
* C++ Mode: Prevent End of statement being found after {} in "count << vec{} <<"Alan Mackenzie2019-08-061-0/+30
| | | | | | | | | | * lisp/progmodes/cc-engine.el (c-beginning-of-statement-1): Check for operators which cannot start a statement, which may follow a closing brace. Don't recognise an end of statement in such a case. * lisp/progmodes/cc-langs.el (c-operator-re, c-bin-tern-operators) (c-unary-operators, c-non-after-{}-operators, c-non-after-{}-ops-re): New lang consts and vars.
* CC Mode: Fix spurious recognition of operators beginning with, e.g. "or"Alan Mackenzie2019-08-021-1/+1
| | | | | | | This fixes bug #36801. * lisp/progmodes/cc-langs.el (c-pre-lambda-tokens-re): Use c-make-keywords-re rather than regexp-opt to make an optimised regexp out of a list of tokens.
* Java Mode: Fix handling of nested generics ending in >>>.Alan Mackenzie2019-07-271-8/+10
| | | | | | | | | | | | This fixes bug #24671. * lisp/progmodes/cc-langs.el (c-multichar->-op-not->>-regexp): remove, transforming into ... (c-multichar->-op-not->>->>>-regexp) New lang const/var. * lisp/progmodes/cc-engine.el (c-forward-<>-arglist-recur): use the new c-multichar->-op-not->>->>>-regexp in place of the old c-multichar->-op-not->>-regexp.
* CC Mode: Stop /**/ spuriously fontifying as a doc comment under gtkdocAlan Mackenzie2019-07-271-2/+2
| | | | | | | | | | | Also fix infinite loops by correcting two regexps. * lisp/progmodes/cc-langs.el (c-last-c-comment-end-on-line-re) (c-last-open-c-comment-start-on-line-re): Correct the regexp fragments "\\*+[^/]" to "\\*+\\([^*/]\\|$\\)". * lisp/progmodes/cc-fonts.el (gtkdoc-font-lock-keywords): Disallow /**/ for doc comment fontification.
* CC Mode. Create lang vars for certain skipping expressions at compile timeAlan Mackenzie2019-07-261-0/+44
| | | | | | | | | | | | | | | | | | | | | | | This saves repeated calculations at run time. * lisp/progmodes/cc-langs.el (c-stmt-boundary-skip-chars) (c-stmt-boundary-skip-list, c-stmt-boundary-skip-chars-with-comma) (c-stmt-boundary-skip-list-with-comma): New lang constants/variables. * lisp/progmodes/cc-engine.el (c-commas-bound-stmts): New variable (c-beginning-of-statement-1): Set c-commas-bound-stmts rather than c-stmt-delim-chars. (c-crosses-statement-barrier-p): Remove the now unneeded calculations of c-stmt-delim-chars. Set skip chars to one of the new lang variables, and later to a substring of it. (c-at-statement-start-p): Set c-syntactic-skip-backward from the new variables. (c-at-expression-start-p): Bind c-commas-bound-stmts. Use c-stmt-delim-chars-with-comma rather than c-stmt-delim-chars in a backward scan. (c-guess-basic-syntax): Bind c-commas-bound-stmts rather than c-stmt-delim-chars to itself. Bind c-commas-bound-stmts to t at another place rather than setting c-stmt-delim-chars to c-stmt-delim-chars-with-comma.
* Fix an infinite loop in c-end-of-macro. Should fix bug #36484Alan Mackenzie2019-07-041-2/+2
| | | | | | | | | | | | | | | | | Also fix two faulty regexps, save-match-data, and check c-major-mode-is 'c++-mode where needed. * lis/progmodes/cc-langs.el (c-last-c-comment-end-on-line-re) (c-last-open-c-comment-start-on-line-re): Handle repeated *s in regexp correctly. * lisp/progmodes/cc-engine.el (c-beginning-of-macro, c-end-of-macro): Protect the match-data with save-match-data around regexp operations. (c-end-of-macro): In the loop handling multiline block comments, check a comment actually is multiline. * lisp/progmodes/cc-mode.el (c-depropertize-CPP): Only call c-depropertize-raw-strings-in-region in C++ Mode.
* CC Mode: Improve handling of unbalanced stringsAlan Mackenzie2019-07-021-1/+5
| | | | | | | | | | * lisp/progmodes/cc-fonts.el (c-before-font-lock-functions): Add function c-after-change-escape-NL-in-string into value for most languages. * lisp/progmodes/cc-mode.el (c-after-change-escape-NL-in-string): New function. (c-before-change-check-unbalanced-strings): Handle the making and breaking of escaped newlines, by removal or addition of text.
* Remove another variable obsolete since Emacs 22Stefan Kangas2019-06-151-7/+0
| | | | | | * lisp/progmodes/cc-langs.el: Remove obsolete variable c-opt-op-identitier-prefix. * etc/NEWS: Announce it. (Bug#36173)
* Optimize one of CC Mode's syntax caches for long comments and strings.Alan Mackenzie2019-05-301-0/+9
| | | | | | | | | | | | | | | * lisp/progmoes/cc-langs.el (c-block-comment-awkward-chars): New lang constant and variable. * lisp/progmodes/cc-engine.el (c-state-semi-nonlit-pos-cache): Enhance the doc comment. (c-state-semi-get-near-cache-entry, c-state-semi-pp-to-literal): Reuse entry if the sought position is in a literal, and lies between the literal start and the entry's position. (c-cache-to-parse-ps-state, c-parse-ps-state-below): Amend such that instead of cacheing a state for a position after a backslash or first character of a 2-character comment delimiter, this is done for the previous character position.
* Add standard unmatchable regexpMattias EngdegÄrd2019-05-151-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add `regexp-unmatchable' as a standard unmatchable regexp, defined as "\\`a\\`". Use it where such a regexp is needed, replacing slower expressions in several places. From a suggestion by Philippe Schnoebelen. * lisp/subr.el (regexp-unmatchable): New defconst. * etc/NEWS (Lisp Changes): Mention `regexp-unmatchable'. * doc/lispref/searching.texi (Regexp Functions): Document it. * lisp/emacs-lisp/regexp-opt.el (regexp-opt) * lisp/progmodes/cc-defs.el (cc-conditional-require-after-load) (c-make-keywords-re) * lisp/progmodes/cc-engine.el (c-beginning-of-statement-1) (c-forward-<>-arglist-recur, c-forward-decl-or-cast-1) (c-looking-at-decl-block) * lisp/progmodes/cc-fonts.el (c-doc-line-join-re) (c-doc-bright-comment-start-re) * lisp/progmodes/cc-langs.el (c-populate-syntax-table) (c-assignment-op-regexp) (c-block-comment-ender-regexp, c-font-lock-comment-end-skip) (c-block-comment-start-regexp, c-line-comment-start-regexp) (c-doc-comment-start-regexp, c-decl-start-colon-kwd-re) (c-type-decl-prefix-key, c-type-decl-operator-prefix-key) (c-pre-id-bracelist-key, c-enum-clause-introduction-re) (c-nonlabel-token-2-key) * lisp/progmodes/cc-mode.el (c-doc-fl-decl-start, c-doc-fl-decl-end) * lisp/progmodes/cc-vars.el (c-noise-macro-with-parens-name-re) (c-noise-macro-name-re, c-make-noise-macro-regexps) * lisp/progmodes/octave.el (octave-help-mode) * lisp/vc/vc-bzr.el (vc-bzr-log-view-mode, vc-bzr-revision-completion-table) * lisp/vc/vc-git.el (vc-git-log-view-mode) * lisp/vc/vc-hg.el (vc-hg-log-view-mode) * lisp/vc/vc-mtn.el (vc-mtn-log-view-mode): Use `regexp-unmatchable'. * lisp/textmodes/ispell.el (ispell-non-empty-string): Use `regexp-unmatchable', fixing a broken never-match regexp.
* CC Mode: fix indentation in switch statement after "case a(1):".Alan Mackenzie2019-05-151-0/+25
| | | | | | | | * lisp/progmodes/cc-engine.el (c-beginning-of-statement-1): Enhance the analysis of case labels to handle parenthesised expressions (e.g. macros). * lisp/progmodes/cc-langs.el (c-nonlabel-nonparen-token-key): New lang const and lang var.
* Fix fontification of first item in CC Mode macro without parenthesesAlan Mackenzie2019-05-021-10/+34
| | | | | | | | | | | | | | | | * lisp/progmodes/cc-engine.el (c-find-decl-prefix-search): Handle the new matching possibility (of a #define construct) in the new c-decl-prefix-or-start-re. (c-find-decl-spots): Allow the initial search for an in-macro starting point settle on the # of #define, to facilitate the regexp matching in c-find-decl-prefix-search. * lisp/progmodes/cc-langs.el (c-anchored-hash-define-no-parens): New lang const. (c-literal-start-regexp): Correct what was always supposed to be a "generic string" regexp element. (c-decl-prefix-or-start-re): Enhance also to match "#define <identifier>". (c-dposr-cpp-macro-depth): New lang variable and lang constant.
* CC Mode: Fix multiline block comments in macros.Alan Mackenzie2019-05-021-0/+20
| | | | | | | | | | | | | | In particulr, handle multiline block comments whose newlines are not escaped. There is an example of this in #define EXTRA_CONTEXT_FIELDS in editfns.c. * lisp/progmodes/cc-engine.el (c-beginning-of-macro, c-end-of-macro): Enclose the loops scanning escaped newlines with outer loops which check heuristically for, respectively, a block comment ender and a block comment starter on the lines we end up on. (A rigorous syntactic check would be too slow, here.) * lisp/progmodes/cc-langs.el (c-last-c-comment-end-on-line-re) (c-last-open-c-comment-start-on-line-re): New language constants/variables.
* * lisp/progmodes/cc-langs.el (c-class-id-suffix-ws-ids-kwds): Correct a typoAlan Mackenzie2019-04-131-1/+1
|
* Implement "final" before C++ class inheritance lists.Alan Mackenzie2019-04-131-0/+13
| | | | | | | | | * lisp/progmodes/cc-langs.el (c-class-id-suffix-ws-ids-kwds) (c-class-id-suffix-ws-ids-key): New lang const/var. * lisp/progmodes/cc-engine.el (c-guess-basic-syntax CASE 5D.4): Check for and skip over any matches for c-class-id-suffix-ws-ids-key (i.e. "final") before ":".
* Allow a CC Mode derived mode to have strings delimited by single quotes.Alan Mackenzie2019-03-301-2/+10
| | | | | | | | | | | | | | | | | Also fix the bug where the delimiters of '\033', etc. got the error face. * lisp/progmodes/cc-langs.el (c-single-quotes-quote-strings): Enhance the docr string. (c-string-delims): Change doc string to doc comment. * listp/progmodes/cc-mode.el (c-before-change-check-unbalanced-strings): In searches and comparisons, take account of the string delimiters possibly being '. Fix argument in call of c-before-change-check-unbalanced-strings. (c-parse-quotes-before-change, c-parse-quotes-after-change): Bind case-fold-search to nil. Analyze escape constructs inside character constants more accurately, in particular accepting as valid more than one character after /[0-7], /x, /u, and /U. Amend calculations to account for this extra length.
* Improve C++ raw string fontification.Alan Mackenzie2019-03-271-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Integrate the handling of raw string and ordinary string fontification. * lisp/progmodes/cc-defs.el (c-font-lock-flush) (c-search-forward-char-property-without-value-on-char): new macros. (c-point): In the 'eoll arm, check for eobp. (c-search-forward-char-property-with-value-on-char): Handle the &optional limit argument being nil. (c-clear-char-property-with-value-on-char-function) (c-clear-char-property-with-value-on-char): Return the position of the first cleared property. * lisp/progmodes/cc-engine.el (c-find-decl-prefix-search): Don't spuriously recognize the change of face at a ) as the start of a string (a "pseudo match"). (c-old-beg-rs c-old-end-rs): New variables. (c-raw-string-pos): Analyze raw string delimiters more carefully. (c-raw-string-in-end-delim): New function. (c-depropertize-raw-string): Largely rewritten. (c-before-change-check-raw-strings): New functionality: only remove the syntax-table text properties from raw strings whose delimiters are about to change. (c-propertize-raw-string-id): New function. (c-after-change-re-mark-raw-strings): Remove, incorporating functionality into other functions. (c-propertize-raw-string-opener): Largely rewritten. (c-after-change-re-mark-raw-strings): Removed. (c-after-change-unmark-raw-strings, c-after-change-unmark-raw-strings): New functions. * lisp/progmodes/cc-fonts.el (c-font-lock-raw-strings): Largely rewritten. * lisp/progmodes/cc-langs.el (c-before-font-lock-functions): Replace c-after-change-re-mark-unbalanced-strings by c-after-change-mark-abnormal-strings in the t, c+objc, c++ and java sections. Add c-after-change-unmark-raw-strings and remove c-after-change-re-mark-raw-strings from the c++ section. * lisp/progmodes/cc-mode.el (c-old-BEG c-old-END): Remove. (c-old-END-literality): New variable. (c-depropertize-CPP): Remove syntax-table properties from raw strings within macros. (c-before-change-check-unbalanced-strings): Call c-truncate-semi-nonlit-pos-cache to preserve the integrity of the cache. (c-before-change-check-unbalanced-strings): Call c-truncate-semi-nonlit-pos-cache, largely rewritten. (c-after-change-re-mark-unbalanced-strings): Renamed to c-after-change-mark-abnormal-strings. Call c-maybe-re-mark-raw-string.
* Correct the indentation of CC Mode brace listsAlan Mackenzie2019-03-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | while preserving the indentation of nested C++ uniform initialization. * lisp/progmodes/cc-align.el (c-lineup-2nd-brace-entry-in-arglist) (c-lineup-class-decl-init-+, c-lineup-class-decl-init-after-brace): New indentation functions. * lisp/progmodes/cc-engine.el (c-forward-class-decl): New function. (c-do-declarators): New function, partially extracted from c-font-lock-declarators, which now calls the new function. (c-inside-bracelist-p): Amend the introductory comment. (c-add-stmt-syntax): Add code to prevent the spurious recognition of a 'defun-block-intro when a brace pair is used as an initializer. (c-evaluate-offset): No longer ignore vectors of length >= 2. (c-calc-offset): Refactor clumsily nested `if'/`or' into a cond form. * lisp/progmodes/cc-fonts.el (c-font-lock-declarators): Replace the bulk of this function by a call to the new c-forward-class-decl. * lisp/progmodes/cc-langs.el (c-type-decl-prefix-key): Recognize "~" as a type decl operator. * lisp/progmodes/cc-mode.el (c-fl-decl-start): While searching backward for a "}" at an EOD, deal with actually finding the end of a brace list. * doc/misc/cc-mode.texi (List Line-Up): document c-lineup-2nd-brace-entry-in-arglist, c-lineup-class-decl-init-+, and c-lineup-class-decl-init-after-brace. * lisp/progmodes/cc-styles.el (c-style-alist): In styles "gnu", "bsd", "stroustrup", "python", and "java", change the offset for brace-list-intro from the default value or c-lineup-arglist-intro-after-paren to a list beginning with the symbol first, followed by two of the new alignment functions, followed by +. * lisp/progmodes/cc-vars.el (c-offset-alist): Change the default value of brace-list-entry from c-lineup-under-anchor back to 0.
* Extend electric-pair-mode actions to < and >, and also to ( and ) in literalsAlan Mackenzie2019-01-221-0/+13
| | | | | | | | | | | | | * lisp/progmodes/cc-cmds.el (c-electric-lt-gt): Actuate electric-pair-mode if a < or > is typed in a context where this is meaningful (#include, or template). (c-electric-paren): Allow electric-pair-mode activity in a comment or string. * lisp/progmodes/cc-defs.el (c-make-keywords-re): Fix a bug where lists of source symbols could get overwritten when parameter adorn is set to 'appendable. * list/progmodes/cc-langs.el (c-cpp-include-key): New lang const and var.
* Merge from origin/emacs-26Paul Eggert2018-12-311-1/+1
|\ | | | | | | | | | | 2fcf2df Fix copyright years by hand 26bed8b Update copyright year to 2019 2814292 Fix value of default frame height. (Bug#33921)
| * Update copyright year to 2019Paul Eggert2019-01-011-1/+1
| | | | | | | | Run 'TZ=UTC0 admin/update-copyright $(git ls-files)'.
* | CC Mode - use font-lock-comment-delimiter-face on block comment end delimitersAlan Mackenzie2018-12-301-0/+11
| | | | | | | | | | | | | | | | In particular when the default comment type is currently line comments. Do this by setting font-lock-comment-end-skip. * lisp/progmodes/cc-cmds.el (c-font-lock-comment-end-skip): New lang const. (font-lock-comment-end-skip): New c-lang-setvar.
* | Replace insignificant backquotesMichael Heerdegen2018-11-251-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace most insignificant occurrences of '`' with a straight quote, sharp quote or nothing. This includes backquotes in 'pcase' patterns. * admin/admin.el: * lisp/apropos.el: * lisp/arc-mode.el: * lisp/auth-source.el: * lisp/avoid.el: * lisp/bindings.el: * lisp/bs.el: * lisp/calculator.el: * lisp/calendar/todo-mode.el: * lisp/cedet/semantic.el: * lisp/cedet/semantic/analyze/debug.el: * lisp/cedet/semantic/bovine.el: * lisp/cedet/semantic/dep.el: * lisp/cedet/semantic/grammar.el: * lisp/cedet/semantic/wisent/comp.el: * lisp/cedet/semantic/wisent/grammar.el: * lisp/cedet/srecode/mode.el: * lisp/cus-edit.el: * lisp/doc-view.el: * lisp/elec-pair.el: * lisp/electric.el: * lisp/emacs-lisp/autoload.el: * lisp/emacs-lisp/benchmark.el: * lisp/emacs-lisp/byte-opt.el: * lisp/emacs-lisp/bytecomp.el: * lisp/emacs-lisp/cconv.el: * lisp/emacs-lisp/cl-extra.el: * lisp/emacs-lisp/cl-generic.el: * lisp/emacs-lisp/cl-macs.el: * lisp/emacs-lisp/copyright.el: * lisp/emacs-lisp/debug.el: * lisp/emacs-lisp/eieio-compat.el: * lisp/emacs-lisp/ert.el: * lisp/emacs-lisp/generator.el: * lisp/emacs-lisp/inline.el: * lisp/emacs-lisp/macroexp.el: * lisp/emacs-lisp/map.el: * lisp/emacs-lisp/package-x.el: * lisp/emacs-lisp/package.el: * lisp/emacs-lisp/radix-tree.el: * lisp/emacs-lisp/smie.el: * lisp/epa.el: * lisp/erc/erc-dcc.el: * lisp/erc/erc-track.el: * lisp/erc/erc.el: * lisp/eshell/em-ls.el: * lisp/eshell/esh-cmd.el: * lisp/files.el: * lisp/filesets.el: * lisp/font-lock.el: * lisp/frameset.el: * lisp/gnus/gnus-agent.el: * lisp/gnus/gnus-art.el: * lisp/gnus/gnus-cite.el: * lisp/gnus/gnus-group.el: * lisp/gnus/gnus-msg.el: * lisp/gnus/gnus-salt.el: * lisp/gnus/gnus-srvr.el: * lisp/gnus/gnus-sum.el: * lisp/gnus/gnus-topic.el: * lisp/gnus/gnus-util.el: * lisp/gnus/gnus.el: * lisp/gnus/message.el: * lisp/gnus/mm-util.el: * lisp/gnus/mml.el: * lisp/gnus/nnheader.el: * lisp/gnus/nnimap.el: * lisp/gnus/nnmairix.el: * lisp/gnus/spam.el: * lisp/hexl.el: * lisp/hi-lock.el: * lisp/ibuf-ext.el: * lisp/ibuffer.el: * lisp/ido.el: * lisp/info.el: * lisp/international/mule-cmds.el: * lisp/international/mule-util.el: * lisp/json.el: * lisp/jsonrpc.el: * lisp/language/cyrillic.el: * lisp/language/european.el: * lisp/language/georgian.el: * lisp/language/tibetan.el: * lisp/language/utf-8-lang.el: * lisp/language/vietnamese.el: * lisp/ldefs-boot.el: * lisp/mail/mail-extr.el: * lisp/man.el: * lisp/menu-bar.el: * lisp/mh-e/mh-acros.el: * lisp/mh-e/mh-folder.el: * lisp/mh-e/mh-mime.el: * lisp/mh-e/mh-show.el: * lisp/mh-e/mh-speed.el: * lisp/minibuffer.el: * lisp/mpc.el: * lisp/net/ange-ftp.el: * lisp/net/hmac-def.el: * lisp/net/newst-backend.el: * lisp/net/quickurl.el: * lisp/net/tramp-archive.el: * lisp/net/tramp-compat.el: * lisp/notifications.el: * lisp/obsolete/pgg-parse.el: * lisp/obsolete/vc-arch.el: * lisp/obsolete/xesam.el: * lisp/org/ob-C.el: * lisp/org/ob-core.el: * lisp/org/ob-exp.el: * lisp/org/ob-groovy.el: * lisp/org/ob-haskell.el: * lisp/org/ob-io.el: * lisp/org/ob-lisp.el: * lisp/org/ob-lob.el: * lisp/org/ob-lua.el: * lisp/org/ob-octave.el: * lisp/org/ob-perl.el: * lisp/org/ob-python.el: * lisp/org/ob-ref.el: * lisp/org/ob-ruby.el: * lisp/org/ob-sql.el: * lisp/org/org-agenda.el: * lisp/org/org-capture.el: * lisp/org/org-clock.el: * lisp/org/org-colview.el: * lisp/org/org-duration.el: * lisp/org/org-element.el: * lisp/org/org-entities.el: * lisp/org/org-gnus.el: * lisp/org/org-indent.el: * lisp/org/org-info.el: * lisp/org/org-inlinetask.el: * lisp/org/org-lint.el: * lisp/org/org-list.el: * lisp/org/org-mouse.el: * lisp/org/org-plot.el: * lisp/org/org-src.el: * lisp/org/org-table.el: * lisp/org/org.el: * lisp/org/ox-ascii.el: * lisp/org/ox-html.el: * lisp/org/ox-latex.el: * lisp/org/ox-man.el: * lisp/org/ox-md.el: * lisp/org/ox-org.el: * lisp/org/ox-publish.el: * lisp/org/ox-texinfo.el: * lisp/org/ox.el: * lisp/play/bubbles.el: * lisp/play/gamegrid.el: * lisp/progmodes/autoconf.el: * lisp/progmodes/cc-defs.el: * lisp/progmodes/cc-engine.el: * lisp/progmodes/cc-fonts.el: * lisp/progmodes/cc-langs.el: * lisp/progmodes/cperl-mode.el: * lisp/progmodes/ebrowse.el: * lisp/progmodes/elisp-mode.el: * lisp/progmodes/flymake-cc.el: * lisp/progmodes/flymake.el: * lisp/progmodes/fortran.el: * lisp/progmodes/grep.el: * lisp/progmodes/gud.el: * lisp/progmodes/idlwave.el: * lisp/progmodes/js.el: * lisp/progmodes/m4-mode.el: * lisp/progmodes/make-mode.el: * lisp/progmodes/mixal-mode.el: * lisp/progmodes/modula2.el: * lisp/progmodes/octave.el: * lisp/progmodes/opascal.el: * lisp/progmodes/prolog.el: * lisp/progmodes/ps-mode.el: * lisp/progmodes/python.el: * lisp/progmodes/ruby-mode.el: * lisp/progmodes/sh-script.el: * lisp/progmodes/sql.el: * lisp/progmodes/verilog-mode.el: * lisp/ps-mule.el: * lisp/rtree.el: * lisp/ruler-mode.el: * lisp/ses.el: * lisp/simple.el: * lisp/startup.el: * lisp/subr.el: * lisp/term/ns-win.el: * lisp/textmodes/bibtex.el: * lisp/textmodes/conf-mode.el: * lisp/textmodes/css-mode.el: * lisp/textmodes/refill.el: * lisp/textmodes/sgml-mode.el: * lisp/textmodes/tex-mode.el: * lisp/tutorial.el: * lisp/url/url-dav.el: * lisp/url/url-gw.el: * lisp/url/url-http.el: * lisp/url/url-methods.el: * lisp/url/url-privacy.el: * lisp/vc/cvs-status.el: * lisp/vc/diff-mode.el: * lisp/vc/ediff-init.el: * lisp/vc/ediff-ptch.el: * lisp/vc/log-edit.el: * lisp/vc/log-view.el: * lisp/vc/pcvs-info.el: * lisp/vc/pcvs.el: * lisp/vc/smerge-mode.el: * lisp/vc/vc-git.el: * lisp/vc/vc-hg.el: * lisp/vc/vc-mtn.el: * lisp/vc/vc-rcs.el: * lisp/whitespace.el: * lisp/window.el: * test/lisp/electric-tests.el: * test/lisp/emacs-lisp/cl-lib-tests.el: * test/lisp/emacs-lisp/ert-tests.el: * test/lisp/epg-tests.el: * test/lisp/jsonrpc-tests.el: * test/src/data-tests.el: * test/src/json-tests.el: Replace most insignificant backquotes.
* | Add ~44 edebug specs to CC Mode.Alan Mackenzie2018-10-151-0/+1
| | | | | | | | | | | | | | | | | | * lisp/progmodes/cc-cmds.el, lisp/progmodes/cc-defs.el lisp/progmodes/cc-engine.el, lisp/progmodes/cc-fonts.el lisp/progmodes/cc-langs.el: Add lots of edebug specs. * lisp/progmodes/cc-engine.el (c-state-maybe-marker): Tidy up so as to evaluate an argument only once at runtime.
* | Implement the C++11 "using" type definition.Alan Mackenzie2018-06-091-21/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cease using the long obsolete c++-template-syntax-table. * lisp/progmodes/cc-align.el (c-lineup-template-args): Cease using c++-template-syntax-table. * lisp/progmodes/cc-engine.el (c-beginning-of-inheritance-list) (c-search-decl-header-end, c-beginning-of-decl-1, c-end-of-decl-1) (c-guess-continued-construct, c-guess-basic-syntax): Cease using c++-template-syntax-table. (c-guess-basic-syntax): Add CASE 5D.6 to handle C++11's "using" type definition. * lisp/progmodes/cc-langs.el (c++-make-template-syntax-table) (c++-template-syntax-table): Remove. (c-equals-type-clause-kwds, c-equals-type-clause-key): New language constants/variables.