дзеркало
https://github.com/l0ng-ai/openidea.git
синхронізовано 2026-11-09 11:15:40 +02:00
feat(lsp): language servers inside plugin-injected ranges (#2235)
* feat(lsp): language servers inside plugin-injected ranges * chore(plugins): rebuild bundled plugins for the updated injections docs
Цей коміт міститься в:
1 джерело
b6b09eb968
коміт
54d35d8a67
58 files changed
+1493
-114
No files matched your search
@@ -393,7 +393,7 @@ working. New in 1.4:
|
||||
- [Language features](#additional-language-features-api-14): formatting,
|
||||
signature help, highlights, links, code lenses, selection ranges, folds,
|
||||
colors/presentations, symbols, implementation, type definition and gutter
|
||||
actions; [injections](#embedded-languages-api-14) route plugin providers to
|
||||
actions; [injections](#embedded-languages-api-14) route providers and language servers to
|
||||
embedded virtual documents.
|
||||
- [Snippets](#snippets-api-14) and [menus](#additional-menu-locations-api-14):
|
||||
numbered placeholders and editor title, main toolbar, Problems and search
|
||||
@@ -1119,8 +1119,31 @@ At most 1,000 non-overlapping injection ranges and 32 embedded languages
|
||||
are routed per document. Earlier ranges in document order win overlaps.
|
||||
Documents over 2 MiB are excluded. Invalid ranges, self-injections and invalid
|
||||
language ids are ignored. Injections are not applied recursively. The same
|
||||
server-side plugin host handles remote editing. **Embedded LSP forwarding is
|
||||
future host-side work**, not part of 1.4, and needs no WIT change.
|
||||
server-side plugin host handles remote editing.
|
||||
|
||||
When the embedded language has configured language servers, the host also
|
||||
routes completion (including resolve), hover, signature help, definition,
|
||||
declaration, type definition, implementation, references, document highlights
|
||||
and code actions to those servers inside the range. Each range gets its own
|
||||
masked document, even when several ranges share a language. At most 32 LSP
|
||||
documents are kept per host document; the same 2 MiB document limit applies.
|
||||
These documents use non-existent sibling paths with the embedded language's
|
||||
extension, so servers can discover project configuration. They are never
|
||||
written to disk. Servers start through the usual settings, project trust and
|
||||
installation flow; a missing server does not prompt again on each edit.
|
||||
|
||||
Edits invalidate old ranges immediately. The host refreshes them after the
|
||||
300 ms debounce, or before a position request, synchronizes retained documents
|
||||
with `didChange`, and closes documents when their range disappears, the plugin
|
||||
is disabled or the host document closes. Results into these documents map back
|
||||
to the host path and are clipped to the range; locations in other files pass
|
||||
through. Replacement edits crossing a boundary and resource operations on
|
||||
virtual paths are dropped. Completion and code-action resolve keep their
|
||||
originating range/server, and stale results cannot resolve after an edit.
|
||||
Diagnostics are restricted to each range, labelled with the embedded server's
|
||||
name and merged with that server's other diagnostics for the host file. They
|
||||
clear when the range disappears. Formatting and rename use the host server.
|
||||
Remote projects use this same host-side LSP lifecycle and routing.
|
||||
|
||||
### Snippets (API 1.4)
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
c4900df449a6a323bab1f4fe5fe76ee42e2839c9197636b7c1cef733dffc683d
|
||||
34bea4bf36b7a814dafe02aaee02fe3354a667d1c8ca66f238de00322d0a035a
|
||||
@@ -1 +1 @@
|
||||
0ea139d4a0d47072971c0b37b93085159e412554ffb45d19590bae4dc10f48b5
|
||||
fdd68915997803652ad6f5c549107b043b9001ad4e176d2473d9b37469fbe1cc
|
||||
@@ -1 +1 @@
|
||||
4e4bc361395f6364e17211a9d3c32232a370ea1ee72e5197eab5f706ea465dc6
|
||||
ad3fe934d30b48d53097bf4dee36a091b2410c0325924702c66e717405b58203
|
||||
@@ -1 +1 @@
|
||||
c39211d416f45dff0265216509070ffdecc4e0f4e738c88176cad5faaca01b65
|
||||
5710601823307d167805a7ca20e7498fb9c37082b20df7fd1f86e1cd66b438f3
|
||||
@@ -1 +1 @@
|
||||
2bbb840e0bead664ccb467dbb299b269fc9a03ed4995c8d890ae195efe6e47a6
|
||||
1a486ceda9986bc253a0098c983f755c8860e6b7a3f2d7f0284b3b928b4e6c9e
|
||||
@@ -1 +1 @@
|
||||
b1fdf25b8307803b0e5e189bbe041cdb23b1e7b73abb4b76fd7a1b9ee48d87b0
|
||||
13f27c819384f92e406bf7226a46d3fe5b063e850db3d64916e661e1a63f345a
|
||||
@@ -1 +1 @@
|
||||
849d83a77d80e8d8a4f2c2801f4728300dd4504da411689834217b9973e582f4
|
||||
c7b2b471f26201c037522ee4a5b086d1c8ef88fbbb3f11f7279ad1a7185bdbae
|
||||
@@ -1 +1 @@
|
||||
ff42121519f6796db56a71a504484b149592e9e28ed33c783d2e6141cfe84d6c
|
||||
82c71af4a1f771dbd16a4c8f71b9bd6a6a53d82bd92958d4862467237b82d228
|
||||
@@ -1 +1 @@
|
||||
0d5ed3d81ab5496b92e7b012ae6e1e765fb45f4f6b0613a03f2bc79029ed9397
|
||||
65096a9b6331af9d40049801547e99e2fa1d5ae0f1065f6931af0aee8d2f24a7
|
||||
@@ -1 +1 @@
|
||||
dd34327c65747b1b57eef0854161837bd4e2843a59efec7730b81d8a2866a411
|
||||
cf8d21da412fd64f1f42c72b13be762ff1bcd43dd19965fc1fce805c5e1012ae
|
||||
@@ -1 +1 @@
|
||||
2141b215b141d82cc9a5cffa63c11e2b53e7bebcd31b93fb8d2db0ff5c2acd5b
|
||||
1ea1d7116e6b943e42580e43cb13199b6e48fc5acdf9784c4864adb7433ebb59
|
||||
@@ -1 +1 @@
|
||||
604a289139233c13108ff8aab448e4278604e5260d7b2485e3ace3bad9e855db
|
||||
05ff46a6c1af09b84f9a931d8956d79fbad9507dcff708ba021e074c55c062e2
|
||||
@@ -1 +1 @@
|
||||
9efa3a6a41c05e81a50893a2cff79da6e8e5f97219ddfd54f7ed201270934bb5
|
||||
26e57f5294b40bc31d9283843b2fcf6ad09d475fd160d61ddd3d420e54880a24
|
||||
@@ -1 +1 @@
|
||||
5f05e3696671258af5474b10abafd3cab48385493d5336061a9a8679307b56b4
|
||||
0d2c1140fe718d06e08af903ee94bfe87cd04de77c1299f6f5c337042c6f6197
|
||||
@@ -1 +1 @@
|
||||
677ec8005d29d4727afbc4b8fba6afcbc26996f0db461d1e98a6e9e52b5f7fac
|
||||
f4251a1cad1d5cea54559baca12d84fdf175e65db85ee3f4d29e381e045c40fb
|
||||
Reference in new issue
Заблокувати користувача