From 46fd10a760012ced5be15ceab42637e0a2221567 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Wed, 29 Mar 2023 10:55:18 +0200 Subject: [PATCH 01/17] * doc/misc/tramp.texi (Remote shell setup): Clarify use of ssh RemoteCommand. --- doc/misc/tramp.texi | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 468bdfdbcba..f9617f7a5cd 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -1,5 +1,5 @@ \input texinfo @c -*- mode: texinfo; coding: utf-8 -*- -@setfilename ../info/tramp +@setfilename ../../info/tramp.info @c %**start of header @include docstyle.texi @c In the Tramp GIT, the version number and the bug report address @@ -2372,10 +2372,11 @@ This uses also the settings in @code{tramp-sh-extra-args}. @vindex RemoteCommand@r{, ssh option} @strong{Note}: If you use an @option{ssh}-based method for connection, do @emph{not} set the @option{RemoteCommand} option in your -@command{ssh} configuration, for example to @command{screen}. On the -other hand, some @option{ssh}-based methods, like @option{sshx} or -@option{scpx}, silently overwrite a @option{RemoteCommand} option of -the configuration file. +@command{ssh} configuration to something like @command{screen}. If +used, @option{RemoteCommand} must open an interactive shell on the +remote host. On the other hand, some @option{ssh}-based methods, like +@option{sshx} or @option{scpx}, silently overwrite a +@option{RemoteCommand} option of the configuration file. @subsection Other remote shell setup hints From e45bd10a3d9cc4be676e43714ea6fb2068b8e614 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 29 Mar 2023 14:56:20 +0300 Subject: [PATCH 02/17] Fix indentation regression in 'C-h l' * lisp/help.el (view-lossage): Fix indentation of commands when the key sequence includes a semicolon. (Bug#62453) --- lisp/help.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/help.el b/lisp/help.el index 3e94b5046e5..6eac037df2c 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -689,6 +689,10 @@ To record all your input, use `open-dribble-file'." (with-current-buffer standard-output (goto-char (point-min)) (let ((comment-start ";; ") + ;; Prevent 'comment-indent' from handling a single + ;; semicolon as the beginning of a comment. + (comment-start-skip ";; ") + (comment-use-syntax nil) (comment-column 24)) (while (not (eobp)) (comment-indent) From 09fece5722f6a6235936526991092fa444e0bd8c Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 29 Mar 2023 21:27:09 +0300 Subject: [PATCH 03/17] Fix duplicate defcustom in eww.el * lisp/net/eww.el (eww-default-download-directory): Renamed back from 'eww-download-directory'; all users changed. Doc fix. (Bug#62531) --- lisp/net/eww.el | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lisp/net/eww.el b/lisp/net/eww.el index 9451083f396..bc5f3e38ed5 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -64,8 +64,9 @@ The action to be taken can be further customized via :version "28.1" :type 'regexp) -(defcustom eww-download-directory "~/Downloads/" - "Default directory where `eww' saves downloaded files." +(defcustom eww-default-download-directory "~/Downloads/" + "Default directory where `eww' saves downloaded files. +Used by `eww--download-directory', which see." :version "29.1" :group 'eww :type 'directory) @@ -76,10 +77,10 @@ The default is specified by `eww-download-directory'; however, if that directory doesn't exist and the DOWNLOAD XDG user directory is defined, use the latter instead." (or (and (file-exists-p eww-download-directory) - eww-download-directory) + eww-default-download-directory) (when-let ((dir (xdg-user-dir "DOWNLOAD"))) (file-name-as-directory dir)) - eww-download-directory)) + eww-default-download-directory)) (defcustom eww-download-directory 'eww--download-directory "Directory where files will downloaded. From a14c3f62a67d1a5fa423cd3818ede870f2596a09 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 29 Mar 2023 21:28:02 +0300 Subject: [PATCH 04/17] ; Fix last change --- lisp/net/eww.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/net/eww.el b/lisp/net/eww.el index bc5f3e38ed5..d42429e53aa 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -76,7 +76,7 @@ Used by `eww--download-directory', which see." The default is specified by `eww-download-directory'; however, if that directory doesn't exist and the DOWNLOAD XDG user directory is defined, use the latter instead." - (or (and (file-exists-p eww-download-directory) + (or (and (file-exists-p eww-default-download-directory) eww-default-download-directory) (when-let ((dir (xdg-user-dir "DOWNLOAD"))) (file-name-as-directory dir)) From c98929c7e184740a7d68e63a2a619a436e00d813 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 29 Mar 2023 21:28:53 +0300 Subject: [PATCH 05/17] ; Fix last change --- lisp/net/eww.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/net/eww.el b/lisp/net/eww.el index d42429e53aa..22b078217bd 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -73,7 +73,7 @@ Used by `eww--download-directory', which see." (defun eww--download-directory () "Return the name of the EWW download directory. -The default is specified by `eww-download-directory'; however, +The default is specified by `eww-default-download-directory'; however, if that directory doesn't exist and the DOWNLOAD XDG user directory is defined, use the latter instead." (or (and (file-exists-p eww-default-download-directory) From ab4273056e0ab68a27fe807b16e2995bf84b72ec Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Wed, 29 Mar 2023 18:02:30 +0200 Subject: [PATCH 06/17] Comp fix calls to redefined primtives with op-bytecode (bug#61917) * test/src/comp-tests.el (61917-1): New test. * src/comp.c (syms_of_comp): New variable. * lisp/loadup.el: Store primitive arities before dumping. * lisp/emacs-lisp/comp.el (comp--func-arity): New function. (comp-emit-set-call-subr): Make use of `comp--func-arity'. --- lisp/emacs-lisp/comp.el | 41 +++++++++++++++++++++++------------------ lisp/loadup.el | 6 ++++++ src/comp.c | 8 ++++++++ test/src/comp-tests.el | 18 +++++++++++++++++- 4 files changed, 54 insertions(+), 19 deletions(-) diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 283c00103b5..e97832455b9 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -1763,27 +1763,32 @@ Return value is the fall-through block name." (_ (signal 'native-ice "missing previous setimm while creating a switch")))) +(defun comp--func-arity (subr-name) + "Like `func-arity' but invariant against primitive redefinitions. +SUBR-NAME is the name of function." + (or (gethash subr-name comp-subr-arities-h) + (func-arity subr-name))) + (defun comp-emit-set-call-subr (subr-name sp-delta) "Emit a call for SUBR-NAME. SP-DELTA is the stack adjustment." - (let ((subr (symbol-function subr-name)) - (nargs (1+ (- sp-delta)))) - (let* ((arity (func-arity subr)) - (minarg (car arity)) - (maxarg (cdr arity))) - (when (eq maxarg 'unevalled) - (signal 'native-ice (list "subr contains unevalled args" subr-name))) - (if (eq maxarg 'many) - ;; callref case. - (comp-emit-set-call (comp-callref subr-name nargs (comp-sp))) - ;; Normal call. - (unless (and (>= maxarg nargs) (<= minarg nargs)) - (signal 'native-ice - (list "incoherent stack adjustment" nargs maxarg minarg))) - (let* ((subr-name subr-name) - (slots (cl-loop for i from 0 below maxarg - collect (comp-slot-n (+ i (comp-sp)))))) - (comp-emit-set-call (apply #'comp-call (cons subr-name slots)))))))) + (let* ((nargs (1+ (- sp-delta))) + (arity (comp--func-arity subr-name)) + (minarg (car arity)) + (maxarg (cdr arity))) + (when (eq maxarg 'unevalled) + (signal 'native-ice (list "subr contains unevalled args" subr-name))) + (if (eq maxarg 'many) + ;; callref case. + (comp-emit-set-call (comp-callref subr-name nargs (comp-sp))) + ;; Normal call. + (unless (and (>= maxarg nargs) (<= minarg nargs)) + (signal 'native-ice + (list "incoherent stack adjustment" nargs maxarg minarg))) + (let* ((subr-name subr-name) + (slots (cl-loop for i from 0 below maxarg + collect (comp-slot-n (+ i (comp-sp)))))) + (comp-emit-set-call (apply #'comp-call (cons subr-name slots))))))) (eval-when-compile (defun comp-op-to-fun (x) diff --git a/lisp/loadup.el b/lisp/loadup.el index 46b26750cd5..1cc70348267 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -476,7 +476,13 @@ lost after dumping"))) ;; At this point, we're ready to resume undo recording for scratch. (buffer-enable-undo "*scratch*") +(defvar comp-subr-arities-h) (when (featurep 'native-compile) + ;; Save the arity for all primitives so the compiler can always + ;; retrive it even in case of redefinition. + (mapatoms (lambda (f) + (when (subr-primitive-p (symbol-function f)) + (puthash f (func-arity f) comp-subr-arities-h)))) ;; Fix the compilation unit filename to have it working when ;; installed or if the source directory got moved. This is set to be ;; a pair in the form of: diff --git a/src/comp.c b/src/comp.c index 1fce108fea4..3f72d088a66 100644 --- a/src/comp.c +++ b/src/comp.c @@ -5910,6 +5910,14 @@ For internal use. */); Vcomp_loaded_comp_units_h = CALLN (Fmake_hash_table, QCweakness, Qvalue, QCtest, Qequal); + DEFVAR_LISP ("comp-subr-arities-h", Vcomp_subr_arities_h, + doc: /* Hash table recording the arity of Lisp primitives. +This is in case they are redefined so the compiler still knows how to +compile calls to them. +subr-name -> arity +For internal use. */); + Vcomp_subr_arities_h = CALLN (Fmake_hash_table, QCtest, Qequal); + Fprovide (intern_c_string ("native-compile"), Qnil); #endif /* #ifdef HAVE_NATIVE_COMP */ diff --git a/test/src/comp-tests.el b/test/src/comp-tests.el index 926ba27e563..c5e5b346adb 100644 --- a/test/src/comp-tests.el +++ b/test/src/comp-tests.el @@ -446,7 +446,7 @@ https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-03/msg00914.html." (should (equal comp-test-primitive-advice '(3 4)))) (advice-remove #'+ f)))) -(defvar comp-test-primitive-redefine-args) +(defvar comp-test-primitive-redefine-args nil) (comp-deftest primitive-redefine () "Test effectiveness of primitive redefinition." (cl-letf ((comp-test-primitive-redefine-args nil) @@ -532,6 +532,22 @@ https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-03/msg00914.html." (should (subr-native-elisp-p (symbol-function 'comp-test-48029-nonascii-žžž-f)))) +(comp-deftest 61917-1 () + "Verify we can compile calls to redefined primitives with +dedicated byte-op code." + (let (x + (f (lambda (fn &rest args) + (setq comp-test-primitive-redefine-args args)))) + (advice-add #'delete-region :around f) + (unwind-protect + (setf x (native-compile + '(lambda () + (delete-region 1 2)))) + (should (subr-native-elisp-p x)) + (funcall x) + (advice-remove #'delete-region f) + (should (equal comp-test-primitive-redefine-args '(1 2)))))) + ;;;;;;;;;;;;;;;;;;;;; ;; Tromey's tests. ;; From 9b32bc134c4b4d8928df1bdc39907d9b1d6c73b5 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 30 Mar 2023 09:09:43 +0300 Subject: [PATCH 07/17] Improve documentation of 'defcustom's :set keyword * lisp/custom.el (defcustom): * doc/lispref/customize.texi (Variable Definitions): Improve the documentation of the :set keyword in 'defcustom'. --- doc/lispref/customize.texi | 9 ++++++++- lisp/custom.el | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi index 308145def55..6015c134d21 100644 --- a/doc/lispref/customize.texi +++ b/doc/lispref/customize.texi @@ -378,8 +378,15 @@ the option as a Lisp variable); preferably, though, it should not modify its value argument destructively. The default for @var{setfunction} is @code{set-default-toplevel-value}. +If defined, @var{setfunction} will also be called when evaluating a +@code{defcustom} form with @kbd{C-M-x} in Emacs Lisp mode and when the +@var{option}'s value is changed via the @code{setopt} macro +(@pxref{Setting Variables, setopt}). + If you specify this keyword, the variable's documentation string -should describe how to do the same job in hand-written Lisp code. +should describe how to do the same job in hand-written Lisp code, +either by invoking @var{setfunction} directly or by using +@code{setopt}. @item :get @var{getfunction} @kindex get@r{, @code{defcustom} keyword} diff --git a/lisp/custom.el b/lisp/custom.el index 0522bdd447b..df6db181615 100644 --- a/lisp/custom.el +++ b/lisp/custom.el @@ -280,7 +280,9 @@ The following keywords are meaningful: when using the Customize user interface. It takes two arguments, the symbol to set and the value to give it. The function should not modify its value argument destructively. The default choice - of function is `set-default-toplevel-value'. + of function is `set-default-toplevel-value'. If this keyword is + defined, modifying the value of SYMBOL via `setopt' will call the + function specified by VALUE to install the new value. :get VALUE should be a function to extract the value of symbol. The function takes one argument, a symbol, and should return the current value for that symbol. The default choice of function From 10918fc9d249fb829a363a4b73847289b8f2bce9 Mon Sep 17 00:00:00 2001 From: Shynur Date: Thu, 30 Mar 2023 01:29:17 +0800 Subject: [PATCH 08/17] Fix scrolling window when point moves up This fixes the case when both 'scroll-conservatively' and 'scroll-step' are customized to non-default values. * src/xdisp.c (try_scrolling): Fix precedence between 'scroll-step' and 'scroll-conservatively' when scrolling with 'previous-line'. (Bug#62530) Copyright-paperwork-exempt: yes --- src/xdisp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index 0b190529404..8e265fb5a49 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -18546,8 +18546,9 @@ try_scrolling (Lisp_Object window, bool just_this_one_p, start_display (&it, w, startp); if (arg_scroll_conservatively) - amount_to_scroll = max (dy, frame_line_height - * max (scroll_step, temp_scroll_step)); + amount_to_scroll + = min (max (dy, frame_line_height), + frame_line_height * arg_scroll_conservatively); else if (scroll_step || temp_scroll_step) amount_to_scroll = scroll_max; else From d2e82817a3f341e426c220e98048e1784d1e3076 Mon Sep 17 00:00:00 2001 From: Yuan Fu Date: Fri, 24 Mar 2023 16:45:15 -0700 Subject: [PATCH 09/17] Add two typescript-ts-mode faces (bug#62429) * lisp/progmodes/typescript-ts-mode.el: (typescript-ts-mode-jsx-tag-face) (typescript-ts-mode-jsx-attribute-face): New faces. (typescript-ts-mode--font-lock-settings): Use new faces. (tsx-ts-mode): Mention the new faces in the docstring. --- lisp/progmodes/typescript-ts-mode.el | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/lisp/progmodes/typescript-ts-mode.el b/lisp/progmodes/typescript-ts-mode.el index a9ca85d5d35..23815c79906 100644 --- a/lisp/progmodes/typescript-ts-mode.el +++ b/lisp/progmodes/typescript-ts-mode.el @@ -41,6 +41,16 @@ :safe 'integerp :group 'typescript) +(defface typescript-ts-jsx-tag-face + '((t . (:inherit font-lock-function-call-face))) + "Face for HTML tags like
and

in JSX." + :group 'typescript) + +(defface typescript-ts-jsx-attribute-face + '((t . (:inherit font-lock-constant-face))) + "Face for HTML attributes like name and id in JSX." + :group 'typescript) + (defvar typescript-ts-mode--syntax-table (let ((table (make-syntax-table))) ;; Taken from the cc-langs version @@ -284,17 +294,17 @@ Argument LANGUAGE is either `typescript' or `tsx'." :feature 'jsx `((jsx_opening_element [(nested_identifier (identifier)) (identifier)] - @font-lock-function-call-face) + @typescript-ts-jsx-tag-face) (jsx_closing_element [(nested_identifier (identifier)) (identifier)] - @font-lock-function-call-face) + @typescript-ts-jsx-tag-face) (jsx_self_closing_element [(nested_identifier (identifier)) (identifier)] - @font-lock-function-call-face) + @typescript-ts-jsx-tag-face) - (jsx_attribute (property_identifier) @font-lock-constant-face)) + (jsx_attribute (property_identifier) @typescript-ts-jsx-attribute-face)) :language language :feature 'number @@ -381,7 +391,12 @@ Argument LANGUAGE is either `typescript' or `tsx'." ;;;###autoload (define-derived-mode tsx-ts-mode typescript-ts-base-mode "TypeScript[TSX]" - "Major mode for editing TypeScript." + "Major mode for editing TSX and JSX documents. + +This major mode defines two additional JSX-specific faces: +`typescript-ts-jsx-attribute-face' and +`typescript-ts-jsx-attribute-face' that are used for HTML tags +and attributes, respectively." :group 'typescript :syntax-table typescript-ts-mode--syntax-table From 4508a024e81834cfb01c6f7984182e1a6cbb91ea Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 30 Mar 2023 16:34:41 +0300 Subject: [PATCH 10/17] ; Clarify documentation of 'cursor' text property * doc/lispref/text.texi (Special Properties): Clarify that 'cursor' property is only considered when the overlay hides buffer text on display. (Bug#62540) --- doc/lispref/text.texi | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 0a48beab8b8..4c13185b0dd 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -3765,18 +3765,19 @@ Consecutive characters with the same @code{field} property constitute a @item cursor @kindex cursor @r{(text property)} Normally, the cursor is displayed at the beginning or the end of any -overlay and text property strings present at the current buffer -position. You can instead tell Emacs to place the cursor on any -desired character of these strings by giving that character a -non-@code{nil} @code{cursor} text property. In addition, if the value -of the @code{cursor} property is an integer, it specifies the number -of buffer's character positions, starting with the position where the -overlay or the @code{display} property begins, for which the cursor -should be displayed on that character. Specifically, if the value of -the @code{cursor} property of a character is the number @var{n}, the -cursor will be displayed on this character for any buffer position in -the range @code{[@var{ovpos}..@var{ovpos}+@var{n})}, where @var{ovpos} -is the overlay's starting position given by @code{overlay-start} +overlay and text property strings that ``hide'' (i.e., are displayed +instead of) the current buffer position. You can instead tell Emacs +to place the cursor on any desired character of these strings by +giving that character a non-@code{nil} @code{cursor} text property. +In addition, if the value of the @code{cursor} property is an integer, +it specifies the number of buffer's character positions, starting with +the position where the overlay or the @code{display} property begins, +for which the cursor should be displayed on that character. +Specifically, if the value of the @code{cursor} property of a +character is the number @var{n}, the cursor will be displayed on this +character for any buffer position in the range +@code{[@var{ovpos}..@var{ovpos}+@var{n})}, where @var{ovpos} is the +overlay's starting position given by @code{overlay-start} (@pxref{Managing Overlays}), or the position where the @code{display} text property begins in the buffer. From d23dc3dd7e31526e5748332614ab4501984ad625 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 30 Mar 2023 23:24:08 +0200 Subject: [PATCH 11/17] ; * lisp/emacs-lisp/package-vc.el (package-vc): Fix manual reference --- lisp/emacs-lisp/package-vc.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el index 253b35f1f1a..d57095a83d1 100644 --- a/lisp/emacs-lisp/package-vc.el +++ b/lisp/emacs-lisp/package-vc.el @@ -58,7 +58,7 @@ (defgroup package-vc nil "Manage packages from VC checkouts." :group 'package - :link '(custom-manual "(emacs) Package from Source") + :link '(custom-manual "(emacs) Fetching Package Sources") :prefix "package-vc-" :version "29.1") From 59f66ea3027fc7b6c1eb977b47de0bd8d610d3c3 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 30 Mar 2023 23:25:20 +0200 Subject: [PATCH 12/17] ; * lisp/emacs-lisp/package-vc.el: Remove completed item from TODO --- lisp/emacs-lisp/package-vc.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el index d57095a83d1..2b73e187b14 100644 --- a/lisp/emacs-lisp/package-vc.el +++ b/lisp/emacs-lisp/package-vc.el @@ -41,9 +41,6 @@ ;; - Allow maintaining patches that are ported back onto regular ;; packages and maintained between versions. -;; -;; - Add a heuristic for guessing a `:lisp-dir' when cloning directly -;; from a URL. ;;; Code: From 0622e1f29f6e4c7a361f5e78ac09bed6466c4b57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Thu, 30 Mar 2023 19:47:00 +0100 Subject: [PATCH 13/17] Eglot: ensure server shutdown turns off eglot-inlay-hints-mode * lisp/progmodes/eglot.el (eglot--managed-mode-off): Turn off eglot-inlay-hints-mode. --- lisp/progmodes/eglot.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index b4116dc4aaf..3f5245397a0 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -1886,6 +1886,7 @@ Use `eglot-managed-p' to determine if current buffer is managed.") (defun eglot--managed-mode-off () "Turn off `eglot--managed-mode' unconditionally." (remove-overlays nil nil 'eglot--overlay t) + (eglot-inlay-hints-mode -1) (eglot--managed-mode -1)) (defun eglot-current-server () From 131ec049db03a3a90c887edf67a8de86ab47008a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Thu, 30 Mar 2023 23:52:27 +0100 Subject: [PATCH 14/17] Eglot: unbreak eglot-extend-to-xref on w32 Because of a drive-letter casing mismatch between 'buffer-file-name' and the return value of 'url-generic-parse-url', the hash-table test 'equal' in 'eglot-current-server' failed. This failed to recognize that the file xref landed us on really is managed by the language server that facilitated that jump. The function w32-long-file-name seems to convert "C:/Users/" to "c:/Users" consistently and so is a good addition to eglot--uri-to-path. * lisp/progmodes/eglot.el (eglot--uri-to-path): Use w32-long-file-name. --- lisp/progmodes/eglot.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 3f5245397a0..8f64f849d72 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -1620,10 +1620,9 @@ If optional MARKER, return a marker instead" (normalized (if (and (not remote-prefix) (eq system-type 'windows-nt) (cl-plusp (length retval))) - (substring retval 1) + (w32-long-file-name (substring retval 1)) retval))) (concat remote-prefix normalized)) - uri))) (defun eglot--snippet-expansion-fn () From b2fbec37f3909cb3274689b1f10bee6b187a759f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Thu, 30 Mar 2023 23:55:57 +0100 Subject: [PATCH 15/17] ; * etc/EGLOT-NEWS: Clarify scope of topmost section --- etc/EGLOT-NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/EGLOT-NEWS b/etc/EGLOT-NEWS index dc77e4fe624..d10412afd33 100644 --- a/etc/EGLOT-NEWS +++ b/etc/EGLOT-NEWS @@ -18,7 +18,7 @@ That is, to look up issue github#1234, go to https://github.com/joaotavora/eglot/issues/1234. -* Changes in Eglot 1.12 (13/03/2023) +* Changes in Eglot bundled with Emacs 29 ** LSP inlay hints are now supported. Inlay hints are small text annotations not unlike diagnostics, but From d0eb12e8d3c9d6f95b8493e05857d583c29dd0fe Mon Sep 17 00:00:00 2001 From: Shynur Date: Fri, 31 Mar 2023 19:49:39 +0800 Subject: [PATCH 16/17] Fix typo in section 14.1 of Emacs Manual * doc/emacs/display.texi (Scrolling): Fix typo. (Bug#62569) Copyright-paperwork-exempt: yes --- doc/emacs/display.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 7ec843180b8..6b2eb014c82 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -154,7 +154,7 @@ the buffer will be momentarily unfontified. @vindex redisplay-skip-fontification-on-input Finally, a third alternative to these variables is @code{redisplay-skip-fontification-on-input}. If this variable is -non-@code{nil}, skip some fontifications is there's input pending. +non-@code{nil}, skip some fontifications if there's input pending. This usually does not affect the display because redisplay is completely skipped anyway if input was pending, but it can make scrolling smoother by avoiding unnecessary fontification. From 3bdbb66efb9895b8ed55270075fa7d8329f8d36b Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 31 Mar 2023 16:18:09 +0300 Subject: [PATCH 17/17] ; CONTRIBUTE: Minor stylistic changes. --- CONTRIBUTE | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTE b/CONTRIBUTE index 674b4e5b18c..82e5b0a1018 100644 --- a/CONTRIBUTE +++ b/CONTRIBUTE @@ -110,7 +110,7 @@ admin/notes/bug-triage. Any change that matters to end-users should have an entry in etc/NEWS. Try to start each NEWS entry with a sentence that summarizes the entry -and takes just one line -- this will allow to read NEWS in Outline +and takes just one line -- this will allow reading NEWS in Outline mode after hiding the body of each entry. Doc-strings should be updated together with the code. @@ -123,7 +123,7 @@ Think about whether your change requires updating the manuals. If you know it does not, mark the NEWS entry with "---". If you know that *all* the necessary documentation updates have been made as part of your changes or those by others, mark the entry with "+++". -Otherwise do not mark it. +Otherwise, do not mark it. If your change requires updating the manuals to document new functions/commands/variables/faces, then use the proper Texinfo @@ -400,7 +400,7 @@ the commit to master, by starting the commit message with "Backport:". The gitmerge function excludes these commits from the merge to the master. Some changes should not be merged to master at all, for whatever -reasons. These should be marked by including something like "Do not +reason. These should be marked by including something like "Do not merge to master" or anything that matches gitmerge-skip-regexp (see admin/gitmerge.el) in the commit message. @@ -449,8 +449,8 @@ files intended for use only with Emacs version 24.5 and later. *** Useful files in the admin/ directory -See all the files in admin/notes/* . In particular, see -admin/notes/newfile, see admin/notes/repo. +See all the files in 'admin/notes/*'. In particular, see +'admin/notes/newfile' and 'admin/notes/repo'. The file admin/MAINTAINERS records the areas of interest of frequent Emacs contributors. If you are making changes in one of the files