1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-07 08:00:48 -08:00
Commit graph

3448 commits

Author SHA1 Message Date
Yuan Fu
081cc7aa8e
; * doc/misc/eglot.texi (Project-specific configuration): Fix typo. 2023-03-09 22:15:36 -08:00
João Távora
50a3559c5a Add chapter on advanced server configuration to Eglot manual
* doc/misc/eglot.texi (Top): Add section "Advanced server configuration"
(Setting Up LSP Servers): Rework.
(Advanced server configuration): New chapter.
2023-03-09 11:14:44 +00:00
Kyle Meyer
b1b3af5b90 Update to Org 9.6.1-40-g3d817c 2023-03-05 17:34:13 -05:00
F. Jason Park
7548446194 Release ERC 5.5
* doc/misc/erc.texi: Update ERCVER to 5.5.
* lisp/erc/erc.el: Increment main version header to 5.5.  Update
Compat version in package-requires header to 29.1.3.4.  Update
`customize-package-emacs-version-alist' entry by mapping ERC 5.5 to
Emacs 29.1.
(erc-version): Update value to 5.5.
2023-03-03 13:49:18 -08:00
Eli Zaretskii
11c1aa1eb1 ; * doc/misc/gnus.texi: Fix last change. 2023-02-27 14:32:57 +02:00
Arash Esbati
44949c292f ; Add `nnimap-user' to Gnus manual
* doc/misc/gnus.texi (Customizing the IMAP Connection): Document
backend variable `nnimap-user' which was introduced with commit
5e68f8614f in 2011.
Add index entries for all backend variables.  (bug#61837)
2023-02-27 14:30:29 +02:00
João Távora
b0cbd5590b Eglot: simplify inlay hints implementation with jit-lock
This implementation is much simpler than the one based on
windows-scroll-functions.  It's also supposedly safer, as long as
jit-lock guarantees refontification of affected regions.

It's not _trivially_ simple though, as simply adding
'eglot--update-hints-1' to jit-lock-functions, while possible, is
going to request inlay hints from the LSP server for many small
regions of the buffer, depending on what jit-lock thinks is best.  So
we keep coalescing these into a larger region until the time is
suitable for a more bandwidth-efficient request.

To do this, we use a jit-lock implementation detail,
jit-lock-context-unfontify-pos, which is a proxy for knowing that the
jit-lock-context-timer has run.  Not sure how brittle it is, but it
seems to work reasonably.

We also get rid of the previous "get hints for entire buffer"
implementation.

* doc/misc/eglot.texi (Eglot Variables): Remove mention
to deleted eglot-lazy-inlay-hints.

* lisp/progmodes/eglot.el (eglot-lazy-inlay-hints)
(eglot--inlay-hints-after-scroll)
(eglot--inlay-hints-fully)
(eglot--inlay-hints-lazily): Remove.
(eglot--update-hints): Add function.
(eglot-inlay-hints-mode): Simplify.
2023-02-24 02:14:44 +00:00
João Távora
1841299a11 Eglot: implement inlay hints (bug#61412, bug#61066)
Inlay hints are small text annotations to specific parts of the whole
buffer, not unlike diagnostics, but designed to help readability
instead of indicating problems.  For example, a C++ LSP server can
serve hints about positional parameter names in function calls and a
variable's automatically deduced type.  Emacs can display these hints
in many little 0-length overlays with an 'before-string property, thus
helping the user remember those types and parameter names.

Since inlay hints are potentially a large amount of data to request
from the LSP server, the implementation strives to be as parsimonious
as possible with these requests.

So, by default, inlay hints are only requested for the visible
portions of the buffer across windows showing this buffer.  This is
done by leveraging the 'window-scroll-functions' variable, making for
a reasonably complex implementation involving per-window timers.  When
scrolling a window, it may take a short amount of time for inlay hints
to "pop in".  The new user variable 'eglot-lazy-inlay-hints' can be
used to exert some control over this.

Specifically, if the variable's value is set to 'nil', then inlay
hints are greedily fetched for the whole buffer every time a change
occurs.  This is a much simpler mode of operation which may avoid
problems, but is also likely much slower in large buffers.

Also, because the inlay feature is probably visually suprising to
some, it is turned OFF by default, which is not the usual practice of
Eglot (at least not when the necessary infrastructure is present).
This decision may be changed soon.  Here's a good one-liner for
enabling it by default in every Eglot-managed buffer:

   (add-hook 'eglot-managed-mode-hook #'eglot-inlay-hints-mode)

I haven't tested inlay hints extensively across many LSP servers, so I
would appreciate any testing, both for functional edge cases and
regarding performance.  There are possibly more optimization
oportunities in the "lazy" mode of operation, like more aggressively
deleting buffer overlays that are not in visible parts of the buffer.

Though I ended up writing this one from scratch, I want to thank
Dimitry Bolopopsky <dimitri@belopopsky.com> and Chinmay Dala
<dalal.chinmay.0101@gmail.com> for suggestions and early patches.

* lisp/progmodes/eglot.el (eglot--lsp-interface-alist): Define
InlayHint.
(eglot-client-capabilities): Announce 'inlayHint' capability.
(eglot-ignored-server-capabilities): Add :inlayHintProvider.
(eglot--document-changed-hook): New helper hook.
(eglot--after-change): Use it.
(eglot-inlay-hint-face, eglot-type-hint-face)
(eglot-parameter-hint-face): New faces.
(eglot--update-hints-1, eglot--inlay-hints-after-scroll)
(eglot--inlay-hints-fully, eglot--inlay-hints-lazily): New helpers.
(eglot-lazy-inlay-hints): New user variable.
(eglot-inlay-hints-mode): New minor mode.
(eglot--maybe-activate-editing-mode): Try to activate
eglot-inlay-hints-mode.
(eglot--before-change): Remove overlays immediately in the
area being changed.
(eglot--managed-mode-off): Remove overlays.

* doc/misc/eglot.texi (Eglot Features): Mention inlay hints.
(Eglot Variables): Mention eglot-lazy-inlay-hints.
2023-02-22 19:19:12 +00:00
Eli Zaretskii
a6be0be1db ; Clarify "kill files" in Gnus manual
* doc/misc/gnus.texi (Scoring): Make the reference to kill files
less vague.  (Bug#61325)
2023-02-22 15:40:26 +02:00
Jonas Bernoulli
02aba20d52
Update to Transient v0.3.7-216-gfe40342 2023-02-20 16:36:16 +01:00
Stefan Kangas
a638c79bc5 Delete redundant question from Gnus FAQ
* doc/misc/gnus-faq.texi (FAQ 1-2): Delete redundant question.
(FAQ 1-1, FAQ 1-3): Adjust accordingly.
2023-02-18 13:35:37 +01:00
Stefan Kangas
1e5cebc88b Spell out RPN abbreviation in Calc manual intro
* doc/misc/calc.texi (What is Calc, Demonstration of Calc)
(RPN Tutorial): Spell out "Reverse Polish notation" abbreviation.
2023-02-18 10:59:45 +01:00
Stefan Kangas
b16965ef7e Delete perplexing paragraph from Gnus manual
* doc/misc/gnus.texi (Exiting Gnus): Delete a confusing paragraph,
that may or may not have been intended as a joke.  (Bug#61325)
2023-02-15 16:28:09 +01:00
F. Jason Park
4eac80fcc3 ; Prepare to update ERC version to 5.5
* doc/misc/erc.texi: Mention in various places that ERC is also
available from GNU ELPA.
* etc/ERC-NEWS: Mention Compat dependency and shorten title for
auth-source section.
* lisp/erc/erc-backend.el: (erc-server-reconnect-function,
erc-tags-format): Update package version to 5.5.
(erc--parse-message-tags): Downcase warning "type" to remain
consistent with all other ERC warnings.
* lisp/erc/erc-button.el: (erc-button-alist): Change package-version
to 5.5.
* lisp/erc/erc-match.el (erc-match-quote-when-adding): Update package
version to 5.5.
* lisp/erc/erc-sasl.el: Mention actual info node in Commentary.
(erc-sasl): Update package version to 5.5.
(erc-sasl-password): Reword doc string.
(erc-sasl-auth-source-function): Capitalize "info" in doc string.
* lisp/erc/erc-services.el (erc-auth-source-services-function): Update
package version to 5.5.  Capitalize "info" in doc string.  Change
choice type from const to function-item.
* lisp/erc/erc.el (erc-password): Capitalize "info" in doc string.
(erc-inhibit-multiline-input, erc-ask-about-multiline-input,
erc-prompt-hidden, erc-hide-prompt, erc-unhide-query-prompt,
erc-join-buffer, erc-reconnect-display, erc-kill-server-hook,
erc-kill-channel-hook, erc-kill-buffer-hook,
erc-url-connect-function): Update package version to 5.5.
(erc-auth-source-server-function, erc-auth-source-join-function):
Update package version to 5.5.  Change choice type from const to
function-item.  Capitalize "info" in doc string.
(erc-tls): Capitalize "info" in doc string.
2023-02-14 08:25:00 -08:00
Kyle Meyer
fe2ea5ddd8 Update to Org 9.6.1-31-gaf1bb1 2023-02-12 15:43:07 -05:00
Jonas Bernoulli
e47cf6ca15
Update to Transient v0.3.7-204-gecff8c2 2023-02-09 13:28:05 +01:00
Eli Zaretskii
0358267204 Update the Emacs FAQ for Emacs 29
* doc/misc/efaq.texi (New in Emacs 29, History of Emacs): Add new
section about Emacs 29.
2023-02-05 10:50:12 +02:00
Jonas Bernoulli
1684e254a3
Update to Transient v0.3.7-196-gb91f509 2023-01-30 22:39:38 +01:00
Arash Esbati
8198803f66 ; Don't mention in the Gnus manual user options that were removed
* doc/misc/gnus.texi (HTML): Delete entries for custom variables
removed in commit 2c8b2fc8d5.  (Bug#61054)
2023-01-25 15:09:10 +02:00
F. Jason Park
987e53f3e2 ; * doc/misc/erc.texi: Improve Local Modules section. 2023-01-24 20:19:28 -08:00
Kyle Meyer
647cc9c65e Update to Org 9.6.1-16-ge37e9b 2023-01-22 21:53:39 -05:00
Jim Porter
c4f0b6ccea Add more detail about how to invoke Eshell commands
* doc/misc/eshell.texi (Variables): Move footnote explaining "REPL"
from here...
(Top): ... to its first use here.
(Commands): Move explanation about kernel functions to here.
(Invocation): Describe command form and Lisp form.  Fix documentation
about priority of commands in command form.
(Arguments): Add a cross reference to the Invocation node.
2023-01-17 13:58:36 -08:00
Eli Zaretskii
73b304bb74 ; Fix last change: remove unused @anchor. 2023-01-15 11:52:46 +02:00
Xi Lu
d2efee31ed ; Update htmlfontify documentation
* doc/misc/htmlfontify.texi (Customization): Remove 'hfy-find-cmd',
add 'hfy-exclude-file-rules'.
(Requirements): Remove text about 'find' program.
2023-01-15 11:49:45 +02:00
Stefan Kangas
920a7d38e9 ; Fix typos 2023-01-15 02:14:19 +01:00
Arash Esbati
c0578edc8f ; * doc/misc/eglot.texi (Troubleshooting Eglot): Fix typo (bug#60780). 2023-01-13 15:24:25 +02:00
Kyle Meyer
e04b3d41bb Update to Org 9.6-90-ga6523f 2023-01-07 23:50:54 -05:00
Eli Zaretskii
cae528457c ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
Kévin Le Gouguec
01acecc79c Simplify introduction of use-package manual
* doc/misc/use-package.texi (Getting Started): Do not advise requiring
the package, since the macro is autoloaded; also correct the macro's
name.  (Bug#60366)
2022-12-31 10:48:48 +01:00
F. Jason Park
2ddc480f44 Warn of absent networks module in ERC
* doc/misc/erc.texi: Add linkable note in Modules chapter about some
modules being required.  Also tweak markup in auth-source section.
* etc/ERC-NEWS: Mention the special role of `networks'.
* lisp/erc/erc-backend.el (erc--server-post-connect-hook): Add
internal hook for core modules to perform post-network-process,
pre-protocol config validation even when they haven't been loaded.
(erc--register-connection): Run `erc--server-post-connect-hook'.
* lisp/erc/erc-networks.el (erc-networks--bouncer-targets,
erc-networks-on-MOTD-end): Fix comments and doc strings.  Also change
former from constant to internal variable in case adjustment needed
between releases.
(erc-networks--warn-on-connect): New function to warn about the
`networks' module being absent from `erc-modules'.  This could
probably run at any time up to and including when the logical IRC
connection is established, but doing so at the process/protocol
boundary seems ideal.
* lisp/erc/erc-sasl.el (erc--register-connection): Defer to base
method instead of calling `erc-login' explicitly.
* lisp/erc/erc.el (erc-generate-new-buffer-name): Don't reconcile
buffer names when networks module not in play.
(erc-format-target-and/or-network): Don't assume networks module
loaded.
* test/lisp/erc/erc-scenarios-base-unstable.el:
(erc-scenarios-networks-no-module): New test.
* test/lisp/erc/resources/networks/no-module/basic.eld: New test data
file.  (Bug#60331.)
2022-12-28 06:51:38 -08:00
Stefan Kangas
2608e5edcc ; Fix typos
(cherry picked from commit a5d39e1144)
2022-12-26 10:42:02 +01:00
Eli Zaretskii
c3fac9465f ; Fix punctuation in last change. 2022-12-24 09:40:56 +02:00
glacials
756bb422a4 Correct wrong info in (info)Go to node
The node (info)Go to node in the Info manual states that 'g'
does not allow the use of abbreviations, however it does.
To test this, type 'gt' from this node and see that it takes
you to (info)Top, then type 'ggo<RET>' and see that it takes
you back to (info)Go to node.  Tested on emacs 28.2.
* doc/misc/info.texi (Go to node): Fix inaccurate information.
(Bug#60263)

Copyright-paperwork-exempt: yes
2022-12-24 09:37:50 +02:00
Michael Albinus
86b11981b0 Update Tramp version (don't merge with master)
* doc/misc/trampver.texi:
* lisp/net/trampver.el: Change version to "2.6.0.29.1".
(customize-package-emacs-version-alist):
Adapt Tramp version integrated in Emacs 29.1.
2022-12-22 16:46:00 +01:00
Kyle Meyer
3e02029642 Update to Org 9.6-49-g47d129 2022-12-17 17:28:27 -05:00
F. Jason Park
9ac80e8a6e Add dedicated auth-source section in ERC manual
* doc/misc/erc.texi: Move auth-source description from the Password
subheading of the Advanced chapter's Connecting section to the new
Integrations section as a new node, Auth-Source, and give it a bit
more structure.  Fix various misuses of xref vs. pxref.  Convert URL
subheading to subsection and add anchor.  Prefer "backend" as a single
word, based on usage in other manuals.  Also replace loud "warning" in
SASL troubleshooting section.
* etc/ERC-NEWS: Re-link auth-source mention.
* lisp/erc/erc-sasl.el (erc-sasl-auth-source-function): Update info
node in doc string.
* lisp/erc/erc-services.el (erc-auth-source-services-function):
Re-link auth-source info node in doc string.
* lisp/erc/erc.el (erc-password, erc-auth-source-server-function,
erc-auth-source-join-function): Re-link auth-source info node in doc
strings.
2022-12-14 06:40:55 -08:00
Stefan Kangas
489b02d03c * doc/misc/Makefile.in (need_emacsver): Add use-package. 2022-12-14 00:36:30 +01:00
Stefan Kangas
06ef030f93 use-package.texi: New section "Manual installation"
* doc/misc/use-package.texi (Manual installation): New section.
(Load path, Manual autoloads): Make into subsections of above new
section.
2022-12-12 08:45:40 +01:00
Stefan Kangas
f221105723 ; * doc/misc/use-package.texi: Prepare for GNU ELPA. 2022-12-11 03:14:11 +01:00
Stefan Kangas
a9037aa8e8 ; Fix use-package-ensure-system-package macOS footnote
* doc/misc/use-package.texi (use-package-ensure-system-package): Fix
macOS footnote.
2022-12-11 00:31:40 +01:00
Kyle Meyer
0115416605 Update to Org 9.6-31-g954a95 2022-12-10 16:59:46 -05:00
Stefan Kangas
29b9aeae32 ; * doc/misc/use-package.texi: Fix misplaced @end group. 2022-12-10 21:25:04 +01:00
Stefan Kangas
2f1269c333 ; Fix some minor issues in use-package.texi
* doc/misc/use-package.texi: Fix some minor issues.
2022-12-10 13:00:46 +01:00
Eli Zaretskii
0bd26abf7f ; * doc/misc/use-package.texi: Fix @file. 2022-12-09 18:21:38 +02:00
Eli Zaretskii
2ea7a357fd ; * doc/misc/use-package.texi: Fix @acronym. 2022-12-09 18:20:04 +02:00
Eli Zaretskii
f626b9f385 ; * doc/misc/use-package.texi: Fix indexing. 2022-12-09 16:50:13 +02:00
Eli Zaretskii
acd462b030 ; Improve the use-package manual
* doc/misc/use-package.texi (Top, Basic Concepts)
(Getting Started, Loading Packages, Loading basics)
(Deferring loading, Forcing loading, Conditional loading)
(Loading sequentially, Load dependencies, Load path)
(Manual autoloads, Configuring Packages, Lisp Configuration)
(Preface keyword, Init keyword, Best practices, Key bindings)
(Global keybindings, Binding in keymaps, Binding to a keymap)
(Binding to repeat-maps, Displaying keybindings)
(Modes and interpreters, Magic handlers, User options, Faces)
(Delight, Diminish, Install package, Pinning packages)
(Other package managers, Byte-compiling, Troubleshooting)
(Troubleshooting Options, Gathering Statistics)
(Disabling a package, Keyword extensions)
(use-package-ensure-system-package, Creating an extension): Fix
wording, punctuation, typos, and markup; add indexing.  Add
@group..@end group in code examples.
2022-12-09 16:32:59 +02:00
dannyfreeman
74a009dd96 Eglot: Handle LSP progress with Emacs progress reporters (bug#59149)
Co-authored-by: João Távora <joaotavora@gmail.com>

* lisp/progmodes/eglot.el (eglot-report-progress): New custom variable.
(eglot-lsp-server): New slot for tracking active progress reporters.
(eglot-handle-notification (eql $/progress)): New method.

The LSP spec describes methods for reporting progress on long running
jobs to the client:

https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#progress
https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workDoneProgress

This change reports those notifications in the minibuffer as they come
in.  It shows a percent indicator (if the server provides theme), or a
spinner.

This change could open the door for writing a "cancel long running
request" command, which are identified by these progress
notifications.  See
https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#window_workDoneProgress_cancel

* doc/misc/eglot.texi (Customizing Eglot): Describe new variable.
2022-12-09 13:03:57 +00:00
Stefan Kangas
f5c3585e4d ; Fix typos 2022-12-09 10:18:00 +01:00
Stefan Kangas
5b640f0abd Improve :delight keyword example in use-package manual
* use-package.texi (Diminish, Delight): Clarify what happens if the
pre-requisite packages are not installed.  Change an example with
performance issues to one without any.

Resolves https://github.com/jwiegley/use-package/issues/835
2022-12-09 06:27:46 +01:00