You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is an overview of the current state of the svelte-language-server - what it already can do, what it cannot, yet. If you feel a feature is missing or something that should work according to this list does not work, open a new issue.
HTML
autocompletion / auto imports
autocompletion for normal html tags
autocompletion for special svelte tags like <svelte:window>
autocompletion for special svelte tags like #await
hover info
hover info for normal html tags
hover info for special svelte tags like <svelte:window>
hover info for special svelte tags like #await
CSS
support for CSS/Less/SCSS
autocompletion / auto imports
autocompletion for css tags
autocompletion for :global tag
autocompletion for ids/classes/svelte component tags in css that are present in template (Class completion for CSS #84)
During editing, the likelihood that the code is invalid is very high. But the svelte compiler is designed to throw syntax errors to warn the user. Thus the features that rely on the svelte compiler won't work when there's a syntax error.
We did consider writing a dedicated parser for the editor but that seems to be too much work and maintenance burden. So it's not a priority, but we don't say it won't ever happen.
TypeScript language service is synchronous.
The Typescript's language service is mostly synchronous so we can't preprocess code before handing it off to svelte2tsx, because that's asynchronous (#339). That hinders features such as better Pug support. That's also one of the big roadblocks of eslint-plugin-svelte3. A svelte.preprocessSync might help, but was decided against for now.
Another problem that arises from the synchronous language service is the effort required to implement a TypeScript plugin (#580) which would help crossing the boundaries of TS/JS/Svelte and enable features such as "start rename in a TS file, Svelte files get updated, too". Even if we ignore preprocessing, the process of intellisense is still asynchronous because we use source-map to map the source code positions which is asynchronous.
The text was updated successfully, but these errors were encountered:
dummdidumm
changed the title
Overview of current features of language server
Overview of current features of language server + limitations
Feb 10, 2021
This is an overview of the current state of the
svelte-language-server
- what it already can do, what it cannot, yet. If you feel a feature is missing or something that should work according to this list does not work, open a new issue.HTML
autocompletion / auto imports
<svelte:window>
#await
hover info
<svelte:window>
#await
CSS
autocompletion / auto imports
:global
tagclass
that are present in css (completion for ids/classes in the template #844)hover info
go to definition
class
to cssJavascript / Typescript
$: ...
and$variableSubcribeShortHand
) ((feat) add svelte2tsx for better ts support #57)go to definition
typechecking
//@ts-check
///@ts-nocheck
autocompletion / auto imports
d.ts
definition ((feat) event completion/hover for components with a type definition #1057)code actions
Cross-cutting
code-actions
Limitations
The compiler is not designed for an editor.
See sveltejs/svelte#4818.
During editing, the likelihood that the code is invalid is very high. But the svelte compiler is designed to throw syntax errors to warn the user. Thus the features that rely on the svelte compiler won't work when there's a syntax error.
We did consider writing a dedicated parser for the editor but that seems to be too much work and maintenance burden. So it's not a priority, but we don't say it won't ever happen.
TypeScript language service is synchronous.
The Typescript's language service is mostly synchronous so we can't preprocess code before handing it off to
svelte2tsx
, because that's asynchronous (#339). That hinders features such as better Pug support. That's also one of the big roadblocks ofeslint-plugin-svelte3
. Asvelte.preprocessSync
might help, but was decided against for now.Another problem that arises from the synchronous language service is the effort required to implement a TypeScript plugin (#580) which would help crossing the boundaries of TS/JS/Svelte and enable features such as "start rename in a TS file, Svelte files get updated, too". Even if we ignore preprocessing, the process of intellisense is still asynchronous because we use
source-map
to map the source code positions which is asynchronous.The text was updated successfully, but these errors were encountered: