As part of this, introduce a second anchor point to the
syntactic symbols brace-list-intro and enum-intro, the position
of the opening brace.
* lisp/progmodes/cc-align.el
(c-lineup-item-after-paren-at-boi): New function.
* /lisp/progmodes/cc-engine.el
(c-foreign-truncate-lit-pos-cache)
(c-foreign-init-lit-pos-cache): Use
c-truncate-lit-pos/state-cache in place of an older function.
(c-no-bracelist-cache): Update its definition to exclude
conses.
(c-strip-conses): New function.
(c-inside-bracelist-p): Use c-strip-conses.
(c-add-stmt-syntax): In the "go out a block" loop, go out of a
brace at BOI when there's non-whitespace text after it.
Refactor an `if' form containing a cond form into a cond form.
Add the new second second anchor point into syntactic contexts
with brace-list-intro and enum-intro. Anchor brace-list-close
and enum-close elements on the individual declarations in
struct, etc., variable declarations.
(c-guess-basic-syntax, CASE 20): Use the new constraint-cont
syntactic symbol.
(c-guess-basic-syntax, CASE 9B): Anchor brace-list-close and
enum-close elements on the individual declarations in struct,
etc., variable declarations.
(c-guess-basic-syntax, CASEs 9C, 9D): Add the new second anchor
point into brace-list-intro and enum-intro syntactic contexts.
* lisp/progmodes/cc-mode.el (c-locate-first-punctuation-prop):
New function.
(c-depropertize-CPP): Use c-locate-first-punctuation-prop.
* lisp/progmodes/cc-vars.el (c-offsets-alist): Amend the
entries for constraint-cont, brace-list-intro, and enum-intro,
using c-lineup-item-after-paren-at-boi.
* doc/misc/cc-mode.texi (List Line-Up): Add a description of
c-lineup-item-after-paren-at-boi.
These cache variables are c-lit-pos-cache-limit,
c-semi-near-cache-limit, c-full-near-cache-limit, and
c-state-cache-invalid-pos.
* lisp/progmodes/cc-awk.el
(c-awk-set-string-regexp-syntax-table-properties): Invalidate
the caches after changing the 'syntax-table property.
* lisp/progmodes/cc-defs.el (c-put-string-fence-trim-caches):
New macro.
(c-unmark-<-or->-as-paren): New name for c-unmark-<->-as-paren.
(Also renamed throughout CC Mode)
* lisp/progmodes/cc-engine.el (c-propertize-ml-string-opener):
Add missing cache invalidation.
* lisp/progmodes/cc-mode.el (c-neutralize-CPP-line): Remove
syntax-table properties from < and > as needed.
(c-put-syn-tab): Add missing cache invalidation.
This should have fixed bug#74357.
* lisp/progmodes/cc-engine.el (c-laomib-cache): Change the
size of this cache from 4 to 50.
(c-laomib-get-cache, c-laomib-put-cache): Use assq, memq, and
ntake or butlast, rather than looping through the cache with a
cdr loop. No longer attempt to preserve the "largest" cache
element.
(c-looking-at-or-maybe-in-bracelist): Extend the range covered
by a c-laomib-cache element, rather than adding a second
element to the cache.
(c-no-bracelist-cache): A new cache for the use of
c-inside-bracelist-p, based on the c-parse-state cache.
(c-inside-bracelist-p): Use the new cache to call
c-looking-at-or-maybe-in-bracelist less often.
* lisp/progmodes/cc-mode.el (c-basic-common-init): Initialize
c-no-bracelist-cache.
(c-before-change): Invalidate c-no-bracelist-cache.
* lisp/progmodes/cc-engine.el (c-forward-sws): Move a `setq'
form from out of a let binding. This form could have been
affected by the byte compiler bug bug#67116 before this was
fixed.
Replace separate syntax-table text property changes and cache
invalidation with macros which do both together. Correct a bug
in the invocation of XEmacs's map-extents.
* lisp/progmodes/cc-defs.el (c-put-syntax-table-trim-caches)
(c-clear-syntax-table-trim-caches)
(c-clear-syntax-table-properties-trim-caches)
(c-clear-syntax-table-with-value-trim-caches)
(c-clear-syntax-table-with-value-on-char-trim-caches)
(c-put-syntax-table-properties-on-char-trim-caches): New
macros.
(c-clear-char-properties, c-clear-char-property-with-value)
(c-clear-char-property-with-value-on-char): Correct the
invocation of XEmacs's map-extents by returning nil from the
mapping function to prevent premature exit from map-extents.
(c-clear-char-property-with-value-function)
(c-clear-char-property-with-value)
(c-clear-char-property-with-value-on-char-function)
(c-clear-char-property-with-value-on-char)
(c-put-char-properties-on-char): Enhance to return the position
of the first changed char property (or nil).
* lisp/progmodes/cc-awk.el
(c-awk-set-string-regexp-syntax-table-properties)
(c-awk-set-syntax-table-properties)
* lisp/progmodes/cc-engine.el
(c-depropertize-ml-string-delims)
(c-after-change-unmark-ml-strings, c-propertize-ml-string-id)
(c-propertize-ml-string-opener, c-depropertize-ml-string)
(c-depropertize-ml-strings-in-region)
* lisp/progmodes/cc-mode.el (c-depropertize-CPP)
(c-neutralize-CPP-line, c-put-syn-tab, c-clear-syn-tab)
(c-parse-quotes-before-change, c-parse-quotes-after-change)
(c-before-change-fix-comment-escapes)
(c-after-change-fix-comment-escapes): Use the new macros from
cc-defs.el.
* lisp/progmodes/cc-mode.el
(c-trim-cache-first-punctuation-prop): Remove.
(c-depropertize-CPP): Remove calls to the above function.
An unneeded 10,000 character search limit prevents the full
fontification of the first declaration of xdisp.c, since the
introductory commentary is longer than that.
* lisp/progmodes/cc-engine (c-find-decl-spots): Remove the
10,000 char limit.
This fixes bug#72695.
* lisp/progmodes/cc-align.el (c-lineup-topmost-intro-cont): Do
not indent further a line following a closing brace of a
requires clause.
* lisp/progmodes/cc-engine.el (c-forward-keyword-clause):
Separate the handling of "any-paren-kwds" into
"type-paren-kwds" and "nontype-paren-kwds", simplifying the
handling of the latter.
(c-forward-primary-expression): Recognize (...) followed by {
as a primary expression.
(c-looking-at-or-maybe-in-bracelist): No longer recognize an
enum list as a brace list. Remove the handling of enum lists.
(c-looking-at-c++-lambda-expression)
(c-backward-over-lambda-expression): New functions.
(c-c++-vsemi-p): Don't recognize the end of requires clauses as
virtual semicolons.
(c-guess-basic-syntax): CASE 5U - new cond arm to recognize
being after a requires clause. These lines now get syntax
topmost-intro-cont rather than topmost-intro, and their anchor
positions are now on the topmost-intro line rather than the
previous topmost-intro-cont.
Throughout the file: simplify handling of
c-fun-name-substitute-key, where there is no need to check for
a following _ character, and introduce c-requires-clause-key
for greater accuracy in parsing, even though both of these are
just "requires".
* lisp/progmodes/cc-fonts.el (c-get-fontification-context):
Tidy up the handling of c-fun-name-substitue-key, as in
cc-engine.el.
* lisp/progmodes/cc-langs.el (c-lambda-spec-kwds)
(c-lambda-spec-key): New lang vars.
(c-fun-name-substitute-key): Now an adorned expression.
(c-requires-clause-kwds, c-requires-clause-key): New lang vars.
This will allow enums to be indented as in the GNU coding
standards without affecting brace lists.
* lisp/progmodes/cc-align.el
(c-lineup-arglist-intro-after-paren)
(c-lineup-arglist-close-under-paren)
(c-lineup-whitesmith-in-block)
(c-lineup-after-whitesmith-blocks): Amend doc strings to
indicate they can be used for enum-* syntactic symbols too.
* lisp/progmodes/cc-engine.el (c-looking-at-decl-block)
(c-backward-typed-enum-colon, c-backward-over-enum-header):
Rename c-after-brace-list-key to c-after-enum-list-key and
c-brace-list-key to c-enum-list-key.
(c-at-enum-brace): New function.
(c-inside-bracelist-p): Don't check for enums any more.
(c-add-stmt-syntax): New cond arm for enums.
(c-guess-continued-construct CASE B.6) New code for enum-open.
(c-guess-basic-syntax CASE 5A.3, CASE 7B, CASE 9, CASE 9B)
(CASE 9C, CASE 9D): Use the new function c-at-enum-brace, and
use enum-* syntactic symbols rather than brace-list-* ones
where appropriate.
(c-used-syntactic-symbols): New dynamic variable.
(c-evaluate-offset): Add handling for a different syntactic
symbol as the cdr of a c-offsets-alist element.
* lisp/progmodes/cc-fonts.el (c-get-fontification-context):
Add a call to c-at-enum-brace since c-inside-bracelist-p no
longer handles enums.
(c-font-lock-enum-body, c-font-lock-enum-tail): Condense calls
to c-backward-over-enum-header to c-at-enum-brace.
(c-basic-matchers-after): Replace a c-brace-list-decl-kwds with
c-enum-list-kwds.
* lisp/progmodes/cc-langs.el (c-enum-list-kwds)
(c-enum-list-key): New names for c-brace-list-decl-kwds and
c-brace-list-key.
(c-after-enum-list-kwds, c-after-enum-list-key): New names for
c-after-brace-list-decl-kwds and c-after-brace-list-key.
(c-enum-list-key, c-after-enum-list-key): Add code to
use a value of an old name, should a derived mode still use
that.
(c-defun-type-name-decl-kwds, c-typedef-decl-kwds)
(c-typeless-decl-kwds, c-prefix-spec-kwds)
(c-brace-id-list-kwds, c-enum-clause-introduction-re): Use
c-enum-list-kwds rather than c-brace-list-decl-kwds.
* lisp/progmodes/cc-styles.el (c-read-offset): Add "a
syntactic symbol" into an error message text.
* lisp/progmodes/cc-vars.el (c-valid-offset): Allow for a
syntactic symbol as the parameter.
(c-offsets-alist): Add new syntactic symbols enum-open,
enum-close, enum-intro, and enum-entry.
* doc/misc/cc-mode.texi (Syntactic Symbols): Add a note that
anchor points are briefly documented in cc-vars.el. Correct
the suffix "-block-intro" to "-intro". Remove "an enum or"
from the descriptions of the brace-list-* syntactic symbols.
Add in new descriptions for the enum-* syntactic symbols.
(Brace List Symbols): Remove references to enums. Add a note
that enums are no longer brace-lists.
(Enum Symbols): A new subsection documenting the new enum-*
syntactic symbols.
(c-offsets-alist): Document the new possibility, syntactic
symbol, for the cdr of an alist entry.
(Brace/Paren Line-Up, List Line-Up): Note that the new enum
syntactic symbols can be handled by these lineup functions.
1: Fix the typing of a space on the { line in an enum
specification which is the first item in a buffer. This
defontified the enum's identifiers.
2: Fix the typing of a space on the line of the enum's last
identifier. This defontified that identifier for
jit-lock-context-time.
* lisp/progmodes/cc-engine.el (c-forward-declarator): Cease
rejecting the identifier if there are no further tokens before
LIMIT.
* lisp/progmodes/cc-mode.el (c-fl-decl-start): Accept a
backward search as succeeding if it hits point-min.
This fixes bug#72126.
* lisp/progmodes/cc-engine.el (c-forward-<>-arglist): Remove
tentative type identifier from c-record-type-identifiers should
it turn out not to be a type.
This fixes bug#70435.
* lisp/progmodes/cc-engine.el (c-unmark-<>-around-region): Run
its contents in after-change-functions for a deletion, so that
c-new-BEG and c-new-END get set. Add a new test (> end beg)
in a check for unterminated string handling.
* lisp/progmodes/cc-engine.el (c-after-conditional): Handle the
new keyword in place of a paren sexp after `if'.
* lisp/progmodes/cc-langs.el (c-negation-op-re)
(c-paren-clause-kwds, c-paren-clause-key)
(c-block-stmt-with-kwds, c-block-stmt-with-key): New
lang-consts/vars.
* if-11.cc, if-11.res: New test files.
This fixes bug#59953. Foo now gets fontified when unsigned
comes after int.
* lisp/progmodes/cc-engine.el (c-forward-type): Refactor nested
`if' forms into a cond form. Loop around matches for
c-opt-type-component-key, advancing over them.
This fixes the second (last) part of bug#66911. The new second
anchor points allow the indentation of braces in template
classes to be anchored on the keyword 'class' rather than the
`template' at the beginning of the statement.
* lisp/progmodes/cc-engine.el (c-add-class-syntax): Add &rest
args parameter for additional anchor points. Pass these to
c-add-syntax.
(c-guess-continued-construct): CASE B.1: Note return value from
c-looking-at-decl-block and pass this to c-add-syntax for a
class-open construct.
(c-guess-basic-syntax): CASE 4: Duplicate anchor position for
class-open.
(c-guess-basic-syntax): CASE 5A.2: Note return value of
c-looking-at-decl-block and pass it as extra argument to
c-add-syntax for a class-open construct.
(c-guess-basic-syntax): CASE 5G: Call c-looking-at-decl-block
to determine the second anchor point for a class-close, and
pass it to c-add-class-syntax.
* doc/misc/cc-mode.texi (Class Symbols): Document the anchor
points for class-open and class-close.
This fixes the first part of bug#66911.
* lisp/progmodes/cc-engine.el (c-looking-at-decl-block): Skip
back over template arglists and noise clauses in any order, no
longer assuming the noise clauses are before the template
arglist in the buffer. When scanning forward, take noise
clauses into account. Refactor a collection of nested `if'
forms as a cond form.
In the OP's test case, the type of a declaration was a macro
with parentheses, which confused c-in-knr-argdecl.
* lisp/progmodes/cc-engine.el (c-in-knr-argdecl): Amend this
function to return nil if a "parameter declaration" can't be
parsed as a declaration.
c-forward-sws and c-backward-sws were scanning over spaces and
linefeeds marked with the string-fence syntax-table text
property. Fix this by (i) removing the WS text properties
c-in-sws and c-is-sws from characters when setting the
string-fence on them; (ii) checking the syntax of "space"
characters when scanning over them.
* lisp/progmodes/cc-defs.el (c-skip-ws-chars-forward)
c-skip-ws-chars-backward, c-put-string-fence): New macros.
* lisp/progmodes/cc-awk.el
(c-awk-set-string-regexp-syntax-table-properties): Use
c-put-string-fence.
* lisp/progmodes/cc-engine.el (c-beginning-of-statement-1):
Correct the determination of macro-start.
(c-forward-sws, c-backward-sws): Replace skip-chars-forward by
c-skip-ws-chars-forward and skip-chars-backward by
c-skip-ws-chars-backward.
(c-unmark-<>-around-region, c-after-change-unmark-ml-strings)
(c-propertize-ml-string-opener): Use c-put-string-fence.
* lisp/progmodes/cc-mode.el (c-put-syn-tab): Use
c-put-string-fence when appropriate.
These exceptions ("Invalid search bound (wrong side of point)")
were observed in test suite file class-24.m when moving point
up and down a line at a time.
* lisp/progmodes/cc-engine.el (c-forward-declarator): In the
c-syntactic-re-search-forward ~30 lines from the end of the
function amend the regexp for objc-mode such that "@end"
terminates the search, but "<" doesn't.
* lisp/progmodes/cc-fonts.el
(c-make-font-lock-search-function): supply a non-nil
CHECK-POINT argument to c-make-font-lock-search-form.
There was unstable syntactic analysis of lines which were brace
lists. This fixes bug#64133.
* lisp/progmodes/cc-engine.el (c-laomib-cache): Allow several
entries with the same LIM element corresponding to distinct
scanning regions.
(c-laomib-get-cache): Add new parameter START. Adjust to be
able to have entries with the same LIM element and handle them
correctly.
(c-laomib-put-cache): Amend the handling of cache entries with
the same LIM element.
(c-looking-at-or-maybe-in-bracelist): Supply the needed new
argument to c-laomib-get-cache. Add in a new call to
c-laomib-put-cache.
This corrects an error where commenting out a template closer
left a subsequent closer without a syntax-table text property.
* lisp/progmodes/cc-engine.el (c-unmark-<>-around-region):
Don't scan from the inside of 2-character comment delimiters.
Replace invalid skip-syntax-forward call with a null string
argument by an invocation of
c-search-forward-non-nil-char-property.
This fixes bug#62841.
In particular, correct the syntax-table text properties on the
remaining <...>s.
* lisp/progmodes/cc-align.el
(c-lineup-template-args-indented-from-margin): New lineup
function.
* lisp/progmodes/cc-defs.el (c-put-char-properties): New macro.
(c-search-forward-non-nil-char-property): Handle terminating
limit correctly.
* lisp/progmodes/cc-engine.el
(c-clear-<-pair-props-if-match-after)
(c-clear->-pair-props-if-match-before): Return the position
outside the matching < or >, not merely t.
(c-end-of-literal): New function.
(c-unmark-<>-around-region): New function.
(c-before-change-check-<>-operators): Refactor, calling
c-unmark-<>-around-region.
(c-<>-get-restricted): New function, extracted from
c-restore-<>-properties.
(c-restore-<>-properties): Handle ">" characters whose matching
"<" has not yet been encountered.
(c-ml-string-opener-at-or-around-point): Fix an off by one
error.
(c-backward-<>-arglist): New parameter restricted-function, a
function which calculates c-restricted-<>-arglists for the
current operation.
* lisp/progmodes/cc-fonts.el (c-font-lock-c++-using): Check
point is less than limit in the loop.
* lisp/progmodes/cc-langs.el
(c-get-state-before-change-functions)
(c-before-font-lock-functions): Add the new function
c-unmark-<>-around-region into the C++ and Java values of the
variable.
* lisp/progmodes/cc-mode.el (c-clear-string-fences)
(c-restore-string-fences): Neutralize and restore the
syntax-table properties between an unbalanced " and EOL.
* lisp/progmodes/cc-vars.el (c-offsets-alist): Put new lineup
function c-lineup-template-args-indented-from-margin into entry
for template-args-cont.
* doc/misc/cc-mode.texi (List Line-Up): Document
c-lineup-template-args-indented-from-margin.
This fixes bug#63328.
* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): New
variable got-stmt-block. After scanning an arglist, set
got-arglist to t. When we have as yet no identifier,
got-arglist, and scan an open brace, test the "type" for being
the name of the enclosing class.
(c-directly-in-class-called-p): Test the two names for
equality, not merely one being the head of the other.
This fixes bug#63322.
* lisp/progmodes/cc-engine.el (c-find-decl-spots): When a
search back over syntactic whitespace hits its limit, set
cfd-match-pos and cfd-continue-pos to cfd-start-pos.
* lisp/progmodes/cc-mode.el (c-fl-decl-start): Remove an
unneeded (and harmful) condition on (point)'s position in the
main loop.
This fixes bug#63224.
* lisp/progmodes/cc-engine.el (c-forward-type): Handle the "("
as a special case by trying to parse it with
c-forward-declarator and accepting it as a typeless function
when that fails.
This fixes bug #62386.
* lisp/progmodes/cc-engine.el (c-forward-over-compound-identifier): Don't
move forward over whitespace following the identifier.
(c-forward-primary-expression): Add parameter stop-at-end meaning don't move
forward over whitespace after the construct when non-nil. Don't recognise a
primary expression when an open brace follows a parenthesized expression.
(c-forward-constraint-clause): Extracted from c-forward-c++-requires-clause.
Add parameter stop-at-end as above.
(c-forward-c++-requires-clause): New stop-at-end parameter as above. Call the
new function c-forward-constraint-clause.
(c-forward-concept-fragment, c-looking-at-concept)
(c-in-requires-or-at-end-of-clause, c-c++-vsemi-p): New functions.
(c-guess-basic-syntax): New CASE 5A.7: "defun" open in a requires expression.
CASE 5F: Close of a non-class declaration level block: Move to earlier in the
function.
CASE 5D: Also check for being in or at end of a constraint.
New CASE 20: A C++ requires sub-clause.
New CASE 16G: The closing brace of a requires clause.
New CASE 17J: First "statement" inside a requires "function".
(c-forward-primary-expression, c-forward-declarator, c-forward-decl-or-cast-1)
(c-looking-at-or-maybe-in-bracelist): Amend the method of detecting end of
symbol "requires" (aka c-fun-name-substitute-key).
* lisp/progmodes/cc-fonts.el (c-get-fontification-context): Amend the method
of detecting end of symbol "requires".
* lisp/progmodes/cc-langs.el (c-at-vsemi-p-fn): Change the C++ entry to
c-c++-vsemi-p.
(c-fun-name-substitute-key): Change to an unadorned regexp.
* lisp/progmodes/cc-vars.el (c-offsets-alist): Add new syntactic symbol
constraint-cont.
* doc/misc/cc-mode.texi (Syntactic Symbols): Add an entry for contraint-cont.
(Constraint Symbols): New node under Syntactic Symbols.
This fixes bug #62339.
* lisp/progmodes/cc-engine.el (c-forward-type): In the implicit int handling,
respect the setting of the parameter stop-at-end. In the case "normal
identifier", insert a missing (c-forward-syntactic-ws); this fixes the bug.
Here, correct the wrong return value `prefix' to t.
Also fix one problem evident in test file decls-10.cc.
* lisp/progmodes/cc-engine.el (c-brace-stack-at): Bind
c-record-type-identifiers to nil to prevent called functions recording
identifiers spuriously.
(c-forward-<>-arglist-recur): Revert the ill-advised optimization from autumn
2022 which attempted to avoid re-marking c-type text properties inside angle
bracket arglists.
(c-forward-decl-or-cast-1): Accept the semicolon at the end of "t8 * id;" as
sufficient evidence to fontify as a declaration (not a multiplication).
* lisp/progmodes/cc-fonts.el (c-font-lock-c++-using): No longer fontify the
last component of foo::bar with c-reference-face-name.
* lisp/gnus/message.el (message-setup-1):
* lisp/progmodes/cc-engine.el (c-forward-single-comment):
* lisp/progmodes/ruby-mode.el (ruby-add-log-current-method):
Eliminate uses of condition-case without handlers. These seem to have
been there for quite a long time. This change does not affect the
behaviour of the code and makes some warnings go away.
1769a58830 Fix some uses of 'use-dialog-box'
deef41a825 Fix hi-lock-tests when 'use-dialog-box' is non-nil
5093a53496 Fix regression due to change in face sort order by 'face-...
3e74763099 * lisp/files.el (file-equal-p): Work around Haiku stat bug.
13fd7667f9 ; * src/treesit.c: Improve sectioning.
a40b1745d4 (project-vc-backend-markers-alist): Add entry for vc-got
18e96ed7c8 project.el: Extract backend->marker association for a defvar
0a5615669a Don't completely clip into visible range in treesit_recor...
5b34fc0708 * lisp/treesit.el (treesit-node-at): Update docstring (bu...
1c7d762378 ; Minor copyedit of NEWS wrt *-ts-modes
09fad246de * lisp/calc/calc.el (calc-mode): Improve docstring.
8aad8d75aa ; Improve and update documentation of native compilation
d6e4f24372 Merge 'emacs-29' into 'feature/inhibit-native-comp-cleanup'
a555abc56d Fix order of faces in 'face-list'
b44a7ff85d Allow 'icon-title-format' to have the value t
f1f571e72a Add electric indent for preproc directives
83af806ab7 Rename 'emacs-news-toggle-tag' to 'emacs-news-cycle-tag'
5bc88b3b17 Add menu to news-mode
40f4bc4e0a ; Avoid installing VC package dependencies multiple times
1c9d81a2b4 Attempt to recognise if a VC package has no Elisp files
2550e8bb0b Fix mule-tests under en_US.UTF-8 locale
3279530993 Move block closer above declaration_list rule (bug#61531)
b18754bb17 Minor improvements in c-ts-mode and docs
3c6b726a7b Add super node as a keyword
1917c51fe6 ; Prevent ERC-induced false positive in JUnit report
b16965ef7e Delete perplexing paragraph from Gnus manual
43c62a4732 ; Fix typo
fdac69b45e ; Auto-commit of loaddefs files.
7678b7e46f Eglot: check server capability before sending didSave (bu...
a3a1ef7bd5 Fix rust-ts-mode type and module highlighting (Bug#61302)
477aa047ee rust-ts-mode: Highlight variable reassignments
5206a551c1 Improve backward compatibility of save-restriction
accd88d554 Don't indent template_string contents (bug#61503)
d97a383996 csharp-ts-mode: fontify compiler directives (bug#61512)
420d2cae84 Update to Transient v0.3.7-209-gdab1dfa
a3751b5d0c ; Raise an error if a VC package checkout is empty
6a32ba8b69 ; Fix the installation of dependencies for VC packages
4eac80fcc3 ; Prepare to update ERC version to 5.5
4f099a7217 ; Remove failing erc-reuse-buffers test
ce4a066ed1 * Generate trampolines in a temporary directory if no oth...
4bb27a5ca9 ; Minor docs copyedits
13bcff3da5 Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/...
3d572ae0d5 Rename with/without-narrowing to with/without-restriction
d806b0e33c * lisp/repeat.el: Rename internal function and variable (...
1a64f326e0 * Fix previous change
95692f6754 Rename native-comp-deferred-compilation-deny-list
8d8464bd5a Rename native-comp-deferred-compilation into native-comp-...
5d0912f144 Rename comp-enable-subr-trampolines into native-comp-enab...
dd8b720ee7 ; * etc/NEWS: Fix typos.
909bd04cf5 ; * lisp/calendar/lunar.el: Add comments. (bug#61460)
10f2aedea9 ; * lisp/progmodes/c-ts-mode.el (c-ts-base-mode): delete ...
abfd00e5c0 * lisp/emacs-lisp/comp.el (native-comp-never-optimize-fun...
1795839bab Support `comp-enable-subr-trampolines' as string value
865758130a ; * admin/git-bisect-start: Update failing commits
b948d0d7ef Merge branch 'scratch/fix-locked-narrowing'
b6e2799aa1 * Some more `inhibit-native-compile' clean-up
dcb2379a46 Minor improvements to labeled narrowing
c0681cd347 Revert "Add new variable 'inhibit-native-compilation'"
3969a34fa1 Revert "Rename to inhibit-automatic-native-compilation"
4297039bd1 Save and restore the absence of narrowing locks
2956e54b1d Add an extensive test for labeled (locked) narrowing
79ce185ad1 Update the documentation about labeled (locked) narrowing
a6cd4553d4 Rename two long line optimizations variables
0d73e4aa26 Add specific symbols for narrowings
d8438e2bb4 Add 'without-narrowing' macro
97314447e6 Make 'narrowing-lock' and 'narrowing-unlock' internal
a4aa32bdff Fix 'save-restriction' for narrowing locks
This fixes bug #61481.
* lisp/progmodes/cc-engine.el (c-guess-basic-syntax): Add a new CASE 6 for
_Generic.
* lisp/progmodes/cc-fonts.el (c-fontify-types-and-refs): Use `let*' rather
than `let'.
(c-get-fontification-context): Add the new result `generic', and add handling
to determine it.
(c-font-lock-declarations): Call c-font-lock-c11-generic-clause when needed.
(c-font-lock-c11-generic-clause): New function.
* lisp/progmodes/cc-langs.el (c-generic-kwds, c-generic-key): New lang
constants/variable.
This was happening particularly with long-lines, possibly because the position
was inside a literal when calling c-determine-limit.
* lisp/progmodes/cc-engine.el (c-determine-limit): Guard a recursive call by
checking (- base try-size).
This fixes bug #61144. If the space around the * is "symmetric" we leave foo
* bar unfontified, a multiplication operation. If it is "asymmetric" we
fontify it as a pointer declaration.
* lisp/progmodes/cc-engine.el (c-fdoc-assymetric-space-about-asterisk): New
macro, extracted from c-forward-decl-or-cast-1.
(c-forward-decl-or-cast-1): Invoke the new macro twice, in CASE 16 (new) and
CASE 17.5 (the source of the macro). In CASE 16, additionally set
unsafe-maybe when appropriate.
This was happening in, e.g., c-forward-type, which moves over whitespace at
the end of the scanned type. This WS movement can exit a comment or a macro,
such that a c-backward-syntactic-ws does not return to the desired point, but
to before the entire comment/macro.
* lisp/progmodes/cc-engine.el (c-forward-keyword-prefixed-id)
(c-forward-id-comma-list, c-forward-noise-clause, c-forward-keyword-clause)
(c-forward-name, c-forward-type): Add a new &optional parameter `stop-at-end'
which when non-nil means "do not move over syntactic WS after performing the
main job", and adapt the internals of these macros and functions accordingly.
(c-forward-declarator, c-forward-decl-or-cast-1): In the calls to
c-forward-type and c-forward-name, set the stop-at-end argument to t, and call
c-forward-sytactic-ws later.
This fixes bug #60769. The two classes of "type" are foo and bar in
"foo d(bar () ...)", where the d could be a mistyped C-M-d.
* list/progmodes/cc-engine.el (c-forward-decl-or-cast-1): New local variable
got-arglist. Refactor a sequence of enclosed `if' forms into a `cond' form.
Set got-arglist when needed. In CASE 2, set unsafe-maybe to inhibit foo
being entered into c-found-types. In CASE 19, likewise set unsafe-maybe, to
inhibit bar entering c-found-types.
For this purpose, record the type names declared by typedef in a text
property, c-typedef, on the typedef. On any change to that "typedef" or a
type, remove the old identifier(s) from c-found-types.
This should fix bug #59671.
* lisp/progmodes/cc-defs.el (c-search-forward-non-nil-char-property): New
macro.
* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): Move the scope of
identifier-start from the "inner" let form to the outer one. Amend the
return value such that the middle element of the second element is now the
position of the "typedef", not merely non-nil.
* lisp/progmodes/cc-fonts.el (c-font-lock-declarators): Disregard the LIMIT
parameter when fontifying the declarators of a typedef construct. Also in
this case, set the c-typedef text property on the "typedef" to the list of
declared types. Amend this list when these declared types change.
(c-font-lock-single-decl): Massage the `types' argument given to
c-font-lock-declarators.
(c-font-lock-cut-off-declarators): Amend to work when the starting point of
the fontification is inside a brace block.
* lisp/progmodes/cc-mode.el (c-before-change-de-typedef)
(c-after-change-de-typedef): New functions.
(c-update-new-id): Replace the erroneous c-end-of-current-token with a clause
containing c-forward-token-2.
(c-before-change): Call c-before-change-de-typedef.
(c-after-change): Call c-after-change-de-typedef.
This should fix bug #60765. In the scenario type an identifier in front of
foo (bar, baz), as when started a new statement. This temporarily makes the
function call a declarator, and bar and baz types. Don't enter bar and baz
into c-found-types.
* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1) (CASE 6): When a
'maybe type triggers this case, set `unsafe-maybe' to non-nil.
This fixes bug #59051.
* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): In the test for the
last invocation of c-fdoc-shift-type-backward before CASE 1, additionally
test CONTEXT not being an arglist or BACKUP-AT-TYPE being non-nil.
This fixes bug #59427. We now handle correctly the case when a parenthesis
follows the * which is ambiguously a multiplication or indirection operator.
Also, we don't recognise a type thus found as a found type - the evidence is
too weak.
* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): Fix CASE 17.5 as
above.