[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/eglot ecd334f 101/139: Update README
From: |
João Távora |
Subject: |
[elpa] externals/eglot ecd334f 101/139: Update README |
Date: |
Mon, 14 May 2018 09:55:02 -0400 (EDT) |
branch: externals/eglot
commit ecd334f6466b0a1488735e4cb6d41ab4fa65660f
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>
Update README
---
README.md | 115 +++++++++++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 84 insertions(+), 31 deletions(-)
diff --git a/README.md b/README.md
index a8d1c8b..faf2dea 100644
--- a/README.md
+++ b/README.md
@@ -2,19 +2,21 @@
Eglot
-----
-*E*macs Poly*glot*. An Emacs client to Language Server Protocol servers.
+*E*macs Poly*glot*. An Emacs client to [Language Server Protocol][lsp] servers.
```
(add-to-list 'load-path "/path/to/eglot")
-(require 'eglot)
+(require 'eglot) ; Requires emacs 26!
+;; Now find some project file inside some Git-controlled dir
M-x eglot
```
-*That's it*. Either this guesses the local LSP program to start for
-the language of your choice or it prompts you for such a
-thing. Currently, if you have these programs installed, it works
-out-of-the-box for:
+*That's it*. Either this guesses the LSP executable to start for the
+language of your choice, or it prompts you to enter the program.
+
+If you have these programs installed, `M-x eglot` works out-of-the-box
+with:
* Javascript's [javascript-typescript-stdio][javascript-typescript-langserver]
* Rust's [rls][rls]
@@ -25,60 +27,111 @@ server. To skip the guess and always be prompted use `C-u
M-x eglot`.
# Supported Protocol features
-- [x] textDocument/didChange (incremental)
-- [x] textDocument/didClose
+## General
+- [x] initialize
+- [x] initalized
+- [x] shutdown
+- [x] exit
+- [ ] $/cancelRequest
+
+## Window
+- [x] window/showMessage
+- [x] window/showMessageRequest
+- [x] window/logMessage
+- [x] telemetry/event
+
+## Client
+- [ ] client/registerCapability
+- [ ] client/unregisterCapability
+
+## Workspace
+- [ ] workspace/workspaceFolders (3.6.0)
+- [ ] workspace/didChangeWorkspaceFolders (3.6.0)
+- [ ] workspace/didChangeConfiguration
+- [ ] workspace/configuration (3.6.0)
+- [ ] workspace/didChangeWatchedFiles
+- [x] workspace/symbol
+- [x] workspace/applyEdit
+
+## Text Synchronization
- [x] textDocument/didOpen
+- [x] textDocument/didChange (incremental or full)
+- [x] textDocument/willSave
+- [ ] textDocument/willSaveWaitUntil
- [x] textDocument/didSave
+- [x] textDocument/didClose
-- [ ] textDocument/codeAction
+## Diagnostics
+- [x] textDocument/publishDiagnostics
+
+## Language features
- [x] textDocument/completion
- [ ] completionItem/resolve
+- [x] textDocument/hover
+- [ ] textDocument/signatureHelp
- [x] textDocument/definition
+- [ ] textDocument/typeDefinition (3.6.0)
+- [ ] textDocument/implementation (3.6.0)
+- [x] textDocument/references
- [x] textDocument/documentHighlight
- [x] textDocument/documentSymbol
-- [ ] textDocument/executeCommand
-- [ ] textDocument/format
-- [x] textDocument/hover
+- [ ] textDocument/codeAction
+- [ ] textDocument/codeLens
+- [ ] codeLens/resolve
+- [ ] textDocument/documentLink
+- [ ] documentLink/resolve
+- [ ] textDocument/documentColor
+- [ ] textDocument/colorPresentation (3.6.0)
+- [ ] textDocument/formatting
+- [ ] textDocument/rangeFormatting
+- [ ] textDocument/onTypeFormatting
- [x] textDocument/rename
-- [x] textDocument/references
-- [ ] textDocument/signatureHelp
-- [x] workspace/symbol
# Differences to lsp-mode.el
-This is really beta and currently does a little less than
-[lsp-mode.el][emacs-lsp] which is more mature. Though I think
-`eglot.el` will eventually beat it, you could be better served with
+Eglot is **really beta** and may currently underperform
+[lsp-mode.el][emacs-lsp], which is more mature and has a host of
+[plugins][emacs-lsp-plugins] for bells and whistles. If you think the
minimalist approach
+of `eglot.el` is not for you, you could be better served with
`lsp-mode.el` for now.
User-visible differences:
-- Single entry point, `M-x eglot` to enable LSP in a project.
- Automatically detects current and future opened files under that
+- Single entry point `M-x eglot`, not `M-x eglot-<language>`. Also no
+ `eglot-<language>` extra packages.
+- No "whitelisting" or "blacklisting" directories to languages. `M-x
+ eglot` starts servers to handle major modes inside a specific
+ project. Uses Emacs's built-in `project.el` library to discover
+ projects. Automatically detects current and future opened files under that
project and syncs with server.
- Easy way to quit/restart a server, just middle/right click on the
connection name.
- Pretty interactive mode-line section for live tracking of server
communication.
+- Automatically restarts frequently crashing servers (like RLS).
+- Server-initiated edits are confirmed with the user.
+- Diagnostics work out-of-the-box (no `flycheck.el` needed).
-Differences under the hood:
-
-- Message parser is much much simpler
-- Easier to read and maintain elisp. Yeah I know, subjective... But
- judge for yourself.
-- No external dependencies apart from Emacs (no `flycheck.el`, no
- `projectile.el`, no Cask, etc).
-- Uses project.el, flymake.el
-- Requires the upcoming emacs 26
+Under the hood:
+
+- Message parser is much much simpler.
+- Easier to read and maintain elisp. Yeah I know, *extremely
+ subjective*, so judge for yourself.
+- About 1k LOC lighter.
+- Development doesn't require Cask, just Emacs.
+- Project support doesn't need `projectile.el`, uses Emacs's `project.el`
+- Requires the upcoming Emacs 26
- Contained in one file
-- send `textDocument/didChange` for groups of edits, not one per each
- tiny change.
+- Sends `textDocument/didChange` for groups of edits, not one per each
+ tiny change.
- Its missing tests! This is *not good*
+[lsp]: https://microsoft.github.io/language-server-protocol/
[rls]: https://github.com/rust-lang-nursery/rls
[pyls]: https://github.com/palantir/python-language-server
[javascript-typescript-langserver]:
https://github.com/sourcegraph/javascript-typescript-langserver
[emacs-lsp]: https://github.com/emacs-lsp/lsp-mode
+[emacs-lsp-plugins]: https://github.com/emacs-lsp
- [elpa] externals/eglot a7ddce6 080/139: Support javascript's javascript-typescript-langserver, (continued)
- [elpa] externals/eglot a7ddce6 080/139: Support javascript's javascript-typescript-langserver, João Távora, 2018/05/14
- [elpa] externals/eglot d40f9ac 094/139: Half-decent imenu support via textDocument/documentSymbol, João Távora, 2018/05/14
- [elpa] externals/eglot bbc64b4 087/139: Clean up client capabilities, João Távora, 2018/05/14
- [elpa] externals/eglot 9882bf2 072/139: Cleanup mistake with TextDocumentItem and TextDocumentIdentifier, João Távora, 2018/05/14
- [elpa] externals/eglot 8160cd4 071/139: Handle dynamic registration in general (but nothing specific yet), João Távora, 2018/05/14
- [elpa] externals/eglot c4ffabc 083/139: Half-decent completion support, João Távora, 2018/05/14
- [elpa] externals/eglot d431d41 088/139: Fix bug in hover support, João Távora, 2018/05/14
- [elpa] externals/eglot 1356844 097/139: Fix odd bugs, João Távora, 2018/05/14
- [elpa] externals/eglot 6e76b08 100/139: Support workspace/applyEdit, João Távora, 2018/05/14
- [elpa] externals/eglot 5ce9ab0 106/139: Call eglot-eldoc-function after completion finishes, João Távora, 2018/05/14
- [elpa] externals/eglot ecd334f 101/139: Update README,
João Távora <=
- [elpa] externals/eglot 39e8b9e 081/139: Add (dummy) tests and Travis CI integration, João Távora, 2018/05/14
- [elpa] externals/eglot 23b79e0 111/139: Shorten summary line to appease package-lint.el, João Távora, 2018/05/14
- [elpa] externals/eglot 37b7329 098/139: Reasonable textDocument/documentHighlight support, João Távora, 2018/05/14
- [elpa] externals/eglot d1cdcf1 119/139: Friendlier M-x eglot, João Távora, 2018/05/14
- [elpa] externals/eglot 764347d 128/139: New command eglot-help-at-point and a README update, João Távora, 2018/05/14
- [elpa] externals/eglot 9bf3166 136/139: Don't define a menu if nothing to show there for now, João Távora, 2018/05/14
- [elpa] externals/eglot 54fc885 113/139: More RLS-specifics: update Flymake diags when indexing done, João Távora, 2018/05/14
- [elpa] externals/eglot 56c2e1d 104/139: Get rid of eglot-mode, João Távora, 2018/05/14
- [elpa] externals/eglot 9577dfc 125/139: Duh, json.el is in Emacs, and json-mode.el is useless here, João Távora, 2018/05/14
- [elpa] externals/eglot d33a9b5 103/139: Simplify eglot--signal-textDocument/didChange, João Távora, 2018/05/14