summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorStefan Kangas <stefankangas@gmail.com>2023-03-20 06:30:32 +0100
committerStefan Kangas <stefankangas@gmail.com>2023-03-20 06:30:32 +0100
commit20d8a1cf4bdc1de994b5c39a8ee02af657416c56 (patch)
tree542aff7d6767542a42e4fb6a84c69f4dece073ef /doc
parentf615968fe1b4726e3914aa65e4b7c6c6be07ea70 (diff)
parentea87c54f359e3d98b4f21a0904206b3696b4bb74 (diff)
downloademacs-20d8a1cf4bdc1de994b5c39a8ee02af657416c56.tar.gz
Merge from origin/emacs-29
ea87c54f359 ; * lisp/subr.el (setq-local): Add missing period (bug#62... 90362f87d58 ; Correct last commit, downcase node reference 38067f05b92 Enhance section about troubleshooting in Eglot manual. 6f82596b490 Fix Eglot's snippet insertion to follow the manual c54bda15e35 Reset abbrevs-changed after saving abbrevs (bug#62208) e8cee15f780 ; Fix markup in previous change e4a7d0cd6ea Document `keymap-unset' in lispref bb3e0ded9eb Don't add a key binding when REMOVE is non-nil a4a9ffdd80a Fix the documentation of various aspects of adding Xref h... a2222b9a9bf ; Minor wording fix in ELisp reference manual 5cf1de683b2 Fix python-fill-paragraph problems on filling strings (bu... 7385c991dff Also exempt eglot-inlay-hints-mode from desktop.el's fumb... 1961bdb52ed ; Add WebDAV entry to index in Tramp manual dfb36d36230 Refer to EWW instead of w3 and w3m 9d3fdf7e0d4 Fix Eglot's command generation for code actions # Conflicts: # etc/NEWS
Diffstat (limited to 'doc')
-rw-r--r--doc/emacs/maintaining.texi19
-rw-r--r--doc/lispref/keymaps.texi12
-rw-r--r--doc/lispref/objects.texi15
-rw-r--r--doc/misc/eglot.texi106
-rw-r--r--doc/misc/idlwave.texi7
-rw-r--r--doc/misc/tramp.texi1
6 files changed, 116 insertions, 44 deletions
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index f5bbc4d65c0..7d49e28d11f 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -2283,16 +2283,25 @@ buffer, but doesn't select any of them.
@kindex M-,
@findex xref-go-back
- To go back to places @emph{from where} you've displayed the definition,
-use @kbd{M-,} (@code{xref-go-back}). It jumps back to the
+ To go back to places @emph{from where} you've displayed the
+definition, use @kbd{M-,} (@code{xref-go-back}). It jumps back to the
point of the last invocation of @kbd{M-.}. Thus you can find and
examine the definition of something with @kbd{M-.} and then return to
-where you were with @kbd{M-,}.
+where you were with @kbd{M-,}. @kbd{M-,} allows you to retrace the
+steps you made forward in the history of places, all the way to the
+first place in history, where you first invoked @kbd{M-.}, or to any
+place in-between.
@kindex C-M-,
@findex xref-go-forward
- If you previously went back too far with @kbd{M-,}, @kbd{C-M-,}
-(@code{xref-go-forward}) can be used to go forward again.
+ If you previously went back too far with @kbd{M-,}, or want to
+re-examine a place from which you went back, you can use @kbd{C-M-,}
+(@code{xref-go-forward}) to go forward again. This is similar to
+using @kbd{M-.}, except that you don't need on each step to move point
+to the identifier whose definition you want to look up. @kbd{C-M-,}
+allows you to retrace all the steps you made back in the history of
+places, all the way to the last place in history, where you invoked
+@kbd{M-,}, or to any place in-between.
@findex xref-etags-mode
Some major modes install @code{xref} support facilities that might
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index 7876780dcd4..aab2fe58255 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -1440,6 +1440,18 @@ bindings in a keymap makes no difference for keyboard input, but it
does matter for menu keymaps (@pxref{Menu Keymaps}).
@end defun
+@findex keymap-unset
+@defun keymap-unset keymap key &optional remove
+This function is the inverse of @code{keymap-set}, it unsets the
+binding for @var{key} in @var{keymap}, which is the same as setting
+the binding to @code{nil}. In order to instead remove the binding
+completely, specify @var{remove} as non-nil. This only makes a
+difference if @var{keymap} has a parent keymap. When unsetting a key
+in a child map, it will still shadow the same key in the parent
+keymap. Removing the binding will allow the key in the parent keymap
+to be used.
+@end defun
+
This example creates a sparse keymap and makes a number of
bindings in it:
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index 2fe7e6db560..ad079e0d63a 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -466,19 +466,20 @@ You can specify characters by their Unicode values.
@code{?\u@var{xxxx}} and @code{?\U@var{xxxxxxxx}} represent code
points @var{xxxx} and @var{xxxxxxxx}, respectively, where each @var{x}
is a single hexadecimal digit. For example, @code{?\N@{U+E0@}},
-@code{?\u00e0} and @code{?\U000000E0} are all equivalent to @code{?à}
-and to @samp{?\N@{LATIN SMALL LETTER A WITH GRAVE@}}. The Unicode
-Standard defines code points only up to @samp{U+@var{10ffff}}, so if
-you specify a code point higher than that, Emacs signals an error.
+@code{?\u00e0} and @code{?\U000000E0} are all equivalent to
+@code{?@`a} and to @samp{?\N@{LATIN SMALL LETTER A WITH GRAVE@}}. The
+Unicode Standard defines code points only up to @samp{U+@var{10ffff}},
+so if you specify a code point higher than that, Emacs signals an
+error.
@item
You can specify characters by their hexadecimal character
codes. A hexadecimal escape sequence consists of a backslash,
@samp{x}, and the hexadecimal character code. Thus, @samp{?\x41} is
the character @kbd{A}, @samp{?\x1} is the character @kbd{C-a}, and
-@code{?\xe0} is the character @kbd{à} (@kbd{a} with grave accent).
-You can use any number of hex digits, so you can represent any
-character code in this way.
+@code{?\xe0} is the character @kbd{@`a} (@kbd{a} with grave accent).
+You can use one or more hex digits after @samp{x}, so you can
+represent any character code in this way.
@item
@cindex octal character code
diff --git a/doc/misc/eglot.texi b/doc/misc/eglot.texi
index 85f83ee4b26..5ebc055ecf7 100644
--- a/doc/misc/eglot.texi
+++ b/doc/misc/eglot.texi
@@ -1292,53 +1292,103 @@ pop up special buffers that can be used to inspect the communications
between the Eglot and language server. In many cases, this will
indicate the problems or at least provide a hint.
+@cindex performance
A common and easy-to-fix cause of performance problems is the length
-of these two buffers. If Eglot is operating correctly but slowly,
-customize the variable @code{eglot-events-buffer-size} (@pxref{Eglot
-Variables}) to limit logging, and thus speed things up.
-
-If you need to report an Eglot bug, please keep in mind that, because
-there are so many variables involved, it is generally both very
-@emph{difficult} and @emph{absolutely essential} to reproduce bugs
-exactly as they happened to you, the user. Therefore, every bug
-report should include:
+of the Eglot events buffer because it represent additional work that
+Eglot must do. After verifying Eglot is operating correctly but
+slowly, try to customize the variable @code{eglot-events-buffer-size}
+(@pxref{Eglot Variables}) to 0. This will disable any debug logging
+and may speed things up.
+
+In other situations, the cause of poor performance lies in the LSP
+server itself. Servers use aggressive caching and other techniques to
+improve their performance. Often, this can be tweaked by changing the
+server configuration (@pxref{Advanced server configuration}).
+
+If you think you have found a bug, we want to hear about it. Before
+reporting a bug, keep in mind that interaction with LSP servers
+represents a large quantity of unknown variables. Therefore, it is
+generally both @emph{difficult} and @emph{absolutely essential} that
+the maintainers reproduce bugs exactly as they happened to you, the
+user.
+
+To report an Eglot bug, send e-mail to @email{bug-gnu-emacs@@gnu.org}.
+
+Get acquainted with Emacs's bug reporting guidelines (@pxref{Bugs,,,
+emacs, GNU Emacs Manual}). Then, follow this checklist specific to
+Eglot bug rerpots.
@enumerate
@item
-The transcript of events obtained from the buffer popped up by
-@kbd{M-x eglot-events-buffer}. If the transcript can be narrowed down
-to show the problematic exchange, so much the better. This is
-invaluable for the investigation and reproduction of the problem.
+Include the transcript of JSONRPC events obtained from the buffer
+popped up by @kbd{M-x eglot-events-buffer}. You may narrow down the
+transcript if you are sure of where the problematic exchange is, but
+it's safer to include the whole transcript, either attached or inline.
@item
If Emacs signaled an error (an error message was seen or heard), make
-sure to repeat the process after toggling @code{debug-on-error} on
-(via @kbd{M-x toggle-debug-on-error}). This normally produces a
-backtrace of the error that should also be attached to the bug report.
+sure to repeat the process after turning on @code{debug-on-error} via
+@kbd{M-x toggle-debug-on-error}. This normally produces a backtrace
+of the error that should also be attached to the bug report.
+
+@item
+Include a description of how the maintainer should obtain, install,
+and configure the language server you used. Maintainers usually have
+access to GNU/Linux systems, though not necessarily the distribution
+that you may be using. If possible, try to replicate the problem with
+the C/C@t{++} or Python servers, as these are very easy to install.
@item
-An explanation of how to obtain, install, and configure the language
-server you used. If possible, try to replicate the problem with the
-C/C@t{++} or Python servers, as these are very easy to install.
+Describe how to setup a @emph{minimal} project directory where Eglot
+should be started for the problem to happen. Describe each file's
+name and its contents. Alternatively, you can supply the address of a
+public Git repository.
@item
-A description of how to setup the @emph{minimal} project (one or two
-files and their contents) where the problem happens.
+Include versions of the software used. The Emacs version can be
+obtained with @kbd{M-x emacs-version}.
+
+It's also essential to include the version of ELPA packages that are
+explicitly or implicitly loaded. The optional but popular Company or
+Markdown packages are distributed as GNU ELPA packages, not to mention
+Eglot itself in some situations. Some major modes (Go, Rust, etc.)
+are provided by ELPA packages. It's sometimes easy to miss these,
+since they are usually implicitly loaded when visiting a file in that
+language.
+
+ELPA packages usually live in @code{~/.emacs.d/elpa} (or what is in
+@code{package-user-dir}). Please show the listing of files in that
+directory as well.
@item
-A recipe to replicate the problem with @emph{a clean Emacs run}. This
-means @kbd{emacs -Q} invocation or a very minimal (no more that 10
-lines) @file{.emacs} initialization file. @code{eglot-ensure} and
-@code{use-package} calls are generally @emph{not} needed.
+Include a recipe to replicate the problem with @emph{a clean Emacs
+run}. This means @kbd{emacs -Q -f package-initialize} invocation
+which starts Emacs with no configuration and initializes the ELPA
+packages. A very minimal (no more that 10 lines) @file{.emacs}
+initialization file is also acceptable and good means to describe
+changes to variables.
+
+There is usually no need to include @kbd{require} statements in the
+recipe, as Eglot's functionality uses autoloads.
+
+Likewise, there is rarely the need to use things like
+@code{use-package} or @code{eglot-ensure}. This just makes the recipe
+harder to follow. Prefer setting variables with @code{setq} and
+adding to hooks with @code{add-hook}. Prefer starting Eglot with
+@code{M-x eglot}.
@item
-Make sure to double check all the above elements and re-run the
-recipe to see that the problem is reproducible.
+Make sure to double check all the above elements and re-run the recipe
+to see that the problem is reproducible. Following the recipe should
+produce event transcript and error backtraces that are exactly the
+same or very similar to the ones you included. If the problem only
+happens sometimes, include this information in your bug report.
@end enumerate
Please keep in mind that some problems reported against Eglot may
actually be bugs in the language server or the Emacs feature/package
-that used Eglot to communicate with the language server.
+that used Eglot to communicate with the language server. Eglot is, in
+many cases, just a frontend to that functionality.
@node GNU Free Documentation License
@appendix GNU Free Documentation License
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi
index 3ec07fb4a50..10fc4c85c7b 100644
--- a/doc/misc/idlwave.texi
+++ b/doc/misc/idlwave.texi
@@ -1372,10 +1372,9 @@ among, with differing advantages and disadvantages. The variable
to (as long as @code{idlwave-help-use-assistant} is not set). This
function is used to set the variable @code{browse-url-browser-function}
locally for IDLWAVE help only. Customize the latter variable to see
-what choices of browsers your system offers. Certain browsers like
-@code{w3} (bundled with many versions of Emacs) and @code{w3m}
-(@uref{http://emacs-w3m.namazu.org/}) are run within Emacs, and use
-Emacs buffers to display the HTML help. This can be convenient,
+what choices of browsers your system offers. Certain browsers like EWW
+(@pxref{Top, EWW,, eww, The Emacs Web Wowser Manual}) are run within Emacs,
+and use Emacs buffers to display the HTML help. This can be convenient,
especially on small displays, and images can even be displayed in-line
on newer Emacs versions. However, better formatting results are often
achieved with external browsers, like Mozilla. IDLWAVE assumes any
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 3b5ba3b1390..6f14fc875f4 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -1247,6 +1247,7 @@ syntax requires a leading volume (share) name, for example:
@item @option{dav}
@item @option{davs}
+@cindex WebDAV
@cindex method @option{dav}
@cindex method @option{davs}
@cindex @option{dav} method