mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
After a week of intense testing, found out there were various insidious bugs related to out-of-date requests that rear their heads in different typing patterns. One way to sort this out and still minimize the number of requests is to have Eglot's semtok code be aware of the states a request for tokens can be in: inexistent/invalid, unsent, sent, valid. The needs and optimization opportunities for servers that support "full" and "full/delta" requests are considerably different from the ones of servers which only support "full" and "range". The latter seem to be in the minority, so for now I've removed the range requests. These servers should still work with "full" requests. In a further bug, at least two servers (clangd and lean) were found to plainly abuse the semanticTokens/refresh server request. This confuses the state logic. The solution is to simply no-op this request handler, it doesn't seem to do anything useful. Finally, when auto-reverting with preserve-modes (as done by vc-revert and auto-revert-mode), the font-lock state needs to be reinitialized. Fixed this in eglot--after-revert-hook. * lisp/progmodes/eglot.el (eglot-client-capabilities): Don't announce ranged request support. (eglot--docver): Rename from eglot--versioned-identifier. (eglot--diagnostics) (eglot--flymake-diagnostics) (eglot-handle-notification) (eglot--signal-textDocument/didOpen) (eglot--report-to-flymake) (eglot--apply-text-edits) (eglot--VersionedTextDocumentIdentifier): Use eglot--docver. (eglot--send-changes-hook): Rename from eglot--document-changed-hook. (eglot--after-change): Don't run eglot--send-changes-hook here. (eglot--signal-textDocument/didChange): Run it here. (eglot--semtok-state): Rename from eglot--semtok-cache. (eglot--semtok-inflight): Delete. (eglot--handle-request semanticTokens/refresh): Nullify. (eglot-semantic-tokens-mode): Tweak. (eglot--semtok-after-send-changes): New hook. (eglot--semtok-request) (eglot--semtok-font-lock): Rewrite. (eglot--after-revert-hook): Reinitialize semtok state. Co-authored-by: Lua Viana Reis <me@lua.blog.br> |
||
|---|---|---|
| .. | ||
| antlr-mode.el | ||
| asm-mode.el | ||
| autoconf.el | ||
| bat-mode.el | ||
| bug-reference.el | ||
| c-ts-common.el | ||
| c-ts-mode.el | ||
| cc-align.el | ||
| cc-awk.el | ||
| cc-bytecomp.el | ||
| cc-cmds.el | ||
| cc-defs.el | ||
| cc-engine.el | ||
| cc-fonts.el | ||
| cc-guess.el | ||
| cc-langs.el | ||
| cc-menus.el | ||
| cc-mode.el | ||
| cc-styles.el | ||
| cc-vars.el | ||
| cfengine.el | ||
| cl-font-lock.el | ||
| cmacexp.el | ||
| cmake-ts-mode.el | ||
| compile.el | ||
| cperl-mode.el | ||
| cpp.el | ||
| csharp-mode.el | ||
| cwarn.el | ||
| dcl-mode.el | ||
| dockerfile-ts-mode.el | ||
| ebnf-abn.el | ||
| ebnf-bnf.el | ||
| ebnf-dtd.el | ||
| ebnf-ebx.el | ||
| ebnf-iso.el | ||
| ebnf-otz.el | ||
| ebnf-yac.el | ||
| ebnf2ps.el | ||
| ebrowse.el | ||
| eglot.el | ||
| elisp-mode.el | ||
| elixir-ts-mode.el | ||
| erts-mode.el | ||
| etags-regen.el | ||
| etags.el | ||
| executable.el | ||
| f90.el | ||
| flymake-cc.el | ||
| flymake-proc.el | ||
| flymake.el | ||
| fortran.el | ||
| gdb-mi.el | ||
| glasses.el | ||
| go-ts-mode.el | ||
| grep.el | ||
| gud.el | ||
| heex-ts-mode.el | ||
| hideif.el | ||
| hideshow.el | ||
| icon.el | ||
| inf-lisp.el | ||
| java-ts-mode.el | ||
| js.el | ||
| json-ts-mode.el | ||
| ld-script.el | ||
| lua-mode.el | ||
| lua-ts-mode.el | ||
| m4-mode.el | ||
| make-mode.el | ||
| meta-mode.el | ||
| mixal-mode.el | ||
| modula2.el | ||
| octave.el | ||
| opascal.el | ||
| pascal.el | ||
| peg.el | ||
| perl-mode.el | ||
| php-ts-mode.el | ||
| prog-mode.el | ||
| project.el | ||
| prolog.el | ||
| ps-mode.el | ||
| python.el | ||
| ruby-mode.el | ||
| ruby-ts-mode.el | ||
| rust-ts-mode.el | ||
| scheme.el | ||
| sh-script.el | ||
| simula.el | ||
| sql.el | ||
| subword.el | ||
| tcl.el | ||
| typescript-ts-mode.el | ||
| vera-mode.el | ||
| verilog-mode.el | ||
| vhdl-mode.el | ||
| which-func.el | ||
| xref.el | ||
| xscheme.el | ||