diff options
author | Aleksey Kladov <[email protected]> | 2020-05-24 15:18:46 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-05-24 15:53:18 +0100 |
commit | 934227361623b258d833be20e464e1509cb432ad (patch) | |
tree | cfb43f218d80f8e29045cf75e6e31ccfd6ca3782 /docs | |
parent | 7e862626cc892662c3c95ba393483ac89c07e31a (diff) |
Document matchingBrace LSP request
Diffstat (limited to 'docs')
-rw-r--r-- | docs/dev/lsp-extensions.md | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/docs/dev/lsp-extensions.md b/docs/dev/lsp-extensions.md index 1cc51410b..9fa1c5fc2 100644 --- a/docs/dev/lsp-extensions.md +++ b/docs/dev/lsp-extensions.md | |||
@@ -95,7 +95,7 @@ Invoking code action at this position will yield two code actions for importing | |||
95 | 95 | ||
96 | This request is send from client to server to handle "Join Lines" editor action. | 96 | This request is send from client to server to handle "Join Lines" editor action. |
97 | 97 | ||
98 | **Method:** `experimental/JoinLines` | 98 | **Method:** `experimental/joinLines` |
99 | 99 | ||
100 | **Request:** | 100 | **Request:** |
101 | 101 | ||
@@ -172,3 +172,48 @@ SSR with query `foo($a:expr, $b:expr) ==>> ($a).foo($b)` will transform, eg `foo | |||
172 | 172 | ||
173 | * Probably needs search without replace mode | 173 | * Probably needs search without replace mode |
174 | * Needs a way to limit the scope to certain files. | 174 | * Needs a way to limit the scope to certain files. |
175 | |||
176 | ## Matching Brace | ||
177 | |||
178 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/999 | ||
179 | |||
180 | **Server Capability:** `{ "matchingBrace": boolean }` | ||
181 | |||
182 | This request is send from client to server to handle "Matching Brace" editor action. | ||
183 | |||
184 | **Method:** `experimental/matchingBrace` | ||
185 | |||
186 | **Request:** | ||
187 | |||
188 | ```typescript | ||
189 | interface MatchingBraceParams { | ||
190 | textDocument: TextDocumentIdentifier, | ||
191 | /// Position for each cursor | ||
192 | positions: Position[], | ||
193 | } | ||
194 | ``` | ||
195 | |||
196 | **Response:** | ||
197 | |||
198 | ```typescript | ||
199 | Position[] | ||
200 | ``` | ||
201 | |||
202 | ### Example | ||
203 | |||
204 | ```rust | ||
205 | fn main() { | ||
206 | let x: Vec<()>/*cursor here*/ = vec![] | ||
207 | } | ||
208 | ``` | ||
209 | |||
210 | `experimental/matchingBrace` yields the position of `<`. | ||
211 | In many cases, matching braces can be handled by the editor. | ||
212 | However, some cases (like disambiguating between generics and comparison operations) need a real parser. | ||
213 | Moreover, it would be cool if editors didn't need to implement even basic language parsing | ||
214 | |||
215 | ### Unresolved Question | ||
216 | |||
217 | * Should we return a a nested brace structure, to allow paredit-like actions of jump *out* of the current brace pair? | ||
218 | This is how `SelectionRange` request works. | ||
219 | * Alternatively, should we perhaps flag certain `SelectionRange`s as being brace pairs? | ||