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.
Cecilio Pardo [Sun, 15 Dec 2024 00:13:16 +0000 (01:13 +0100)]
Add support for the ':data' keyword for play-sound in MS-Windows.
* src/sound.c (parse_sound) [WINDOWSNT]: Check that either :file
or :data is present.
(do_play_sound): Added parameter to select file or data, and code to
play from data.
(Fplay_sound_internal): Fixed volume format, and send file or data
to 'do_play_sound'. (Bug#74863)
* etc/NEWS: Add entry for this change.
* etc/PROBLEMS: Remove entry about missing support for :data.
JD Smith [Thu, 11 Jul 2024 20:24:17 +0000 (16:24 -0400)]
'seconds-to-string': new optional arguments for readable strings
* lisp/calendar/time-date.el (seconds-to-string): Accept new
optional arguments READABLE, ABBREV, and PRECISION, and format the
output string accordingly. (Bug#71572)
* doc/lispref/os.texi (Time Calculations):
* etc/NEWS: Document the new arguments of 'seconds-to-string'.
Daniel Mendler [Thu, 12 Dec 2024 11:15:10 +0000 (12:15 +0100)]
browse-url-with-browser-kind: Improve browser function selection
In order to find an appropriate browser function for the given
kind, first the browser handler lists are consulted. If no
handler is found, the `browse-url-browser-function',
`browse-url-secondary-browser-function`,
`browse-url-default-browser' and `eww' are tried in that order
until a browser function with a matching kind is found. This
way the user customization of `browse-url-browser-function' and
`browse-url-secondary-browser-function` is respected by
`browse-url-with-browser-kind'.
* lisp/net/browse-url.el (browse-url-with-browser-kind): Try the
browser functions in the aforementioned order. (Bug#74820)
F. Jason Park [Fri, 29 Nov 2024 23:56:47 +0000 (15:56 -0800)]
Use smarter default for erc-server-reconnect-function
* doc/misc/erc.texi (Sample Configuration): Remove customization in
`use-package' declaration for `erc-server-reconnect-function' as well as
related language in the customization walk-through. Do this because the
new default incorporates `erc-server-delayed-check-reconnect' behavior
for compatible connect functions.
* etc/ERC-NEWS: Announce new default for `erc-server-reconnect-function'.
* lisp/erc/erc-backend.el (erc-server-reconnect-function): Change
default to `erc-server-prefer-check-reconnect'.
(erc-server-delayed-check-reconnect): Use `process-send-string' instead
of `send-string'.
(erc--server-delayed-check-connectors): New variable.
(erc-server-prefer-check-reconnect): New function.
* test/lisp/erc/erc-scenarios-base-auto-recon.el
(erc-scenarios-base-auto-recon-unavailable)
(erc-scenarios-base-auto-recon-no-proto): Remove unnecessary
`erc-server-reconnect-function' binding because the new default
incorporates the behavior being tested for.
* test/lisp/erc/erc-scenarios-base-buffer-display.el
(erc-scenarios-base-buffer-display--reconnect-common):
* test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el
(erc-scenarios-common--base-compat-no-rename-bouncer):
* test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-base.el
(erc-scenarios-base-netid-bouncer--recon-base):
* test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-both.el
(erc-scenarios-base-netid-bouncer--recon-both):
* test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-id.el
(erc-scenarios-base-netid-bouncer--reconnect-id-foo)
(erc-scenarios-base-netid-bouncer--reconnect-id-bar):
* test/lisp/erc/erc-scenarios-base-reconnect.el
(erc-scenarios-base-reconnect-timer)
(erc-scenarios-base-cancel-reconnect):
* test/lisp/erc/erc-scenarios-services-misc.el
(erc-scenarios-services-misc--reconnect-retry-nick):
* test/lisp/erc/erc-scenarios-stamp.el
(erc-scenarios-stamp--date-mode/reconnect): Explicitly bind
`erc-server-reconnect-function' to `erc-server-delayed-reconnect', the
former default, which does not do any probing. (Bug#62044)
F. Jason Park [Tue, 23 Apr 2024 01:11:24 +0000 (18:11 -0700)]
Add command for teaching Imenu about ERC macros
* lisp/erc/erc-backend.el (define-erc-response-handler): Add
`doc-string' to `declare' specification.
* test/lisp/erc/resources/erc-tests-common.el
(erc-tests-common-add-imenu-expressions): New function for defining and
undefining Imenu patterns useful to ERC developers.
F. Jason Park [Wed, 18 Dec 2024 01:53:34 +0000 (17:53 -0800)]
Disable which-func-mode in erc-imenu buffers
* lisp/erc/erc-imenu.el (erc-imenu-setup): Move after module definition
so the variable `erc-imenu-mode' is defined. Run teardown code when
module is deactivated. Set `which-func-mode' to nil locally.
(erc-imenu-mode, erc-imenu-enable, erc-imenu-disable): Manage membership
of `erc-imenu--disable-which-func' in `which-function-mode-hook'.
(erc-imenu--disable-which-func): New function. (Bug#74934)
Some completion resolution requests in
eglot-completion-at-point, specifically those that might be
triggered from the :exit function, can't be cancellable, else
the completion edit or snippet will never be obtained and the
user is left with the nonsensical completion label in the
buffer.
Eli Zaretskii [Fri, 20 Dec 2024 20:06:06 +0000 (22:06 +0200)]
Autoload 'shortdoc-help-fns-examples-function'
* lisp/help-fns.el (shortdoc-help-fns-examples-function):
Autoload, to allow adding it to
'help-fns-describe-function-functions' as advertised. (Bug#74995)
Martin Rudalics [Fri, 20 Dec 2024 15:25:44 +0000 (16:25 +0100)]
On GTK do not inhibit implied resizing until tool bar was drawn (Bug#74750)
* src/frame.c (frame_inhibit_resize): Under GTK do not inhibit
implied resizing as long as the tool bar has not been drawn yet
so the frame gets its intended initial height (Bug#74750).
* src/gtkutil.c (update_frame_tool_bar): Set tool_bar_resized
slot of frame f to true regardless of whether a tool bar was
made or not. This will make inhibiting implied resizes work
again from now on.
Yuan Fu [Fri, 20 Dec 2024 07:10:32 +0000 (23:10 -0800)]
Add automated process to verify tree-sitter queries
This allows us to inform packagers of the grammar version they
want to use when packaging tree-sitter grammars with Emacs.
* lisp/treesit.el (treesit--builtin-language-sources):
New variable.
(treesit--verify-major-mode-queries):
(treesit-verify-major-mode-queries): New functions.