NEWS.md (13608B)
1 # 1.8 (12/1/2022) 2 3 ##### Multiple servers supported out-of-box for same major mode ([#688][github#688]) 4 5 In practice, this removes the need for Eglot to "officially" bless one 6 server over another. Thanks to Felicián Németh for the original idea. 7 8 ##### TRAMP support ([#637][github#637], [#463][github#463], [#84][github#84]) 9 10 Thanks to Brian Cully for the minimalist approach. 11 12 (also thanks to Felipe Lema who conducted many early experiments in 13 [#463][github#463]) 14 15 ##### `eglot-ignored-server-capabilities` now correctly spelled ([#724][github#724]) 16 17 This user-visible variable used to be spelled 18 `eglot-ignored-server-capabilites`, which is still a valid but 19 obsolete name. 20 21 ##### Manage cross-referenced files outside project ([#76][github#76], [#686][github#686], [#695][github#695]) 22 23 This is activated by a new customization option 24 `eglot-extend-to-xref`, which defaults to nil. 25 26 Thanks to Michael Livshin for the investigation an elegant solution. 27 28 ##### Code action shortcuts ([#411][github#411]) 29 30 `M-x eglot-code-actions` accepts an optional `action-kind` argument, 31 specified interactively with `C-u`. Other shortcuts call specific 32 actions directly (`eglot-code-action-inline`, 33 `eglot-code-action-extract`, `eglot-code-action-rewrite`, 34 `eglot-code-action-organize-imports` and 35 `eglot-code-action-quickfix`). One can create own shortcuts for code 36 actions with specific a kind by calling `eglot-code-actions` from 37 elisp. 38 39 ##### New command `eglot-shutdown-server` ([#643][github#643]) 40 41 ##### New variable `eglot-withhold-process-id` ([#722][github#722]) 42 If non-nil, Eglot will not send the Emacs process id to the language server. 43 This can be useful when using docker to run a language server. 44 45 ##### Several new servers have been added to `eglot-server-programs`. 46 - cmake-language-server ([#787][github#787]) 47 - css-languageserver ([#204][github#204], [#769][github#769]) 48 - fortls ([#603][github#603]) 49 - html-languageserver ([#204][github#204], [#769][github#769]) 50 - json-languageserver ([#204][github#204], [#769][github#769]) 51 - lua-lsp ([#721][github#721]) 52 - mint ls ([#750][github#750]) 53 - pyright ([#742][github#742]) 54 - vim-language-server ([#787][github#787]) 55 - yaml-language-server ([#751][github#751]) 56 - zls ([#646][github#646]) 57 58 # 1.7 (16/12/2020) 59 60 ##### Support hierarchical symbols in Imenu ([#303][github#303]) 61 62 Thanks to Ingo Lohmar for the original implementation. 63 64 ##### Handle multiple "documentation at point" sources ([#439][github#439], [#494][github#494], [#481][github#481], [#454][github#454]) 65 66 Such sources include as LSP's signature, hover and also the Flymake 67 diagnostic messages. They can all be presented in the echo area 68 (space permitting), or via `C-h .`. For now, composition of different 69 sources can be customized using `eldoc-documentation-strategy`, 70 `eldoc-echo-area-use-multiline-p` and `eldoc-prefer-doc-buffer`. 71 72 The variables `eglot-put-doc-in-help-buffer` and 73 `eglot-auto-display-help-buffer` have been removed. 74 75 # 1.6 (16/04/2020) 76 77 ##### Column offset calculation is now LSP-conform ([#361][github#361]) 78 79 It seems the majority of servers now comply with the language server 80 specification when it comes to handling non-ASCII texts. Therefore 81 the default values of `eglot-move-to-column-function` and 82 `eglot-current-column-function` have been changed. The documentations 83 of these variables help to restore the old behavior. 84 85 ##### Support workspace/configuration requests ([#326][github#326]) 86 87 Also a new section "Per-project server configuration" in the README.md 88 should answer some faq's in this regard. 89 90 # 1.5 (20/10/2019) 91 92 Thanks a lot to Felicián Németh, Ingo Lohmar, and everyone else who 93 helped out! 94 95 ##### Take over Company configuration ([#324][github#324]) 96 97 Similar to what was already the case with Flymake, Eldoc and Xref, use 98 just the backend that can do something useful in Eglot, 99 `company-capf`. See `eglot-stay-out-of` to opt out of this. 100 101 ##### New option `eglot-autoshutdown` to disconnect after last buffer killed ([#217][github#217], [#270][github#270]) 102 103 ##### Fix completion support ([#235][github#235], [#313][github#313], [#311][github#311], [#279][github#279]) 104 105 Among other things, consider LSP's "filterText" cookies, which enables 106 a kind of poor-man's flex-matching for some backends. 107 108 ##### Support LSP's "goto declaration/implementation/typeDefinition" ([#302][github#302]) 109 110 ##### New option `eglot-send-changes-idle-time` ([#258][github#258]) 111 112 ##### Prevent Eldoc flicker when moving around ([#198][github#198]) 113 114 ##### Show large docs in help buffer instead of echo area by default ([#198][github#198]) 115 116 Also add two new customization variables 117 `eglot-put-doc-in-help-buffer` and `eglot-auto-display-help-buffer`. 118 119 ##### Add built-in support for Go, Elixir and Ada ([#304][github#304], [#264][github#264], [#316][github#316]) 120 121 # 1.4 (5/1/2019) 122 123 ##### Correct param highlighting in the first line of signature 124 125 ##### Display documentation strings with `gfm-view-mode` 126 127 ##### Remove hard dependencies on `flymake-mode` 128 129 You can turn it off now in buffers managed by Eglot. 130 131 ##### Run connection hooks with proper directory local variables ([#196][github#196]) 132 133 This fixes issues with suspiciously empty `didChangeConfiguration` 134 messages that are supposed to communicate parameters from a 135 directory-set `eglot-workspace-configuration`. 136 137 ##### Fix completion sorting ([#190][github#190]) 138 139 ##### Take over Flymake and Eldoc completely while managing buffers 140 141 No longer try to add Eglot's facilities to existing facilities in 142 these two domains. 143 144 # 1.3 (10/12/2018) 145 146 ##### Control strictness towards incoming LSP messages ([#144][github#144], [#156][github#156]) 147 148 ##### Add brief context after `xref-find-references` when available ([#52][github#52]) 149 150 ##### Support `completionContext` to help servers like `ccls`. 151 152 ##### Use Flymake from GNU ELPA ([#178][github#178]) 153 154 # 1.2 (23/11/2018) 155 156 ##### Support snippet completions ([#50][github#50]) 157 158 Use `yasnippet.el` for this, if it is installed. 159 160 ##### Implement `workspace/didChangeConfiguration` ([#29][github#29]) 161 162 ##### Handle experimental/unknown server methods gracefully ([#39][github#39]) 163 164 ##### Accept functions as entries in `eglot-server-programs` ([#63][github#63]) 165 166 `CONTACT` in the `(MAJOR-MODE . CONTACT)` association in 167 `eglot-server-programs` can now be a function of no arguments 168 producing any value previously valid for contact. Functions can be 169 interactive on non-interactive. 170 171 ##### Snappier completions that don't hinder typing ([#61][github#61]) 172 173 ##### Consider `:triggerCharacters` in company completion ([#80][github#80]) 174 175 ##### Add support for `TextEdit`s in completion 176 177 ##### Prefer ccls over cquery for C/C++ ([#94][github#94]) 178 179 ##### `eglot-ignored-server-capabilites` is more user-friendly ([#126][github#126]) 180 181 ##### Implement asynchronous server connection ([#68][github#68]) 182 183 A new defcustom `eglot-sync-connect` controls this feature. 184 185 ##### Add a generic `eglot-execute-command` API 186 187 Work by Michał K. 188 189 ##### Prompt for server in `eglot-shutdown` ([#73][github#73]) 190 191 ##### Add support for code action literals 192 193 ##### Add support for the Eclipse JDT language server ([#63][github#63]) 194 195 ##### Add out-of-the-box support for Haskell, Kotlin, Go, Ocaml, R 196 197 ##### Add the ability to move to LSP-precise columns ([#124][github#124]) 198 199 Some servers like `clangd` follow the spec very closely here. 200 201 ##### Fix a potential security issue fontifying LSP doc ([#154][github#154]) 202 203 ##### Fix many, many bugs 204 205 [#44][github#44], [#48][github#48], [#54][github#54], [#58][github#58], [#64][github#64], [#74][github#74], [#81][github#81], [#82][github#82], [#86][github#86], [#87][github#87], [#83][github#83], [#93][github#93], [#100][github#100], [#115][github#115], [#120][github#120], [#121][github#121], [#126][github#126], [#138][github#138], [#144][github#144], [#158][github#158], [#160][github#160], [#167][github#167] 206 207 # 1.1 (9/7/2018) 208 209 ##### Implement TCP autostart/autoconnect (and support Ruby's Solargraph) 210 211 The `:autoport` symbol in the server incovation is replaced 212 dynamically by a local port believed to be vacant, so that the ensuing 213 TCP connection finds a listening server. 214 215 ##### Eglot now depends on Emacs library `jsonrpc.el`. 216 217 ##### Assorted bugfixes 218 219 <!--- Now a bunch of references that I auto-generate with 220 221 (cl-loop 222 with pivot 223 initially 224 (goto-char (point-min)) 225 (search-forward-regexp "and now said bunch of references...\n") 226 (setq pivot (point)) 227 (goto-char (point-min)) 228 while (and (search-forward-regexp "github#\\([0-9]+\\)" nil t) 229 (< (point) pivot)) 230 collect (string-to-number (match-string 1)) into refs 231 finally (setq refs (delete-dups refs)) 232 (goto-char pivot) 233 (delete-region pivot (point-max)) 234 (cl-loop for ref in (sort refs #'<) 235 do (insert (format "[github#%d]: https://github.com/joaotavora/eglot/issues/%d\n" ref ref)))) 236 237 and now said bunch of references--> 238 [github#29]: https://github.com/joaotavora/eglot/issues/29 239 [github#39]: https://github.com/joaotavora/eglot/issues/39 240 [github#44]: https://github.com/joaotavora/eglot/issues/44 241 [github#48]: https://github.com/joaotavora/eglot/issues/48 242 [github#50]: https://github.com/joaotavora/eglot/issues/50 243 [github#52]: https://github.com/joaotavora/eglot/issues/52 244 [github#54]: https://github.com/joaotavora/eglot/issues/54 245 [github#58]: https://github.com/joaotavora/eglot/issues/58 246 [github#61]: https://github.com/joaotavora/eglot/issues/61 247 [github#63]: https://github.com/joaotavora/eglot/issues/63 248 [github#64]: https://github.com/joaotavora/eglot/issues/64 249 [github#68]: https://github.com/joaotavora/eglot/issues/68 250 [github#73]: https://github.com/joaotavora/eglot/issues/73 251 [github#74]: https://github.com/joaotavora/eglot/issues/74 252 [github#76]: https://github.com/joaotavora/eglot/issues/76 253 [github#80]: https://github.com/joaotavora/eglot/issues/80 254 [github#81]: https://github.com/joaotavora/eglot/issues/81 255 [github#82]: https://github.com/joaotavora/eglot/issues/82 256 [github#83]: https://github.com/joaotavora/eglot/issues/83 257 [github#84]: https://github.com/joaotavora/eglot/issues/84 258 [github#86]: https://github.com/joaotavora/eglot/issues/86 259 [github#87]: https://github.com/joaotavora/eglot/issues/87 260 [github#93]: https://github.com/joaotavora/eglot/issues/93 261 [github#94]: https://github.com/joaotavora/eglot/issues/94 262 [github#100]: https://github.com/joaotavora/eglot/issues/100 263 [github#115]: https://github.com/joaotavora/eglot/issues/115 264 [github#120]: https://github.com/joaotavora/eglot/issues/120 265 [github#121]: https://github.com/joaotavora/eglot/issues/121 266 [github#124]: https://github.com/joaotavora/eglot/issues/124 267 [github#126]: https://github.com/joaotavora/eglot/issues/126 268 [github#138]: https://github.com/joaotavora/eglot/issues/138 269 [github#144]: https://github.com/joaotavora/eglot/issues/144 270 [github#154]: https://github.com/joaotavora/eglot/issues/154 271 [github#156]: https://github.com/joaotavora/eglot/issues/156 272 [github#158]: https://github.com/joaotavora/eglot/issues/158 273 [github#160]: https://github.com/joaotavora/eglot/issues/160 274 [github#167]: https://github.com/joaotavora/eglot/issues/167 275 [github#178]: https://github.com/joaotavora/eglot/issues/178 276 [github#190]: https://github.com/joaotavora/eglot/issues/190 277 [github#196]: https://github.com/joaotavora/eglot/issues/196 278 [github#198]: https://github.com/joaotavora/eglot/issues/198 279 [github#204]: https://github.com/joaotavora/eglot/issues/204 280 [github#217]: https://github.com/joaotavora/eglot/issues/217 281 [github#235]: https://github.com/joaotavora/eglot/issues/235 282 [github#258]: https://github.com/joaotavora/eglot/issues/258 283 [github#264]: https://github.com/joaotavora/eglot/issues/264 284 [github#270]: https://github.com/joaotavora/eglot/issues/270 285 [github#279]: https://github.com/joaotavora/eglot/issues/279 286 [github#302]: https://github.com/joaotavora/eglot/issues/302 287 [github#303]: https://github.com/joaotavora/eglot/issues/303 288 [github#304]: https://github.com/joaotavora/eglot/issues/304 289 [github#311]: https://github.com/joaotavora/eglot/issues/311 290 [github#313]: https://github.com/joaotavora/eglot/issues/313 291 [github#316]: https://github.com/joaotavora/eglot/issues/316 292 [github#324]: https://github.com/joaotavora/eglot/issues/324 293 [github#326]: https://github.com/joaotavora/eglot/issues/326 294 [github#361]: https://github.com/joaotavora/eglot/issues/361 295 [github#411]: https://github.com/joaotavora/eglot/issues/411 296 [github#439]: https://github.com/joaotavora/eglot/issues/439 297 [github#454]: https://github.com/joaotavora/eglot/issues/454 298 [github#463]: https://github.com/joaotavora/eglot/issues/463 299 [github#481]: https://github.com/joaotavora/eglot/issues/481 300 [github#494]: https://github.com/joaotavora/eglot/issues/494 301 [github#603]: https://github.com/joaotavora/eglot/issues/603 302 [github#637]: https://github.com/joaotavora/eglot/issues/637 303 [github#643]: https://github.com/joaotavora/eglot/issues/643 304 [github#646]: https://github.com/joaotavora/eglot/issues/646 305 [github#686]: https://github.com/joaotavora/eglot/issues/686 306 [github#688]: https://github.com/joaotavora/eglot/issues/688 307 [github#695]: https://github.com/joaotavora/eglot/issues/695 308 [github#721]: https://github.com/joaotavora/eglot/issues/721 309 [github#722]: https://github.com/joaotavora/eglot/issues/722 310 [github#724]: https://github.com/joaotavora/eglot/issues/724 311 [github#742]: https://github.com/joaotavora/eglot/issues/742 312 [github#750]: https://github.com/joaotavora/eglot/issues/750 313 [github#751]: https://github.com/joaotavora/eglot/issues/751 314 [github#769]: https://github.com/joaotavora/eglot/issues/769 315 [github#787]: https://github.com/joaotavora/eglot/issues/787