Juri Linkov [Sun, 29 Dec 2024 18:08:11 +0000 (20:08 +0200)]
Treesit support for show-paren-mode (bug#75122)
* lisp/treesit.el (treesit-show-paren-data--categorize):
New internal function.
(treesit-show-paren-data): New function.
(treesit-major-mode-setup): Set 'show-paren-data-function' to
'treesit-show-paren-data'.
Juri Linkov [Sun, 29 Dec 2024 17:57:28 +0000 (19:57 +0200)]
Add new variable 'up-list-function' for 'treesit-up-list'
* lisp/emacs-lisp/lisp.el (up-list-function): New variable (bug#73404).
(up-list-default-function): New function.
(up-list): Split part to 'up-list-default-function'.
* lisp/treesit.el (treesit-up-list): New function.
(treesit-major-mode-setup): Set 'up-list-function' to
'treesit-up-list'.
Juri Linkov [Sun, 29 Dec 2024 17:51:18 +0000 (19:51 +0200)]
Add new variable 'down-list-function' for 'treesit-down-list'
* lisp/emacs-lisp/lisp.el (down-list-default-function): New function.
(down-list-function): New variable (bug#73404).
(down-list): Move meat to 'down-list-default-function',
and call 'down-list-function' when non-nil. Don't raise an error
in strings or comments when 'down-list-function' is non-nil.
* lisp/treesit.el (treesit--scan-error): New internal function.
(treesit-forward-sexp, treesit-forward-list): Use 'treesit--scan-error'.
(treesit-down-list): New function.
(treesit-major-mode-setup): Set 'down-list-function' to
'treesit-down-list'.
Juri Linkov [Sun, 29 Dec 2024 17:42:40 +0000 (19:42 +0200)]
Add new variable 'forward-list-function' for 'treesit-forward-list'
* lisp/emacs-lisp/lisp.el (forward-list-default-function): New function.
(forward-list-function): New variable (bug#73404).
(forward-list): Move meat to 'forward-list-default-function',
and call 'forward-list-function' when non-nil.
* lisp/treesit.el (treesit-forward-list): Rewrite to not rely on
'treesit-forward-sexp'.
(treesit-major-mode-setup): Set 'forward-list-function' to
'treesit-forward-list'.
Michael Albinus [Sun, 29 Dec 2024 11:26:05 +0000 (12:26 +0100)]
Some minor Tramp changes
* lisp/net/tramp-sh.el (tramp-sh-handle-process-file): Do proper quoting.
* lisp/net/tramp.el (tramp-string-empty-or-nil-p):
Declare `tramp-suppress-trace' property.
(tramp-skeleton-make-symbolic-link): Drop volume letter when flushing.
* test/lisp/net/tramp-tests.el (tramp-test39-make-lock-file-name):
Adapt test.
(tramp-test42-utf8): Do not run expensive tests on MS Windows.
Make browser windows pop up when browsing URLs on Wayland
When a user invokes browse-url, the browser window viewing the URL
should be raised in the user's desktop environment. On X11, running
xdg-open as a subprocess does the job. However, on Wayland, this
approach doesn't work: xdg-open makes the web browser browse a URL all
right, but doesn't raise the browser window in the GUI. Therefore, if
the browser window is behind Emacs, browse-url appears to do nothing.
Repeated invocations of browse-url cause the browser to load multiple
tabs in the background, surprising the user when he gives up in
frustration and manually switches to the browser window.
There's no subprocess we can run to make the right thing happen.
Wayland requires that we pass along event activation information to the
browser using the xdg_activation_v1 protocol.
This change adds x-gtk-launch-uri to invoke GTK-native URL-dispatch
machinery. This machinery DTRT on both X11 and Wayland. We fall back
to the default browser machinery if we're not on a GTK frame.
The logic is more complicated than it has to be because the GTK URI
launch mechanism requires that we launch with respect to a specific GTK
window, and in some environments (e.g., running emacs -nw in a PGTK
Emacs) we don't have a GTK window. We also want to preserve the effect
of customizing browse-url-browser-function, so adding an entry to
browse-url-default-handlers that preempts URI open when we happen to be
on a GTK frame is the wrong thing to do.
* lisp/net/browse-url.el (browse-url--browser-defcustom-type):
(browse-url--inhibit-pgtk): avoid infinite recursion
(browse-url-default-browser): use pgtk launch
(x-gtk-launch-uri): new function
(browse-url-default-gtk-browser): ues it
* src/pgtkfns.c (unwind_gerror_ptr): new function
(Fx_gtk_launch_uri): new function
(syms_of_pgtkfns): register it
Alan Mackenzie [Sat, 28 Dec 2024 17:16:04 +0000 (17:16 +0000)]
CC Mode: Minor corrections and tidy ups for cache invalidation
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)
Alan Third [Fri, 27 Dec 2024 11:46:45 +0000 (11:46 +0000)]
Make image cache aware of image-scaling-factor (bug#74725)
* src/dispextern.h (struct image): Add scale so it can be compared in
search_image_cache.
* src/image.c (search_image_cache): Calculate the scale factor and
compare with the cached value.
(image_compute_scale): Compute the image's scale factor and optionally
store it in the image struct.
(compute_image_size): Move scale calculation code into
image_compute_scale and use it.
F. Jason Park [Tue, 24 Dec 2024 06:21:34 +0000 (22:21 -0800)]
Reuse process in erc-server-delayed-check-reconnect
* doc/misc/erc.texi (Integrations): Set `erc-server-reconnect-function'
to `erc-server-delayed-check-reconnect' in SOCKS example, and add
definition for `erc-open-socks-tls-stream'. Mention possible
inaccuracies related to error detection with certain reconnect
strategies.
* lisp/erc/erc-backend.el (erc-server--reconnect-opened): New function.
(erc-server-delayed-check-reconnect): Attempt to reuse process if server
sends a complete PONG, and attempt to accommodate connectors that set
:nowait to nil.
(erc--server-delayed-check-connectors): Remove variable.
(erc-server-prefer-check-reconnect): Inline what was the internal
variable `erc--server-delayed-check-connectors' because it's no longer
used in unit tests. Add `erc-open-socks-tls-stream' to the set of
connector functions thought to be compatible with the "check" reconnect
strategy.
* test/lisp/erc/erc-scenarios-base-auto-recon.el
(erc-scenarios-base-auto-recon-no-proto): Adapt to expect "reuse" behavior.
* test/lisp/erc/resources/base/reconnect/ping-pong.eld: Delete unused file.
* test/lisp/erc/resources/base/reconnect/unexpected-disconnect.eld:
Capture PING cookie to send back to client.
* test/lisp/erc/resources/erc-d/resources/proxy-solo.eld: Delete unused
file. (Bug#62044)
* lisp/emacs-lisp/package.el (package--download-and-read-archives):
Include the error info in the error message.
Suggested by Konstantin Kharlamov <Hi-Angel@yandex.ru>.
(package-refresh-contents, package-menu--perform-transaction):
Use `error-message-string`.
john muhl [Thu, 26 Dec 2024 00:03:50 +0000 (18:03 -0600)]
Fix comment indent in 'lua-ts-mode' and old grammar
* lisp/progmodes/lua-ts-mode.el (lua-ts--simple-indent-rules):
Improve multi-line comment indention for pre-0.0.19 grammars that
used a different structure for comment start/end markers.
(Bug#75107)
This patch fixes various problems preventing this script from
working. The job of this script is to collect Emacs' dependanicies and
the (MSYS2/MinGW64) source archives for dependancies (including 2nd
etc. order dependancies) into zip archives. GPL requires distributing such
archives (along with Emacs' own sources) when distributing GPL binaries.
Most principle of the changes is support for MSYS2 "w64" source archives
in zst format; previously this script assumed all sources were available
as tar.gz files. Additionaly several DLLs are added to list of
required, including sqllite3 and tree-sitter.
In general this is a maintaince fix to ensure others have access to the
code used to create pretest (and, presumably release) version of Emacs
30. Additional changes are required to progmatically identify changes
in Emacs' dependancies (e.g. after building a new Emacs binary for
distribution). There is commented out code to this effect in the
changes I've installed which did work, for a brief period in time; I
suspect some changes in MSYS2 made it more difficult (or impossible?) to
invoke the MSYS2 shell (under which this python script must run) from
the MINGW64 (under which Emacs is built). I may resort to a powershell
script as a way to orchistrate/invoke both MSYS2 and MING64 but I'm
currently still messing with a Makefile based approach (which would run
under MINGW64), in any event I believe we're all agreed this script
must interigate Emacs to create the "starting list" of dependancies to
include as a way to resolve this issue (missing/incorrect deps are
frequent source of broken binary releases). (bug#65206)
Corwin Brust [Mon, 23 Dec 2024 05:08:08 +0000 (23:08 -0600)]
* admin/nt/dist-build/emacs.nsi: (Uninstall) delete only one Emacs
Previously, the uninstaller would recursively, unconditionally, remove
the parent folder in which Emacs was installed (the folder selected by
when running the installer), into which the installer places a folder
named for the given release (e.g. emacs-30.1). This was a problem
during uinstalation when the selected folder contained other versions of
Emacs the user did not wish to remove. Additionally, deleting Start Menu
short-cuts did not work (bug#68756).
Some installer language now better reflects that users are not
required to "Accept" the GNU Public License in order to use (etc.)
Emacs (bug#67667).
Users selections related to where to create (or not create) Start Menu
shortcuts are no longer ignored. (bug#75013)
Emacs (as installed by the installer) can now be uninstalled via
Windows' Add/Remove Progrms Control Panel.
The uninstaller will now remove (empty) parent folders, both under
Program Files and (when creation of shortcuts is enabled) under the
select Start Menu location.
Paul Eggert [Thu, 26 Dec 2024 23:44:34 +0000 (15:44 -0800)]
Don’t include stdlib.h from conf_post.h
This is brittle, as evinced by the recent problem with lib/stdlib.c.
* src/conf_post.h: Move potential inclusion of stdlib.h and
redefinitions of malloc, free, realloc, aligned_alloc, and calloc
from here ...
* src/lisp.h: ... to here. Do not redefine the symbols
if UNEXMACOS_C is defined.
* src/unexmacosx.c: Do not undef malloc, realloc, free.
(UNEXMACOS_C): New symbol, to prevent lisp.h from defining them.
Paul Eggert [Mon, 23 Dec 2024 22:03:06 +0000 (14:03 -0800)]
Let Gnulib deal with MB_CUR_MAX
Recent Gnulib should work around the Android NDK 16
MB_CUR_MAX bug, so Emacs no longer needs to worry about it.
* configure.ac (gl_STDLIB_H):
Remove, to stop overriding Gnulib.
* configure.ac (__ctype_get_mb_cur_max)
(emacs_cv_broken_mb_cur_max, REPLACEMENT_MB_CUR_MAX):
* src/conf_post.h (MB_CUR_MAX):
Remove, as Gnulib does this now.
Stefan Kangas [Thu, 26 Dec 2024 20:17:28 +0000 (21:17 +0100)]
Improve flag variable names in uniquify
* lisp/uniquify.el (uniquify-after-kill-buffer-flag)
(uniquify-trailing-separator-flag): Rename from
'uniquify-after-kill-buffer-p' and 'uniquify-trailing-separator-p', to
better adhere to our conventions. Update all users and leave old names
as obsolete variable aliases.
Visuwesh [Thu, 26 Dec 2024 11:49:41 +0000 (17:19 +0530)]
Ensure Dired window is selected when reverting buffer
* lisp/dired.el (dired--make-directory-clickable): Ensure the
Dired window is selected. This prevents erroneously reverting a
non-Dired buffer. (Bug#74700)
Morgan Willcock [Wed, 25 Dec 2024 09:47:42 +0000 (09:47 +0000)]
Set marker insertion type for Imenu markers
* lisp/imenu.el (imenu-default-create-index-function)
(imenu--generic-function): Configure Imenu markers to advance
their position when characters are inserted at the marker
position. (Bug#75072)
Visuwesh [Thu, 12 Dec 2024 13:28:37 +0000 (18:58 +0530)]
Show the keybinding next to command in calc's x
* lisp/calc/calc-ext.el (calc-execute-extended-command): Use
M-x's ':affixation-function' to show the keybinding of the calc
command next to its name. (Bug#74829)
Dmitry Gutov [Thu, 26 Dec 2024 04:17:40 +0000 (06:17 +0200)]
ruby-ts--s-p-query: Put '_' syntax on ?! method definitions
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--s-p-query):
Put 'symbol' syntax on method definitions ending with [?!].
Reported in https://github.com/dgutov/robe/issues/149.
Juri Linkov [Wed, 25 Dec 2024 17:52:10 +0000 (19:52 +0200)]
* lisp/treesit.el: Improvements for treesit-explore-mode (bug#75079)
(treesit-explorer-switch-parser): Don't use completing-read
on the single parser.
(treesit-explore-mode): Don't save treesit-explore-mode to the desktop.
Nicholas Vollmer [Tue, 23 Jan 2024 14:39:02 +0000 (09:39 -0500)]
Fix checkdoc warnings in dictionary.el
* lisp/net/dictionary.el (dictionary-tool-bar-map): Add missing period.
(dictionary-process-popup-replies)
(dictionary-read-definition)
(dictionary-display-tooltip): Rename ignored parameters.
(dictionary-tooltip-track-mouse): Describe what function does, not just
when.
(dictionary-switch-tooltip-mode): Reword docstring in terms of ON
parameter. (Bug#68684)
Yuan Fu [Tue, 24 Dec 2024 21:17:51 +0000 (13:17 -0800)]
Add treesit-aggregated-simple-imenu-settings
Now we support setting up Imenu for multiple languages
* doc/lispref/modes.texi: Update manual.
* lisp/treesit.el:
(treesit-aggregated-simple-imenu-settings): New variable.
(treesit--imenu-merge-entries): New function.
(treesit--generate-simple-imenu): This was previously
treesit-simple-imenu.
(treesit-simple-imenu): Support
treesit-aggregated-simple-imenu-settings.
(treesit-major-mode-setup): Recognize
treesit-aggregated-simple-imenu-settings.
* test/src/treesit-tests.el (treesit-imenu): New test.
Yuan Fu [Tue, 24 Dec 2024 05:19:32 +0000 (21:19 -0800)]
Add treesit-language-display-name
* lisp/treesit.el:
(treesit-language-display-name-alist): New variable.
(treesit-language-display-name): New function.
* doc/lispref/parsing.texi (Language Grammar): Add to manual.
* etc/NEWS: Add to NEWS.
Juri Linkov [Tue, 24 Dec 2024 07:40:21 +0000 (09:40 +0200)]
* lisp/progmodes/typescript-ts-mode.el: Fix regexp-opt of treesit-thing.
(typescript-ts-base-mode): Add arg 'symbols' to regexp-opt of 'sexp',
'sexp-list', 'sentence', 'text' (bug#73404, bug#74366, bug#74963).
(tsx-ts-mode): Add arg 'symbols' to regexp-opt of 'sexp', 'sentence'.
This avoids such mismatches as "string_fragment" by "string".
Martin Rudalics [Mon, 23 Dec 2024 09:59:11 +0000 (10:59 +0100)]
Make 'fit-frame-to-buffer' work around size hints (Bug#74866)
* lisp/window.el (fit-frame-to-buffer-1): When
'frame-resize-pixelwise' is nil, round up requested sizes to avoid
that lines get wrapped (Bug#74866).
* doc/lispref/windows.texi (Resizing Windows): Mention that with
size hints one may have to set 'frame-resize-pixelwise' to make
'fit-frame-to-buffer' fit the buffer exactly.
Juri Linkov [Sun, 22 Dec 2024 19:15:18 +0000 (21:15 +0200)]
Add treesit thing 'sexp-list' to typescript-ts-mode (bug#73404)
* lisp/progmodes/typescript-ts-mode.el (typescript-ts-base-mode):
Add 'sexp-list' to 'treesit-thing-settings'.
(typescript-ts-mode--sexp-list-nodes): New variable.
Stefan Kangas [Sun, 22 Dec 2024 01:57:45 +0000 (02:57 +0100)]
Match more gdbinit files in auto-mode-alist
* lisp/files.el (auto-mode-alist): Match more gdbinit files,
including XDG, and MS-Windows. Avoid false positives.
(set-auto-mode--find-matching-alist-entry): Break out function...
(set-auto-mode--apply-alist): ...from here. (Bug#74946)
* test/lisp/files-tests.el (files-tests--check-mode): New function.
(files-tests-auto-mode-alist): New test.