Commit graph

174847 commits

Author SHA1 Message Date
Paul Eggert
865b54e2ac Use c-ctype.h in lib-src
This fixes some unlikely bugs and removes the temptation
of using ctype.h.  Although some uses were correct,
many weren't.
* lib-src/ebrowse.c: Include c-ctype.h, not ctype.h.
* lib-src/emacsclient.c: Include c-ctype.h, not ctype.h.
* lib-src/update-game-score.c: Include c-ctype.h, not ctype.h.
All uses changed.
2024-09-17 16:57:58 -07:00
Paul Eggert
e0b027d121 Fix some #! misparsing in check_interpreter
* exec/exec.c: Do not include ctype.h, as the kernel
does not care about the locale.
(check_interpreter): Treat only spaces and tabs as white space.
Do not inspect more bytes than were read.
Although the resulting code does not exactly match what
the Android kernel does, it’s closer than what it was before.
2024-09-17 16:39:25 -07:00
Paul Eggert
58a44b6ac3 Fix misuse of toupper in sfnt_parse_style
* src/sfntfont.c: Include c-ctype.h, not ctype.h.
(sfnt_parse_style): Upcase just initial ASCII letters;
that’s good enough here.
2024-09-17 16:39:25 -07:00
Paul Eggert
43cde03fa5 Fix yes-or-no-p with multibyte spaces
Problem reported by Thomas Klausner (Bug#73307).
Emacs shouldn’t use ctype.h, as it doesn’t work for multibyte
chars and it doesn’t work with Emacs’s locale model anyway.
* src/fns.c: Include syntax.h, not ctype.h.
(Fyes_or_no_p): Check the character category with SYNTAX, not
with isspace, which assumes the current locale and works only
with single-byte characters.
2024-09-17 16:39:25 -07:00
Eshel Yaron
f1794a17b6
New user option 'completion-preview-ignore-case'
Completion Preview mode implicitly assumed that
'completion-ignore-case' is nil, and while it can also work
with 'completion-ignore-case' non-nil, the results are a bit
different than what you get with 'completion-at-point'.  Add
an option that controls case sensitivity explicitly and
specifically for Completion Preview mode, and clarify the
behavior when case differences are ignored.  (Bug#73234)

* lisp/completion-preview.el
(completion-preview-ignore-case): New user option.
2024-09-17 20:45:14 +02:00
Robert Pluim
7d365a2d72 Fix idna-mapping-table following Unicode 16 changes
The latest version of UTS #46 in Unicode 16 has changed the way it
indicates which codepoints are invalid in domain names, causing
'idna-mapping-table' to contain incorrect information, which then breaks
'textsec-domain-suspicious-p' and our test suite.  (Bug#73312)

* admin/unidata/unidata-gen.el (unidata-gen-idna-mapping): Check the
IDNA validity field in "IdnaMappingTable.txt" in addition to checking
the status field, as the latter can now be 'valid' for disallowed
codepoints.
2024-09-17 15:50:27 +02:00
Dmitry Gutov
8eb66cca78 Rename project-{find-file-in-root,root-find-file}
* lisp/progmodes/project.el (project-root-find-file):
Rename from 'project-find-file-in-root' (bug#73044).
2024-09-17 12:59:56 +03:00
Paul Eggert
73427887d6 Update from Gnulib by running admin/merge-gnulib 2024-09-17 00:35:03 -07:00
Paul Eggert
cbe8683410 Remove unnecessary #include
* src/sysdep.c: Don’t include utimens.h; hasn’t been
needed for a while.
2024-09-16 16:48:45 -07:00
Stefan Kangas
f27553c30a Add make-directory to symbol-releases.eld
This avoids saying (incorrectly) that it was introduced in Emacs 23.1.

* etc/symbol-releases.eld: Add 'make-directory'.
2024-09-15 14:02:36 +02:00
Stefan Kangas
4464062f4e Remove some XEmacs compat code from cperl-mode.el
The 'initialize-new-tags-table' function is unconditionally available
after 'etags' has been loaded, which is done further up.

* lisp/progmodes/cperl-mode.el (cperl-write-tags): Remove XEmacs compat
code.
2024-09-15 14:02:36 +02:00
Daniel Martín
16a142c2b2 ;; Fix typo in Grep Edit mode manual description (bug#73274). 2024-09-15 13:33:05 +03:00
Mattias Engdegård
2cd5774689 * lisp/simple.el (kill-region-dwim): Rectify choice label. 2024-09-15 11:24:29 +02:00
Po Lu
7793b2fe2a Merge from savannah/emacs-30
709ce2aff1 Port to Haiku R1/beta5
21efdd5ef3 Fix c++-ts-mode font-lock for latest c++ grammar (bug#73191)
ffc00eac53 ; Set Transient's version and add admin/MAINTAINERS entry
3822a5e5d1 * admin/update-copyright: Print reminder to do manual upd...
43b678d3d2 * admin/notes/years: Update.
38de992a5a * etc/TODO: New item "support indentation guides".

# Conflicts:
#	admin/notes/years
#	doc/misc/transient.texi
#	lisp/progmodes/c-ts-mode.el
#	lisp/transient.el
2024-09-15 08:54:50 +08:00
Po Lu
709ce2aff1 Port to Haiku R1/beta5
* src/haiku_support.cc (keysym_from_raw_char): Use revised names
for B_HANGUL and B_HANGUL_HANJA.
2024-09-15 08:52:46 +08:00
Yuan Fu
21efdd5ef3
Fix c++-ts-mode font-lock for latest c++ grammar (bug#73191)
* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--keywords): Add "thread_local" keyword.
(c-ts-mode--test-virtual-named-p): New function.
(c-ts-mode--font-lock-settings): Use named/anonymous "virtual" depending
on the grammar.
2024-09-14 11:09:45 -07:00
Jonas Bernoulli
ffc00eac53
; Set Transient's version and add admin/MAINTAINERS entry
* admin/MAINTAINERS: Add entry for externally maintained Transient
package.
* doc/misc/transient.texi: Bump version strings.
* lisp/transient.el: Bump version in Version header.
* lisp/transient.el (transient-version): New constant.
2024-09-14 19:23:40 +02:00
Sean Whitton
691f441717 ; * etc/NEWS: Fix variable name. 2024-09-14 17:35:45 +01:00
Sean Whitton
a6631eaec3 ; * lisp/simple.el (kill-region-dwim): Try to simplify docstring. 2024-09-14 17:09:48 +01:00
Philip Kaludercic
7451bd6e39 Allow 'kill-region' to kill the last word when there is no region
* etc/NEWS: Document the new user option.
* lisp/simple.el (kill-region-dwim): New option.
(kill-region): Respect 'kill-region-dwim'.  (Bug#69097)
2024-09-14 17:01:40 +01:00
Stefan Kangas
3822a5e5d1 * admin/update-copyright: Print reminder to do manual updates. 2024-09-14 17:38:34 +02:00
Stefan Kangas
43b678d3d2 * admin/notes/years: Update. 2024-09-14 17:32:59 +02:00
Stefan Kangas
efde34f422 ; * etc/NEWS: Delete duplicated section title. 2024-09-14 17:08:58 +02:00
David Fussner
3090b2304e Update the etags/ctags test files
* test/manual/etags/ETAGS.good_1:
* test/manual/etags/ETAGS.good_2:
* test/manual/etags/ETAGS.good_3:
* test/manual/etags/ETAGS.good_4:
* test/manual/etags/ETAGS.good_5:
* test/manual/etags/ETAGS.good_6:
* test/manual/etags/CTAGS.good: Update expected results from TeX
files.  (Bug#53749)
2024-09-14 17:05:33 +02:00
David Fussner
b44c00669a Provide a modified xref backend for TeX buffers
In addition to providing a new `xref' backend, the patch also improves
the general handling of expl3 syntax.  Expl3 is the next-generation
LaTeX specification, and has for some time been available by default in
the LaTeX kernel.  The new syntax co-exists in many files with the
standard LaTeX2e syntax, so we try at least minimally to separate the
way modes handle the two specifications, both to reduce
visually-disturbing interference between them and also to improve the
`xref' backend.  (Bug#53749)

* lib-src/etags.c (TeX_commands): Improve parsing of commands in TeX
buffers.
(TEX_defenv): Expand list of commands to tag by default in TeX buffers.
(TeX_help):
* doc/emacs/maintaining.texi (Tag Syntax): Document new tagged commands.
(Identifier Search): Add note about semantic-symref-filepattern-alist,
auto-mode-alist, and xref-find-references.

* lisp/textmodes/tex-mode.el (tex-font-lock-suscript): Test for
underscore in expl3 files and regions, disable subscript face there.
(tex-common-initialization): Set up xref backend for in-tree TeX modes.
Detect expl3 files, and in others set up a list of expl3 regions.
(tex-expl-buffer-parse): New function called in previous.
(tex-expl-buffer-p): New variable to hold the result of previous.
(tex-expl-region-set): New function added to
'syntax-propertize-extend-region-functions' hook.
(tex-expl-region-list): New variable to hold the result of previous.
(tex--xref-backend): New function to identify the xref backend.
(tex--thing-at-point, tex-thingatpt--beginning-of-symbol)
(tex-thingatpt--end-of-symbol, tex--bounds-of-symbol-at-point):
New functions to return 'thing-at-point' for xref backend.
(tex-thingatpt-exclude-chars): New variable to do the same.
(xref-backend-identifier-at-point): New TeX backend method to provide
symbols for processing by xref.
(xref-backend-identifier-completion-table)
(xref-backend-identifier-completion-ignore-case)
(xref-backend-definitions, xref-backend-apropos): Placeholders to
call the standard 'etags' xref backend methods.
(xref-backend-references): Wrapper to call the default xref backend
method, finding as many relevant files as possible and using a bespoke
syntax-propertize-function when required.
(tex--collect-file-extensions, tex-xref-syntax-function): Helper
functions for previous.
(tex-find-references-syntax-table, tex--buffers-list)
(tex--xref-syntax-fun, tex--old-syntax-function): New variables for
the same.
2024-09-14 17:05:33 +02:00
Stefan Kangas
38de992a5a * etc/TODO: New item "support indentation guides".
Ref:
https://lists.gnu.org/r/emacs-devel/2024-07/msg01062.html
2024-09-14 16:36:56 +02:00
Eli Zaretskii
98e582e74a Fix indentation of Fortran do-loops
* lisp/progmodes/fortran.el (fortran-calculate-indent): Fix regexp
for do-loops.  Reported by Ken Mankoff <km@kenmankoff.com>.
(Bug#73218)
2024-09-14 17:18:57 +03:00
Eli Zaretskii
3e98ad3063 ; * etc/NEWS: Fix last change. 2024-09-14 15:42:15 +03:00
Eli Zaretskii
0cf9886cdf Merge from origin/emacs-30
d509a35699 Fix regression in widget-move (bug#72995)
ef0276de82 ; * lisp/cus-edit.el (setopt): Doc fix.  (Bug#73098)
b115c2d5eb ; * lisp/minibuffer.el (completion-pcm--merge-completions...
3cda1fdc3b Correctly include fixed strings before a prefix wildcard ...
57d93d0259 ; * lisp/treesit.el (treesit-major-mode-setup): Doc fix.
ad289f364e ; Improve documentation of 'easy-menu-define'
3cad7cc8dc Set treesit-primary-parser for c and elixir ts mode
2f243fb91d ; Minor doc fix in treesit.el
6a6d7925c9 Fix range handling so it works for multibyte buffer (bug#...
76faf7e609 Revert "Read more on each call to treesit's buffer reader"
c70bd0e3fe Fix tree-sitter indent preset prev-adaptive-prefix
272df33fb8 ; * CONTRIBUTE: Minor copyedits.
8e1187e336 Improve NEWS entries
ca3932121a Don't fail uniquify-tests in non-version-controlled sourc...
79f68597ab ; * etc/ORG-NEWS: Fix typo.
d66b70f360 * doc/misc/auth.texi: Minor copy edits.
2c6b7b2da9 ; * admin/MAINTAINERS: Remove some entries for Artur Mala...
11e7ae3964 Fix bug#72254

# Conflicts:
#	etc/NEWS
2024-09-14 07:55:01 -04:00
Eli Zaretskii
7eaa454283 ; Merge from origin/emacs-30
The following commit was skipped:

9a1c76bf7f Bump Emacs version to 30.0.91
2024-09-14 07:54:56 -04:00
Eli Zaretskii
fe6e58f7c5 Merge from origin/emacs-30
68530860ae ; * ChangeLog.4: Update.
fb1db366b9 ; * etc/AUTHORS: Update.
2024-09-14 07:54:56 -04:00
Sean Whitton
f6417ba91b New commands unix-word-rubout, unix-filename-rubout
* lisp/simple.el (forward-unix-word): New function.
(unix-word-rubout, unix-filename-rubout): New commands.
* etc/NEWS: Announce the new commands.
2024-09-14 12:16:51 +01:00
Eli Zaretskii
0a6e988b8d ; * etc/NEWS: Announce the improvements in w32 GUI dialogs. 2024-09-14 14:02:51 +03:00
Cecilio Pardo
aa7dee58d8 Support GUI dialogs and message boxes better on MS-Windows
* src/w32menu.c (TASKDIALOG_COMMON_BUTTON_FLAGS, TASKDIALOG_FLAGS)
(PFTASKDIALOGCALLBACK, TASKDIALOG_BUTTON, TASKDIALOGCONFIG)
(TDN_CREATED, TDM_ENABLE_BUTTON, TDF_ALLOW_DIALOG_CANCELLATION)
(TD_INFORMATION_ICON) [!MINGW_W64]: Define.
(TaskDialogIndirect_Proc): Declare function type.
(TASK_DIALOG_MAX_BUTTONS): New macro.
(task_dialog_callback): New callback function.
(w32_popup_dialog): Add dialog implementation using TaskDialog.
(globals_of_w32menu): Load TaskDialogIndirect from comctl32.dll.
(Bug#20481)
2024-09-14 13:57:26 +03:00
Stephen Berman
d509a35699 Fix regression in widget-move (bug#72995)
* lisp/wid-edit.el (widget-move): Avoid advancing point only if it
is at the start of a widget at BOB.

* test/lisp/wid-edit-tests.el (widget-test-widget-move-bug72995): New test.
2024-09-14 12:42:49 +02:00
Visuwesh
db1eb8a282 Make the *grep* buffer editable
* lisp/progmodes/compile.el (compilation--update-markers):
Factor out function...
(compilation-next-error-function): ...from here.  Adjust
to use the above.
* lisp/progmodes/grep.el (grep-edit--prepare-buffer)
(grep-edit-mode-map, grep-edit-mode-hook, grep-edit-mode)
(grep-change-to-grep-edit-mode, grep-edit-save-changes): Add
new 'grep-edit-mode' to make the grep results editable like
in 'occur-edit-mode' by using the 'occur' framework.
(grep-mode-map): Bind 'e' to the new command
'grep-change-to-grep-edit-mode'.
* doc/emacs/building.texi (Grep Searching): Update Info
manual to include the above command.
* etc/NEWS: Announce the change.  (Bug#70820)
2024-09-14 12:41:29 +03:00
Eli Zaretskii
ef0276de82 ; * lisp/cus-edit.el (setopt): Doc fix. (Bug#73098) 2024-09-14 12:33:36 +03:00
Eli Zaretskii
b115c2d5eb ; * lisp/minibuffer.el (completion-pcm--merge-completions): Fix comments. 2024-09-14 12:26:54 +03:00
Spencer Baugh
3cda1fdc3b Correctly include fixed strings before a prefix wildcard in PCM
In 03ac16ece4 I fixed a bug with the
PCM implementation of substring completion, relating to the handling
of PCM wildcards.
However, this fix was incomplete.  This change completes the fix by
also including a fixed string if it appears before a 'prefix'
wildcard, even if 'try-completion' doesn't discover that fixed
string grows to a unique completion.
I discovered this bug while working on enhancements to PCM
completion related to 'completion-pcm-leading-wildcard'.
* lisp/minibuffer.el (completion-pcm--merge-completions): Include
fixed strings before 'prefix wildcard.  (Bug#72819)
* test/lisp/minibuffer-tests.el (completion-substring-test-5): Add a
test for this behavior.
2024-09-14 12:24:08 +03:00
Eli Zaretskii
57d93d0259 ; * lisp/treesit.el (treesit-major-mode-setup): Doc fix. 2024-09-14 12:02:56 +03:00
Eli Zaretskii
ad289f364e ; Improve documentation of 'easy-menu-define'
* doc/lispref/keymaps.texi (Easy Menu):
* lisp/emacs-lisp/easymenu.el (easy-menu-define): Document that
SYMBOL is also defined as a variable.  (Bug#73108)
2024-09-14 11:55:08 +03:00
Spencer Baugh
7c767ec781 Update completion-styles defcustom for variable overrides
In 69ec333eab I allowed
completion-styles to contain a list of bindings.  Now the
'defcustom' type also supports this.
Since the type is somewhat unusual (a value in the list can be
either a symbol or a list) I had to add a new widget to support
it.
* lisp/minibuffer.el (completion--styles-type): Update to allow
setting variable overrides.
(completion-styles, completion-category-overrides)
(completion-pcm-leading-wildcard): Update :version.

* lisp/wid-edit.el (widget-single-or-list-to-internal)
(single-or-list): Add.
2024-09-14 11:45:51 +03:00
Yuan Fu
3cad7cc8dc
Set treesit-primary-parser for c and elixir ts mode
For buffers with multiple parsers, it's important to set this variable
so font-lock invalidation works smoothly.

* lisp/progmodes/c-ts-mode.el (c-ts-mode): Set treesit-primary-parser.
* lisp/progmodes/elixir-ts-mode.el (elixir-ts-mode): Set
treesit-primary-parser.
2024-09-14 00:46:05 -07:00
Yuan Fu
2f243fb91d
; Minor doc fix in treesit.el
* lisp/treesit.el (treesit-outline-search): Mention parameters.
(treesit-major-mode-setup): Mention outline setup.
2024-09-14 00:28:23 -07:00
Yuan Fu
6a6d7925c9
Fix range handling so it works for multibyte buffer (bug#73204)
Here by multibyte buffer I mean buffer that includes non-ASCII
characters.

The problem is illustrated by this comment, which I copied from the
source:

======================================================================
(ref:bytepos-range-pitfall) Suppose we have the following buffer
content ([ ] is a unibyte char, [    ] is a multibyte char):

    [a][b][c][d][e][ f  ]

and the following ranges (denoted by braces):

    [a][b][c][d][e][ f  ]
    {       }{    }

So far so good, now user deletes a unibyte char at the beginning:

    [b][c][d][e][ f  ]
    {       }{    }

Oops, now our range cuts into the multibyte char, bad!
======================================================================

* src/treesit.c (treesit_debug_print_parser_list): Minor fix.
(treesit_sync_visible_region): Change the way we fixup ranges, instead
of using the bytepos ranges from tree-sitter, we use the cached lisp
charpos ranges.
(treesit_make_ts_ranges): New function.
(Ftreesit_parser_set_included_ranges): Refactor out the new function
treesit_make_ts_ranges.
(Ftreesit_parser_included_ranges): Rather than getting the ranges from
tree-sitter, just return the cached lisp ranges.

* src/treesit.h (Lisp_TS_Parser): Add some comment.
* test/src/treesit-tests.el (treesit-range-fixup-after-edit): New test.
2024-09-14 00:28:23 -07:00
Yuan Fu
76faf7e609
Revert "Read more on each call to treesit's buffer reader"
This reverts commit bf23382f1f.

We move around the gap, narrow regions, ralloc, etc, and don't have a
way to invalidate previously given range.  So tree-sitter can't be given
the full range.
2024-09-14 00:28:23 -07:00
Yuan Fu
c70bd0e3fe
Fix tree-sitter indent preset prev-adaptive-prefix
* lisp/treesit.el (treesit-simple-indent-presets): Use looking-at so the
call to match-string has the match data to work with.
2024-09-14 00:28:22 -07:00
Michael Albinus
0d07bc1a2d * lisp/net/tramp.el (tramp-wait-for-regexp): Deactivate (sit-for 0.005). 2024-09-14 08:57:19 +02:00
Eli Zaretskii
272df33fb8 ; * CONTRIBUTE: Minor copyedits. 2024-09-14 09:52:59 +03:00
Stefan Kangas
f3bb84e53b * etc/symbol-releases.eld: Fix URL. 2024-09-14 00:51:12 +02:00