Gregory Heytings [Mon, 28 Nov 2022 12:17:30 +0000 (12:17 +0000)]
Fix display of long completions.
* lisp/minibuffer.el (completion--insert-strings): Do not assume
"at least 2 columns", which is not possible when completion
strings are long, e.g. with completions-detailed set.
Jim Porter [Mon, 28 Nov 2022 01:22:49 +0000 (17:22 -0800)]
; Don't emit a "Server stopped" message when restarting the Emacs server
* lisp/server.el (server-stop): Return non-nil when we actually stop
the server. Don't message about stopping the server here (but do log
it).
(server-start): Emit the appropriate message about stopping or
restarting the server.
Stefan Kangas [Mon, 28 Nov 2022 00:32:01 +0000 (01:32 +0100)]
Catch more cases in info--ensure-not-in-directory-node
* lisp/info.el (info--ensure-not-in-directory-node): Fix the case
where "DIR" is in upper-case, and if 'Info-current-file' is an
absolute file name.
Problem reported by Eli Zaretskii <eliz@gnu.org>.
Gregory Heytings [Sun, 27 Nov 2022 22:53:20 +0000 (22:53 +0000)]
Minor improvements to locked narrowing
* src/xdisp.c (get_locked_narrowing_begv)
(get_locked_narrowing_zv): Safer handling of negative values.
(handle_fontified_prop): Do not use locked narrowing if the region
size is <= 0.
* src/keyboard.c (safe_run_hooks_maybe_narrowed): Do not use
locked narrowing if the region size is <= 0.
Yuan Fu [Sun, 27 Nov 2022 22:15:57 +0000 (14:15 -0800)]
Remove treesit-comment-start/end and use comment-start/end-skip
treesit-comment-start/end is unnecessary because of
comment-start/end-skip, so they should be removed.
Cleanup and set comment-start/end-skip for tree-sitter C-like major
modes.
I replaced the [ \t]* part in comment-start-skip with (syntax
whitespace), which is what comment-end-skip uses. I also added
grouping in comment-start-skip to match that of comment-end-skip.
* lisp/emacs-lisp/package-vc.el: Replace instances of "source package"
in comments and docstrings.
* lisp/emacs-lisp/package.el: Replace instances of "source package" in
comments and docstrings.
* lisp/progmodes/xref.el (xref--add-log-current-defun):
New function.
(xref--xref-buffer-mode): Assign it buffer-locally to
`add-log-current-defun-function'.
lu4nx [Fri, 25 Nov 2022 06:38:29 +0000 (14:38 +0800)]
Fixed ctags local command execute vulnerability
* lib-src/etags.c:
(clean_matched_file_tag): New function
(do_move_file): New function
(readline_internal):
Add `leave_cr` parameter, if true, include the \r character
* test/manual/etags/CTAGS.good_crlf: New file
* test/manual/etags/CTAGS.good_update: New file
* test/manual/etags/crlf: New file
* test/manual/etags/Makefile: Add `ctags -u` test cases
Po Lu [Sun, 27 Nov 2022 11:17:38 +0000 (19:17 +0800)]
Make frame synchronization more robust
* src/xterm.c (x_sync_wait_for_frame_drawn_event)
(x_sync_handle_frame_drawn): Only cancel frame synchronization
if hanging twice or more in a row.
* src/xterm.h (struct x_output, FRAME_X_DRAW_JUST_HUNG): New
flag.
* lisp/progmodes/csharp-mode.el (c-basic-matchers-before): Remove
invalid string check for Emacs 27.
(version=): Remove compatibility hack for string handling in CC Mode
in Emacs 27.1. (Bug#59602)
Stefan Kangas [Sun, 27 Nov 2022 06:29:54 +0000 (07:29 +0100)]
Improve describe-text-properties display
* lisp/descr-text.el (describe-property-list): Don't propertize white
space with the 'help-argument-name' face. This improves display
slightly when that face has an underline.
Gregory Heytings [Sun, 27 Nov 2022 00:24:40 +0000 (00:24 +0000)]
Improve handling of killed buffers in locked narrowings
* src/editfns.c (narrowing_locks_add, narrowing_locks_remove):
New functions, factored out.
(narrowing_lock_push, narrowing_lock_pop)
(narrowing_locks_restore): Use the new functions.
(narrowing_lock_get_bound): Return NULL for killed buffers.
(reset_outermost_narrowings, unwind_reset_outermost_narrowing):
Remove killed buffers from the 'narrowing_locks' alist.
Yuan Fu [Sat, 26 Nov 2022 23:32:57 +0000 (15:32 -0800)]
Make typescript-ts-mode not fallback to js-mode
1. js-mode might not be able to handle typescript file
2. Now that we use separate modes for tree-sitter modes, not falling
back makes tree-sitter modes more consistent
* lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode): Remove
the fallback code.
Yuan Fu [Sat, 26 Nov 2022 23:31:48 +0000 (15:31 -0800)]
Make bash-ts-mode fall back to sh-mode if the file isn't in Bash
* lisp/progmodes/sh-script.el (sh--guess-shell): Take out into a new
function.
(sh-base-mode): Use the new function.
(bash-ts-mode): Update docstring.
(sh--redirect-recursing): New variable.
(sh--redirect-bash-ts-mode): New function.
Yuan Fu [Sat, 26 Nov 2022 22:54:55 +0000 (14:54 -0800)]
Add treesit-font-lock-level
This replaces font-lock-maximum-decoration and allows us to disable
the busiest fontification level by default.
* lisp/treesit.el (treesit-font-lock-level): New variable.
(treesit-font-lock-feature-list)
(treesit-font-lock-settings): Change docstring.
(treesit-font-lock-recompute-features): Use the new variable.
Jim Porter [Fri, 25 Nov 2022 19:13:06 +0000 (11:13 -0800)]
Improve robustness of server.el tests
* lisp/emacs-lisp/ert.el (ert--insert-infos): Allow 'message' to be a
function that is called when inserting the info.
(ert-info): Update docstring to describe using a function for
MESSAGE-FORM.
* lisp/server.el (server-start): Log when the server is starting.
* test/lisp/server-tests.el (server-tests/can-create-frames-p): New
constant. Use it to skip tests that need to create frames.
(server-tests/start-emacsclient): Rename to...
(server-tests/start-client): ... this, and set the process's buffer.
(server-tests/with-server): Put the server file in a temporary
directory so we don't conflict with real Emacs servers.
(server-tests/with-client): New macro...
(server-tests/server-start/stop-prompt-with-client)
(server-tests/emacsclient/server-edit)
(server-tests/emacsclient/create-frame)
(server-tests/emacsclient/create-frame): ... use it.
(server-tests/server-start/stop-prompt-with-client): Simplify.
Eric Abrahamsen [Sat, 26 Nov 2022 20:12:50 +0000 (12:12 -0800)]
Remove mentions of create-directory nnmaildir setting
* lisp/gnus/nnmaildir.el (nnmaildir-open-server): The
'create-directory server parameter should have been removed entirely,
and supplanted by 'target-prefix. Remove check for old parameter.
* doc/misc/gnus.texi (Maildir): Delete mention from manual.
Gregory Heytings [Sat, 26 Nov 2022 16:13:04 +0000 (16:13 +0000)]
Further improvements to narrowing locks
* src/editfns.c:
(narrowing_lock_get_bound): Return a pointer to a struct
Lisp_Marker instead of a character position. Suggested by Eli
Zaretskii.
(reset_outermost_narrowings, unwind_reset_outermost_narrowing)
(Fwiden, Fnarrow_to_region): Adapt accordingly.
(narrowing_lock_peek_tag, narrowing_lock_push)
(narrowing_lock_pop, narrowing_locks_save)
(narrowing_locks_restore): Use XCAR/XCDR/XSETCAR instead of
Fcar/Fcdr/Fsetcar.
Gregory Heytings [Sat, 26 Nov 2022 14:09:41 +0000 (14:09 +0000)]
Improve locked narrowing around low-level hooks.
* src/buffer.c (syms_of_buffer): Two new variables,
'long-line-locked-narrowing-region-size' and
'long-line-locked-narrowing-bol-search-limit', to make the locked
narrowing around low-level hooks configurable.
Increase the default value of 'long-line-threshold'. After
carefully considering the (few) bug reports about long line
optimizations, I concluded that the previous default value was too
low.
* src/xdisp.c (get_locked_narrowing_begv)
(get_locked_narrowing_zv): Two new functions.
(handle_fontified_prop, reseat): Use them.
* src/keyboard.c (safe_run_hooks_maybe_narrowed): Use them.
* src/dispextern.h (struct it): Add two new fields to store the
values returned by these functions.
Make them externally visible.
Eli Zaretskii [Sat, 26 Nov 2022 10:59:06 +0000 (12:59 +0200)]
Fix generation of autoloads on MS-Windows
* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--file-load-name): Handle the case when FILE and
OUTFILE don't share any common ancestor directory. (Bug#59507)
Po Lu [Sat, 26 Nov 2022 10:57:34 +0000 (18:57 +0800)]
Reduce wasted cycles in x*.c
* src/xfns.c (compute_tip_xy, Fx_show_tip):
* src/xselect.c (x_own_selection, x_get_local_selection)
(x_clear_frame_selections): Call CAR and CDR, not Fcar and Fcdr.
Stefan Kangas [Sat, 26 Nov 2022 08:37:48 +0000 (09:37 +0100)]
Use substitute-command-keys in Info-index error
* lisp/info.el (info--ensure-not-in-directory-node): New helper
function using substitute-command-keys for error message.
(Info-index, Info-virtual-index): Use it.
* lisp/progmodes/typescript-ts-mode.el: Rename from 'ts-mode' to
'typescript-ts-mode'. Rename all symbols to match new prefix.
* etc/NEWS: Mention the new mode name.
Ref: https://lists.gnu.org/r/emacs-devel/2022-11/msg01587.html
Gregory Heytings [Sat, 26 Nov 2022 00:14:15 +0000 (00:14 +0000)]
Save and restore narrowing locks in 'save-restriction'.
* src/editfns.c: (Fsave_restriction): Save and restore narrowing
locks. Suggested by Stefan Monnier.
(narrowing_locks_save, narrowing_locks_restore): Helper functions.
Dmitry Gutov [Sat, 5 Mar 2022 02:28:31 +0000 (04:28 +0200)]
Drop project--value-in-dir
Drop the project--value-in-dir mechanics, where the user could edit
the value in .dir-locals.el and have it applied instantly without
reverting the current buffer. It made working in remote buffers with
enable-remote-dir-locals non-nil slower, which doesn't seem worth it
for a minor improvement of an infrequent operation. Also less
compexity overall.
* lisp/progmodes/project.el (project-try-vc, project-files)
(project--vc-list-files, project-ignores, project-buffers):
Use the user options directly.
(project--vc-merge-submodules-p, project--value-in-dir):
Delete functions.
Gregory Heytings [Fri, 25 Nov 2022 21:43:48 +0000 (21:43 +0000)]
Generic 'with-narrowing' macro.
* lisp/subr.el (with-narrowing): New generic macro, replacing the
'with-locked-narrowing' one. Suggested by Stefan Monnier.
(with-narrowing-1, with-narrowing-2): Helper functions.
Gregory Heytings [Fri, 25 Nov 2022 17:51:01 +0000 (17:51 +0000)]
Reworked locked narrowing.
* src/editfns.c: (narrowing_locks): New alist to hold the narrowing
locks and their buffers.
(narrowing_lock_get_bound, narrowing_lock_peek_tag)
(narrowing_lock_push, narrowing_lock_pop): New functions to access
and update 'narrowing_locks'.
(reset_outermost_narrowings, unwind_reset_outermost_narrowing):
Functions moved from src/xdisp.c, and rewritten with the above
functions.
(Fwiden): Use the above functions. Update docstring.
(Fnarrow_to_region, Fnarrowing_lock, Fnarrowing_unlock): Use the above
functions.
(syms_of_editfns): Remove the 'narrowing-locks' variable.
* src/lisp.h: Make 'reset_outermost_narrowings' externally visible.
* src/xdisp.c (reset_outermost_narrowings)
unwind_reset_outermost_narrowing): Functions moved to src/editfns.c.
* lisp/subr.el (with-locked-narrowing): Improved macro, with a helper
function.
F. Jason Park [Fri, 25 Nov 2022 05:03:03 +0000 (21:03 -0800)]
Disable auth-source-pass-extra-query-keywords by default
* doc/misc/auth.texi: Mention subdomain matching in
`auth-source-pass-extra-query-keywords' section.
* etc/NEWS: Mention the loss of traditional auth-source-pass features
when `auth-source-pass-extra-query-keywords' is enabled.
* lisp/auth-source-pass (auth-source-pass-extra-query-keywords): Set
default to nil. Mention domain matching in doc string.
(auth-source-pass--match-regexp): Allow username to contain "@".
* lisp/erc/erc-compat.el:
(erc-compat--29-auth-source-pass--retrieve-parsed): Adjust regexp.
* test/lisp/auth-source-pass-tests.el
(auth-source-pass-extra-query-keywords--suffixed-user): make plain
username more email-like.
(Bug#58985.)
Alan Mackenzie [Fri, 25 Nov 2022 09:49:02 +0000 (09:49 +0000)]
CC Mode: Fix the "asymmetry rule" for fontifying a type followed by *
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.
Jim Porter [Mon, 21 Nov 2022 19:47:08 +0000 (11:47 -0800)]
Don't explicitly delete client frames when killing Emacs anyway
This eliminates a useless error prompt when killing Emacs from a
client frame when there are no other frames (bug#58877).
* lisp/server.el (server-running-external): New error.
(server--file-name): New function...
(server-eval-at): ... use it.
(server-start): Factor out server stopping code into...
(server-stop): ... here.
(server-force-stop): Use 'server-stop', and tell it not to delete
frames.
* test/lisp/server-tests.el
(server-tests/server-force-stop/keeps-frames): New test.
Jim Porter [Fri, 25 Nov 2022 01:22:53 +0000 (17:22 -0800)]
; Fix up some NEWS entries for Eshell
* etc/NEWS (Incompatible changes in Emacs 29.1): Move an entry from
here...
(Changes in Specialized Modes and Packages in Emacs 29.1): ... to
here. Additionally, improve wording of another entry to be more
precise.