This rids us of a bunch of unhygienic macros with free variables and
makes the marking code actually readable again. Even better, it is all
processed by the compiler even when the checks are disabled.
* src/alloc.c (CHECK_ALLOCATED, CHECK_LIVE, CHECK_ALLOCATED_AND_LIVE)
(CHECK_ALLOCATED_AND_LIVE_SYMBOL): Transform macros into...
(check_live, check_allocated_and_live, check_allocated_and_live_symbol)
(check_allocated_and_live_vectorlike): ...functions. Callers adapted.
- hightlight reserved keywords agressively, dont allow misuse as
variables etc (the compiler will fail!)
- highlight lambda-valued variables as funtions.
- improve semantics of function/class annotations using attributes
(maps closer to using-something than declaring it). also: rename to
"attribute". "property" has a different, defined meaning in C#.
- better highlight variable-use in different scenarios (function-calls,
if-statements, assignment-expressions, property-use, anonymous object
initializers).
- better highlight for property-use (anonymous object initializers).
- highlight field-declaration using font-lock-variable-face.
- fontify attributes using new face csharp-ts-mode-attribute-face
(defaults to font-lock-property-use-face).
- remove extensive use of "override" making evalutation hard-to-reason about.
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--indent-rules):
Update indent rules.
(csharp-ts-mode-faces): New group.
(csharp-ts-mode-attribute-face): New face.
(csharp-ts-mode--font-lock-settings): Rule updates.
(csharp-ts-mode): Change property feature to attribute
* lisp/mouse.el (mouse-shift-adjust-mode-map): New variable.
(mouse-shift-adjust-mode): New minor mode (bug#79453).
(mouse-shift-adjust-point): New variable.
(mouse-drag-region-shift-adjust): New command.
(mouse-drag-track, mouse-set-region): Use 'mouse-shift-adjust-point'
to take into account the already existing region boundary.
* etc/PROBLEMS: Suggest how to keep context menus open on Lucid.
* lisp/mouse.el (context-menu-mode-map): Bind [mouse-3] to
'ignore' instead of 'nil' to not fallback to the default binding.
(mouse--drag-start-event): Remove unused variable.
(mouse-undouble-last-event): Remove unused function.
* etc/NEWS:
* lisp/vc/vc.el (vc-apply-root-to-other-working-tree):
* doc/emacs/vc1-xtra.texi (Other Working Trees): Fix spelling and
wording of documentation of recent changes to VC.
* lisp/progmodes/ruby-mode.el (ruby-syntax-propertize):
Create an exception for assign-division operator not to be
recognized as regexp start (bug#79454).
* test/lisp/progmodes/ruby-mode-resources/ruby.rb: Add example.
* lisp/progmodes/php-ts-mode.el (php-ts-mode--language-source-alist):
For ABI version < 15 add the recommended version "v0.23.12" (full hash
"f7cf7348737d8cff1b13407a0bfedce02ee7b046").
Also, replace obsolete city name "Bangalore" with "Delhi",
and improve doc strings.
* lisp/time.el (zoneinfo-style-world-list)
(legacy-style-world-list): Evidently "Bangalore" was chosen for
Asia/Kolkata to avoid confusion about "Calcutta" vs "Kolkata".
However, it has similar confusion with "Bengaluru".
Use "Delhi" instead, as Delhi is larger, its name has not changed
for some time, and proposals to change its name have so far failed.
See: Sharma MS. Vijay Goel wants Delhi renamed as Dilli, but historians
say it will only spell trouble. Times of India. 2019-07-25.
(zoneinfo-style-world-list): Update doc string. “Posix-style” was
ambiguous as TZDB-style strings are specified only by POSIX.1-2024,
so use “TZDB-style” instead. Say “AREA/LOCATION” to be consistent.
If AREA/LOCATION is unsupported, Emacs signals an error on NetBSD
so don’t imply that some other timezone will be used.
(legacy-style-world-list): Remove ("GMT0BST" "London") and ("CET-1CDT"
"Paris"). These are wrong because neither London nor Paris follow
US DST rules. Instead, use ("GMT0BST,M3.5.0/1,M10.5.0" "London")
and ("CET-1CEST,M3.5.0,M10.5.0/3" "Paris") if they work, and omit
London and Paris entries otherwise.
* test/lisp/textmodes/ispell-resources/fake-aspell-new.bash:
Avoid using associative arrays since they are not available
in old bash versions that come with some systems (bug#79177).
* doc/lispref/positions.texi (List Motion):
* doc/lispref/modes.texi (Major Mode Conventions, Major Modes)
(Parser-based Font Lock, Parser-based Indentation): Improve
indexing and cross-references to tree-sitter related stuff.
* lisp/progmodes/gdb-mi.el (gdb-init-1): Delay processing of GDB
responses while waiting for the user to answer the question about
enabling debuginfod. (Bug#79403)
* lisp/progmodes/php-ts-mode.el: Doc string update.
(php-ts-mode--language-source-alist): PHP grammar update.
(php-ts-mode-find-sibling-rules): Doc string fix.
(php-ts-mode--parent-html-heuristic): Handled the case where there
is no HTML between two blocks of PHP code.
(php-ts-mode--array-element-heuristic): Fix typo.
(php-ts-mode--pipe-heuristic): New function that handle PHP's new
pipe operator.
(php-ts-mode--indent-styles): Removed commented code. More
accurate indentation of ‘member_call_expression’. Use of new
function to handle pipe operator indentation. New rule for
indenting ‘property_hook_list’.
(php-ts-mode--test-yield-from-p): New predicate to check whether
the 'yield from' keyword is supported by the PHP grammar.
(php-ts-mode--test-pipe-p): New predicate to check whether the
‘pipe’ operator is supported by the PHP grammar.
(php-ts-mode--keywords): Use the new predicate
'php-ts-mode--test-yield-from-p'. Now it is a var instead of a
const.
(php-ts-mode--operators): Use the new predicate
'php-ts-mode--test-pipe-p'. Now it is a var instead of a const.
(php-ts-mode--font-lock-settings): New rules for
'nullsafe_member_access_expression', 'callable' primitive type.
New rule for the 'php_end_tag' if supported by the grammar.
More precise rules for 'scoped_call_expression' and
'member_call_expression'.
(php-ts-mode--inferior-php-process): Removed this unnecessary
variable.
(inferior-php-ts-mode-startup): Removed the use of
'php-ts-mode--inferior-php-process'.
(php-ts-mode-inferior--write-history): Removed the use of
'php-ts-mode--inferior-php-process'.
(Bug#79339)
Reloading a byte-compiled file when we fail to fetch some
docstring in it is not guaranteed to work and can cause
subtle bugs which are worse than simply not having a
docstring. Add 'documentation-dynamic-reload' variable to
allow disabling this behavior. See the discussion in
https://lists.gnu.org/archive/html/emacs-devel/2025-08/msg00304.html
for more details.
* src/doc.c (syms_of_doc): Add 'documentation-dynamic-reload'.
(Fdocumentation, Fdocumentation_property): Check value of
'documentation-dynamic-reload'.
* lisp/vc/log-edit.el (message): No longer require.
(log-edit-beginning-of-line): Delete. No longer required now
that Log Edit buffers use fields for headers. (In combination
with the new fields, this binding led to C-a behaving strangely
for summaries with colons in them.)
(log-edit-mode-map): Unbind it.