withastro / language-tools

Language tools for Astro
MIT License
262 stars 52 forks source link

🐛 BUG: `GetCompletions` broken for Vim with YouCompleteMe plugin #948

Closed S0AndS0 closed 5 days ago

S0AndS0 commented 1 week ago

Describe the Bug

Looks like preexisting escapes for double-quotes are getting an extra back-slash for example within .result.items[1];

--- a/GetCompletions_maybe-bad.json
+++ b/GetCompletions_maybe-good.json
@@ -41,7 +41,7 @@
                                                        "start": { "line": 8, "character": 0 },
                                                        "end": { "line": 8, "character": 0 }
                                                },
-                                               "newText": "import type { GetStaticPaths } from \\"astro\\";\\n"
+                                               "newText": "import type { GetStaticPaths } from \"astro\";\\n"
                                        }
                                ],
                                "filterText": "getstaticpaths",
@@ -55,7 +55,7 @@
                                                                        "start": { "line": 1, "character": 0 },
                                                                        "end": { "line": 1, "character": 0 }
                                                                },
-                                                               "newText": "import type { GetStaticPaths } from \\"astro\\";\\n"
+                                                               "newText": "import type { GetStaticPaths } from \"astro\";\\n"
                                                        }
                                                ]
                                        },

... This bad backslash behavior may be breaking third-party plugins too, such as Emmet! GetCompletions_maybe-bad.json GetCompletions_maybe-good.json

Steps to Reproduce

  1. Initialize an Astro project: npm init astro using template <NAME>
  2. Install LSP for current user: npm i -g @astrojs/language-server
  3. Add custom LSP configurations to YouCompleteMe via ~/.vimrc
    let g:ycm_global_ycm_extra_conf = expand($HOME . '/git/hub/S0AndS0/configure-vim/dot-files/.ycm_extra_conf.py')
    let g:ycm_lsp_dir = $HOME . '/git/hub/ycm-core/lsp-examples'
    let g:ycm_language_server += [
     \   {
     \     'name': 'astro',
     \     'filetypes': [ 'astro' ],
     \     'cmdline': [  expand( g:ycm_lsp_dir . '/astro/node_modules/@astrojs/language-server/bin/nodeServer.js' ), '--stdio' ],
     \     'project_root_files': [ 'tsconfig.json', 'astro.config.mjs' ]
     \   },
     \ ]
  4. Source updated Vim configurations
    :source /home/USER/.vimrc
  5. Change current working directory to Astro project
    pushd /home/USER/git/hub/PROJECT/NAME
  6. Install additional dependencies as suggested
    npm install --save-dev typescript prettier prettier-plugin-astro @astrojs/ts-plugin
  7. Open file for editing via vim
    vim src/components/example.astro
  8. Ensure directory structure to file exists
    :!mkdir -p $(dirname %)
  9. Attempt to exercise LSP features
    :YcmCompleter GetHover
  10. Inspect YouCompleteMe logs to find errors
    :YcmToggleLogs

Content of .ycm_extra_conf.py

def Settings( **kwargs ):
    if kwargs[ 'language' ] == 'astro':
        configs = {
            'ls': {
                'typescript': {
                    'tsdk':  "node_modules/typescript/lib",
                },
            },
        }

        return configs

Content of tsconfig.json

{
  "extends": "astro/tsconfigs/strictest",
  "compilerOptions": {
    "jsx": "react-jsx",
    "jsxImportSource": "react",
    "types": ["astro/client"],
    "plugins": [
      {
        "name": "@astrojs/ts-plugin"
      }
    ]
  }
}

Content of example.astro

---
interface Props {
    title: string;
}

const { title } = Astro.props;
---

<strong>{ title }</strong>

Client and Server logs

ycm_stderr.log ycm_stdout.log

Link to Minimal Reproducible Example

https://github.com/ycm-core/lsp-examples/pull/43

bstaletic commented 1 week ago

I'm the maintainer of the ycmd client. The extra escaping happens when writing to my client's logs. Here's the relevant part of the logs (the TX/RX is from the client's perspective):

TX: Sending message: b'Content-Length: 1942\r\n\r\n{"id":1,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"textDocument":{"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}}},"completion":{"completionItem":{"documentationFormat":["plaintext","markdown"],"resolveSupport":{"properties":["documentation","detail"]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}},"documentSymbol":{"hierarchicalDocumentSymbolSupport":false,"labelSupport":false,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"hover":{"contentFormat":["plaintext","markdown"]},"inlay_hint":{},"semanticTokens":{"augmentSyntaxTokens":true,"formats":["relative"],"requests":{"full":{"delta":false},"range":true},"tokenModifiers":[],"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","method","member","macro","keyword","modifier","comment","string","number","regexp","operator"]},"signatureHelp":{"signatureInformation":{"documentationFormat":["plaintext","markdown"],"parameterInformation":{"labelOffsetSupport":true}}},"synchronization":{"didSave":true}},"workspace":{"applyEdit":true,"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"workspaceEdit":{"documentChanges":true},"workspaceFolders":true}},"initializationOptions":{"typescript":{"tsdk":"node_modules/typescript/lib"}},"processId":18517,"rootPath":"/home/NAME/git/hub/ORG/REPO","rootUri":"file:///home/NAME/git/hub/ORG/REPO","workspaceFolders":[{"name":"REPO","uri":"file:///home/NAME/git/hub/ORG/REPO"}]}}'
RX: Received message: b'{"jsonrpc":"2.0","method":"window/logMessage","params":{"type":2,"message":"Inlay hint refresh is not supported by the client."}}'
RX: Received message: b'{"jsonrpc":"2.0","method":"window/logMessage","params":{"type":2,"message":"Semantic tokens refresh is not supported by the client."}}'
RX: Received message: b'{"jsonrpc":"2.0","id":1,"result":{"capabilities":{"textDocumentSync":2,"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":true}},"selectionRangeProvider":true,"foldingRangeProvider":true,"linkedEditingRangeProvider":true,"colorProvider":true,"documentSymbolProvider":true,"documentFormattingProvider":true,"documentRangeFormattingProvider":true,"referencesProvider":true,"implementationProvider":true,"definitionProvider":true,"typeDefinitionProvider":true,"callHierarchyProvider":true,"hoverProvider":true,"documentHighlightProvider":true,"workspaceSymbolProvider":{},"renameProvider":{"prepareProvider":true},"documentLinkProvider":{},"codeLensProvider":{},"inlayHintProvider":{},"signatureHelpProvider":{"triggerCharacters":["(",",","<"],"retriggerCharacters":[")"]},"completionProvider":{"triggerCharacters":[".",":","<","\\"","=","/","-",">","+","^","*","(",")","#","[","]","$","@","{","}","\'","`"," "],"resolveProvider":true},"semanticTokensProvider":{"range":true,"full":false,"legend":{"tokenTypes":["namespace","class","enum","interface","typeParameter","type","parameter","variable","property","enumMember","function","method"],"tokenModifiers":["declaration","readonly","static","async","defaultLibrary","local"]}},"codeActionProvider":{"codeActionKinds":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.fixAll","source.organizeImports"],"resolveProvider":true},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":";","moreTriggerCharacter":["}","\\n"]},"experimental":{"autoInsertionProvider":{"triggerCharacters":["=",">","/"],"configurationSections":[["html.autoCreateQuotes"],["html.autoClosingTags","javascript.autoClosingTags","typescript.autoClosingTags"],["html.autoClosingTags"]]},"fileRenameEditsProvider":true,"fileReferencesProvider":true}}}}'
TX: Sending notification: b'Content-Length: 52\r\n\r\n{"jsonrpc":"2.0","method":"initialized","params":{}}'
TX: Sending notification: b'Content-Length: 137\r\n\r\n{"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"typescript":{"tsdk":"node_modules/typescript/lib"}}}}'
TX: Sending notification: b'Content-Length: 335\r\n\r\n{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"astro","text":"---\\ninterface Props {\\n\\ttitle: string;\\n}\\n\\nconst { title } = Astro.props;\\n---\\n\\n<strong>{ title }</strong>\\n\\n","uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","version":1}}}'
RX: Received message: b'{"jsonrpc":"2.0","id":0,"method":"client/registerCapability","params":{"registrations":[{"id":"7c6468e6-aebd-4597-af1c-353365c18f00","method":"workspace/didChangeWatchedFiles","registerOptions":{"watchers":[{"globPattern":"**/*.{js,cjs,mjs,ts,cts,mts,jsx,tsx,json,astro,vue,svelte}"}]}}]}}'
TX: Sending response: b'Content-Length: 38\r\n\r\n{"id":0,"jsonrpc":"2.0","result":null}'
RX: Received message: b'{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","diagnostics":[],"version":1}}'
RX: Received message: b'{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","diagnostics":[],"version":1}}'
TX: Sending notification: b'Content-Length: 345\r\n\r\n{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"text":"---\\ninterface Props {\\n\\ttitle: string;\\n}\\n\\nconst { title } = Astro.props;\\ntitle.\\n---\\n\\n<strong>{ title }</strong>\\n\\n"}],"textDocument":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","version":2}}}'
TX: Sending message: b'Content-Length: 222\r\n\r\n{"id":2,"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":6,"line":6},"textDocument":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro"}}}'
RX: Received message: b'{"jsonrpc":"2.0","id":2,"result":{"isIncomplete":false,"items":[{"label":"interface Props","kind":15,"labelDetails":{"description":"Create a new interface to type your props"},"documentation":{"kind":"markdown","value":"Create a new interface to type your props.\\n\\n\\n[Astro reference](https://docs.astro.build/en/guides/typescript/#component-props)"},"insertTextFormat":2,"filterText":"interface props","insertText":"interface Props {\\n\\t$1\\n}","data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{},"pluginIndex":8,"embeddedDocumentUri":"volar-embedded-content://html/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"getStaticPaths","kind":15,"labelDetails":{"description":"Create a new getStaticPaths function"},"documentation":{"kind":"markdown","value":"Create a new getStaticPaths function.\\n\\n\\n[Astro reference](https://docs.astro.build/en/reference/api-reference/#getstaticpaths)"},"insertText":"export const getStaticPaths = (() => {\\n\\t$1\\n\\treturn [];\\n}) satisfies GetStaticPaths;","additionalTextEdits":[{"range":{"start":{"line":8,"character":0},"end":{"line":8,"character":0}},"newText":"import type { GetStaticPaths } from \\"astro\\";\\n"}],"filterText":"getstaticpaths","insertTextFormat":2,"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"additionalTextEdits":[{"range":{"start":{"line":1,"character":0},"end":{"line":1,"character":0}},"newText":"import type { GetStaticPaths } from \\"astro\\";\\n"}]},"pluginIndex":8,"embeddedDocumentUri":"volar-embedded-content://html/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"prerender","kind":15,"labelDetails":{"description":"Add prerender export"},"documentation":{"kind":"markdown","value":"Add prerender export. When [using server-side rendering](https://docs.astro.build/en/guides/server-side-rendering/#enabling-ssr-in-your-project), this value will be used to determine whether to prerender the page or not.\\n\\n\\n[Astro reference](https://docs.astro.build/en/guides/server-side-rendering/#configuring-individual-routes)"},"insertText":"export const prerender = ${1|true,false,import.meta.env.|}","insertTextFormat":2,"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{},"pluginIndex":8,"embeddedDocumentUri":"volar-embedded-content://html/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"at","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".at","insertTextFormat":1,"filterText":".at","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".at"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".at"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"at"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"charAt","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".charAt","insertTextFormat":1,"filterText":".charAt","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".charAt"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".charAt"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"charAt"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"charCodeAt","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".charCodeAt","insertTextFormat":1,"filterText":".charCodeAt","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".charCodeAt"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".charCodeAt"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"charCodeAt"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"codePointAt","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".codePointAt","insertTextFormat":1,"filterText":".codePointAt","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".codePointAt"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".codePointAt"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"codePointAt"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"concat","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".concat","insertTextFormat":1,"filterText":".concat","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".concat"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".concat"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"concat"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"endsWith","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".endsWith","insertTextFormat":1,"filterText":".endsWith","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".endsWith"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".endsWith"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"endsWith"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"includes","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".includes","insertTextFormat":1,"filterText":".includes","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".includes"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".includes"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"includes"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"indexOf","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".indexOf","insertTextFormat":1,"filterText":".indexOf","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".indexOf"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".indexOf"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"indexOf"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"isWellFormed","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".isWellFormed","insertTextFormat":1,"filterText":".isWellFormed","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".isWellFormed"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".isWellFormed"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"isWellFormed"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"lastIndexOf","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".lastIndexOf","insertTextFormat":1,"filterText":".lastIndexOf","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".lastIndexOf"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".lastIndexOf"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"lastIndexOf"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"length","kind":5,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".length","insertTextFormat":1,"filterText":".length","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".length"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".length"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"length"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"localeCompare","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".localeCompare","insertTextFormat":1,"filterText":".localeCompare","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".localeCompare"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".localeCompare"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"localeCompare"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"match","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".match","insertTextFormat":1,"filterText":".match","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".match"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".match"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"match"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"matchAll","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".matchAll","insertTextFormat":1,"filterText":".matchAll","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".matchAll"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".matchAll"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"matchAll"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"normalize","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".normalize","insertTextFormat":1,"filterText":".normalize","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".normalize"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".normalize"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"normalize"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"padEnd","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".padEnd","insertTextFormat":1,"filterText":".padEnd","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".padEnd"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".padEnd"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"padEnd"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"padStart","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".padStart","insertTextFormat":1,"filterText":".padStart","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".padStart"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".padStart"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"padStart"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"repeat","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".repeat","insertTextFormat":1,"filterText":".repeat","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".repeat"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".repeat"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"repeat"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"replace","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".replace","insertTextFormat":1,"filterText":".replace","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".replace"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".replace"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"replace"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"replaceAll","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".replaceAll","insertTextFormat":1,"filterText":".replaceAll","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".replaceAll"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".replaceAll"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"replaceAll"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"search","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".search","insertTextFormat":1,"filterText":".search","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".search"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".search"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"search"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"slice","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".slice","insertTextFormat":1,"filterText":".slice","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".slice"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".slice"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"slice"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"split","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".split","insertTextFormat":1,"filterText":".split","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".split"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".split"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"split"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"startsWith","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".startsWith","insertTextFormat":1,"filterText":".startsWith","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".startsWith"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".startsWith"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"startsWith"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"substring","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".substring","insertTextFormat":1,"filterText":".substring","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".substring"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".substring"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"substring"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"Symbol","kind":6,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":"[Symbol]","insertTextFormat":1,"filterText":".[Symbol]","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":"[Symbol]"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"insert":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"replace":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":"[Symbol]"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"Symbol"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"toLocaleLowerCase","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".toLocaleLowerCase","insertTextFormat":1,"filterText":".toLocaleLowerCase","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".toLocaleLowerCase"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".toLocaleLowerCase"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"toLocaleLowerCase"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"toLocaleUpperCase","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".toLocaleUpperCase","insertTextFormat":1,"filterText":".toLocaleUpperCase","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".toLocaleUpperCase"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".toLocaleUpperCase"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"toLocaleUpperCase"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"toLowerCase","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".toLowerCase","insertTextFormat":1,"filterText":".toLowerCase","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".toLowerCase"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".toLowerCase"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"toLowerCase"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"toString","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".toString","insertTextFormat":1,"filterText":".toString","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".toString"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".toString"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"toString"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"toUpperCase","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".toUpperCase","insertTextFormat":1,"filterText":".toUpperCase","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".toUpperCase"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".toUpperCase"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"toUpperCase"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"toWellFormed","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".toWellFormed","insertTextFormat":1,"filterText":".toWellFormed","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".toWellFormed"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".toWellFormed"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"toWellFormed"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"trim","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".trim","insertTextFormat":1,"filterText":".trim","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".trim"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".trim"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"trim"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"trimEnd","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".trimEnd","insertTextFormat":1,"filterText":".trimEnd","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".trimEnd"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".trimEnd"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"trimEnd"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"trimStart","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".trimStart","insertTextFormat":1,"filterText":".trimStart","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".trimStart"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".trimStart"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"trimStart"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"valueOf","kind":2,"sortText":"11","commitCharacters":[".",",",";","("],"insertText":".valueOf","insertTextFormat":1,"filterText":".valueOf","textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".valueOf"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".valueOf"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"valueOf"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"anchor","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".anchor","insertTextFormat":1,"filterText":".anchor","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".anchor"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".anchor"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"anchor"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"big","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".big","insertTextFormat":1,"filterText":".big","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".big"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".big"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"big"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"blink","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".blink","insertTextFormat":1,"filterText":".blink","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".blink"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".blink"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"blink"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"bold","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".bold","insertTextFormat":1,"filterText":".bold","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".bold"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".bold"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"bold"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"fixed","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".fixed","insertTextFormat":1,"filterText":".fixed","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".fixed"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".fixed"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"fixed"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"fontcolor","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".fontcolor","insertTextFormat":1,"filterText":".fontcolor","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".fontcolor"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".fontcolor"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"fontcolor"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"fontsize","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".fontsize","insertTextFormat":1,"filterText":".fontsize","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".fontsize"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".fontsize"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"fontsize"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"italics","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".italics","insertTextFormat":1,"filterText":".italics","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".italics"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".italics"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"italics"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"link","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".link","insertTextFormat":1,"filterText":".link","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".link"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".link"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"link"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"small","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".small","insertTextFormat":1,"filterText":".small","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".small"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".small"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"small"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"strike","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".strike","insertTextFormat":1,"filterText":".strike","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".strike"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".strike"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"strike"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"sub","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".sub","insertTextFormat":1,"filterText":".sub","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".sub"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".sub"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"sub"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"substr","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".substr","insertTextFormat":1,"filterText":".substr","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".substr"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".substr"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"substr"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"sup","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".sup","insertTextFormat":1,"filterText":".sup","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".sup"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".sup"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"sup"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"trimLeft","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".trimLeft","insertTextFormat":1,"filterText":".trimLeft","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".trimLeft"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".trimLeft"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"trimLeft"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}},{"label":"trimRight","kind":2,"sortText":"z11","commitCharacters":[".",",",";","("],"insertText":".trimRight","insertTextFormat":1,"filterText":".trimRight","tags":[1],"textEdit":{"range":{"start":{"line":6,"character":5},"end":{"line":6,"character":6}},"newText":".trimRight"},"data":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","original":{"textEdit":{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":".trimRight"},"data":{"uri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro","fileName":"/home/NAME/git/hub/ORG/REPO/src/components/example.astro","offset":105,"originalItem":{"name":"trimRight"}}},"pluginIndex":3,"embeddedDocumentUri":"volar-embedded-content://tsx/file%253A%252F%252F%252Fhome%252FNAME%252Fgit%252Fhub%252FORG%252FREPO%252Fsrc%252Fcomponents%252Fexample.astro"}}]}}'
RX: Received message: b'{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","diagnostics":[],"version":2}}'
RX: Received message: b'{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/NAME/git/hub/ORG/REPO/src/components/example.astro","diagnostics":[],"version":2}}'

While the extra escaping does not look odd to me, the following does:

EDIT: the 2nd and 3rd point are about refresh requests. Yes, those are not supported. Still, the snippets look out of place.

Princesseuh commented 1 week ago

Apologies, not sure I understand everything. Is it just the language server sending snippet completions even when unsupported by the client?

S0AndS0 commented 1 week ago

Apologies, not sure I understand everything. Is it just the language server sending snippet completions even when unsupported by the client?

Yes, I believe you've got it!... Sorry for the superfluous stuff and mistakes related to double-quote escaping :facepalm:

After cloning the withastro/language-tools repo, and changing directories to packages/language-server I've started searching for snippet related references via;

:vimgrep /\csnippet/ src/**/*.ts

Note: grep --line-number --recursive --ignore-case 'snippet' src/ provides similar results for non-Vim users ;-D

... But none of the bits found seem to have easy access to client defined capabilities;

src/plugins/astro.ts|146 col 28-35| kind: CompletionItemKind.Snippet,
src/plugins/astro.ts|151 col 38-45| insertTextFormat: InsertTextFormat.Snippet,
src/plugins/typescript-addons/index.ts|9 col 13-20| import { getSnippetCompletions } from './snippets.js';
src/plugins/typescript-addons/index.ts|22 col 114-121| // A: Volar will skip mapping the completion items if those functions are defined, as such we can return the snippets
src/plugins/typescript-addons/index.ts|23 col 54-61| // completions as-is, this is notably useful for snippets that insert to the frontmatter, since we don't need to map anything.
src/plugins/typescript-addons/index.ts|49 col 38-45| completionList.items.push(...getSnippetCompletions(root.astroMeta.frontmatter));
src/plugins/typescript-addons/snippets.ts|4 col 20-27| export function getSnippetCompletions(frontmatter: FrontmatterStatus): CompletionItem[] {
src/plugins/typescript-addons/snippets.ts|15 col 29-36| kind: CompletionItemKind.Snippet,
src/plugins/typescript-addons/snippets.ts|31 col 29-36| kind: CompletionItemKind.Snippet,
src/plugins/typescript-addons/snippets.ts|51 col 29-36| kind: CompletionItemKind.Snippet,

If ya got a moment, I'd much appreciate being directed at the correct points of interest and would be delighted to test possible fixes too!

johnsoncodehk commented 1 week ago

This is an issue on the Volar side, it has been fixed in https://github.com/volarjs/volar.js/commit/2787b7998ef74526b323454867a17ca7e209b2d0 and will be released in 2.4.3.

S0AndS0 commented 1 week ago

Ah, thanks for showing me where in the code this feature detection was needed!

... Wow, looks like that commit is fresh too, like less than a half-hour, impressive @johnsoncodehk very impressive :sparkles:

S0AndS0 commented 5 days ago

Howdy again! I spotted the fix got published for volar.js within tag v2.4.4, and checking on my end after an update seems to show no more Astro related errors in YouCompeteMe logs!!!

Break down of what I've tested so far

... So I currently believe this bug to be successfully squished :tada:

Thanks @johnsoncodehk and @Princesseuh for the help and quick fix!

bstaletic commented 4 days ago

Apologies for the late response. @johnsoncodehk Thanks for responding promptly and fixing the snippet thing! That is very appreciated.