Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vscode-css-language-server: autocompletion and auto format do not work with css/scss file #4962

Closed
zummenix opened this issue Dec 1, 2022 · 6 comments
Labels
A-language-server Area: Language server client C-bug Category: This is a bug

Comments

@zummenix
Copy link
Contributor

zummenix commented Dec 1, 2022

Summary

It looks like the LS can't start properly, autocompletion and auto format do not work.

I've chased down the issue to LanguageConfiguration.config being None when handling workspace/configuration LS method call. I'm not sure if it's relevant or not.

doc.language_config()?.config.as_ref()?

Reproduction Steps

I tried this:

  1. have vscode-langservers-extracted installed (which contains vscode-css-language-server)
  2. hx style.css

I expected this to happen:

Autocompletion and auto format works

Instead, this happened:

Autocompletion and auto format do not work

Helix log

~/.cache/helix/helix.log
2022-12-01T23:01:04.113 helix_loader [DEBUG] Located configuration folders: ["/Users/zummenix/projects/helix/.helix"]
2022-12-01T23:01:04.121 helix_view::clipboard [DEBUG] Using pbcopy+pbpaste to interact with the system clipboard
2022-12-01T23:01:04.123 helix_lsp::transport [INFO] -> {"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":{"insertReplaceSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":false},"completionItemKind":{}},"hover":{"contentFormat":["markdown"]},"publishDiagnostics":{},"rename":{"dynamicRegistration":false,"honorsChangeAnnotations":false,"prepareSupport":false},"signatureHelp":{"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown"],"parameterInformation":{"labelOffsetSupport":true}}}},"window":{"workDoneProgress":true},"workspace":{"applyEdit":true,"configuration":true,"didChangeConfiguration":{"dynamicRegistration":false},"executeCommand":{"dynamicRegistration":false},"symbol":{"dynamicRegistration":false},"workspaceFolders":true}},"processId":27160,"rootPath":"/Users/zummenix/projects/helix","rootUri":"file:///Users/zummenix/projects/helix","workspaceFolders":[{"name":"helix","uri":"file:///Users/zummenix/projects/helix"}]},"id":0}
2022-12-01T23:01:04.124 helix_view::editor [DEBUG] editor status: Loaded 1 files.
2022-12-01T23:01:04.124 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0
2022-12-01T23:01:04.243 helix_lsp::transport [INFO] <- {"jsonrpc":"2.0","id":0,"result":{"capabilities":{"textDocumentSync":2,"hoverProvider":true,"documentSymbolProvider":true,"referencesProvider":true,"definitionProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"codeActionProvider":true,"renameProvider":true,"colorProvider":{},"foldingRangeProvider":true,"selectionRangeProvider":true,"diagnosticProvider":{"documentSelector":null,"interFileDependencies":false,"workspaceDiagnostics":false},"documentRangeFormattingProvider":false,"documentFormattingProvider":false}}}
2022-12-01T23:01:04.243 helix_lsp::transport [INFO] <- {"capabilities":{"codeActionProvider":true,"colorProvider":{},"definitionProvider":true,"diagnosticProvider":{"documentSelector":null,"interFileDependencies":false,"workspaceDiagnostics":false},"documentFormattingProvider":false,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentRangeFormattingProvider":false,"documentSymbolProvider":true,"foldingRangeProvider":true,"hoverProvider":true,"referencesProvider":true,"renameProvider":true,"selectionRangeProvider":true,"textDocumentSync":2}}
2022-12-01T23:01:04.243 helix_lsp::transport [INFO] -> {"jsonrpc":"2.0","method":"initialized","params":{}}
2022-12-01T23:01:04.243 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: None, method: "initialized", params: None })))
2022-12-01T23:01:04.243 helix_lsp::transport [INFO] -> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"scss","text":"body {\n  height: 12px;\n  width: 12px;\n}\n","uri":"file:///Users/zummenix/projects/helix/style.scss","version":0}}}
2022-12-01T23:01:04.243 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0
2022-12-01T23:01:04.523 helix_term::application [DEBUG] received editor event: IdleTimer
2022-12-01T23:01:04.751 helix_lsp::transport [INFO] <- {"jsonrpc":"2.0","id":0,"method":"workspace/configuration","params":{"items":[{"scopeUri":"file:///Users/zummenix/projects/helix/style.scss","section":"scss"}]}}
2022-12-01T23:01:04.751 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, MethodCall(MethodCall { jsonrpc: Some(V2), method: "workspace/configuration", params: Map({"items": Array [Object {"scopeUri": String("file:///Users/zummenix/projects/helix/style.scss"), "section": String("scss")}]}), id: Num(0) })))
2022-12-01T23:01:04.752 helix_lsp::transport [INFO] -> {"jsonrpc":"2.0","result":[null],"id":0}
2022-12-01T23:01:04.752 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0
2022-12-01T23:01:04.759 helix_lsp::transport [INFO] <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":1,"message":"Error while validating file:///Users/zummenix/projects/helix/style.scss: Cannot read properties of null (reading 'validProperties')\nTypeError: Cannot read properties of null (reading 'validProperties')\n    at LintConfigurationSettings.getSetting (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice/lib/umd/services/lintRules.js:78:29)\n    at new LintVisitor (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice/lib/umd/services/lint.js:53:41)\n    at LintVisitor.entries (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice/lib/umd/services/lint.js:41:29)\n    at CSSValidation.doValidation (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice/lib/umd/services/cssValidation.js:34:60)\n    at _callee15$ (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/lib/css-language-server/cssServer.js:288:83)\n    at tryCatch (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/regenerator-runtime/runtime.js:64:40)\n    at Generator.invoke (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/regenerator-runtime/runtime.js:299:22)\n    at Generator.next (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/regenerator-runtime/runtime.js:124:21)\n    at asyncGeneratorStep (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/lib/css-language-server/cssServer.js:53:103)\n    at _next (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/lib/css-language-server/cssServer.js:55:194)"}}
2022-12-01T23:01:04.759 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Error while validating file:///Users/zummenix/projects/helix/style.scss: Cannot read properties of null (reading 'validProperties')\nTypeError: Cannot read properties of null (reading 'validProperties')\n    at LintConfigurationSettings.getSetting (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice/lib/umd/services/lintRules.js:78:29)\n    at new LintVisitor (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice/lib/umd/services/lint.js:53:41)\n    at LintVisitor.entries (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice/lib/umd/services/lint.js:41:29)\n    at CSSValidation.doValidation (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice/lib/umd/services/cssValidation.js:34:60)\n    at _callee15$ (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/lib/css-language-server/cssServer.js:288:83)\n    at tryCatch (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/regenerator-runtime/runtime.js:64:40)\n    at Generator.invoke (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/regenerator-runtime/runtime.js:299:22)\n    at Generator.next (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/regenerator-runtime/runtime.js:124:21)\n    at asyncGeneratorStep (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/lib/css-language-server/cssServer.js:53:103)\n    at _next (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/lib/css-language-server/cssServer.js:55:194)"), "type": Number(1)}) })))
2022-12-01T23:01:04.759 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Error, message: "Error while validating file:///Users/zummenix/projects/helix/style.scss: Cannot read properties of null (reading 'validProperties')\nTypeError: Cannot read properties of null (reading 'validProperties')\n    at LintConfigurationSettings.getSetting (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice/lib/umd/services/lintRules.js:78:29)\n    at new LintVisitor (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice/lib/umd/services/lint.js:53:41)\n    at LintVisitor.entries (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice/lib/umd/services/lint.js:41:29)\n    at CSSValidation.doValidation (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice/lib/umd/services/cssValidation.js:34:60)\n    at _callee15$ (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/lib/css-language-server/cssServer.js:288:83)\n    at tryCatch (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/regenerator-runtime/runtime.js:64:40)\n    at Generator.invoke (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/regenerator-runtime/runtime.js:299:22)\n    at Generator.next (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/node_modules/regenerator-runtime/runtime.js:124:21)\n    at asyncGeneratorStep (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/lib/css-language-server/cssServer.js:53:103)\n    at _next (/opt/homebrew/lib/node_modules/vscode-langservers-extracted/lib/css-language-server/cssServer.js:55:194)" }
2022-12-01T23:01:05.675 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0
2022-12-01T23:01:06.076 helix_term::application [DEBUG] received editor event: IdleTimer
2022-12-01T23:01:06.165 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0
2022-12-01T23:01:06.567 helix_term::application [DEBUG] received editor event: IdleTimer
2022-12-01T23:01:07.235 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0
2022-12-01T23:01:07.635 helix_term::application [DEBUG] received editor event: IdleTimer
2022-12-01T23:01:07.703 helix_term::commands::typed [DEBUG] quitting...
2022-12-01T23:01:07.704 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0
2022-12-01T23:01:07.928 helix_term::commands::typed [DEBUG] quitting...
2022-12-01T23:01:07.928 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0
2022-12-01T23:01:07.928 helix_term::job [DEBUG] waiting on jobs...
2022-12-01T23:01:07.928 helix_term::job [DEBUG] waiting on jobs...
2022-12-01T23:01:07.928 helix_lsp::transport [INFO] -> {"jsonrpc":"2.0","method":"shutdown","params":null,"id":1}
2022-12-01T23:01:07.930 helix_lsp::transport [INFO] <- {"jsonrpc":"2.0","id":1,"result":null}
2022-12-01T23:01:07.930 helix_lsp::transport [INFO] <- null
2022-12-01T23:01:07.930 helix_lsp::transport [INFO] -> {"jsonrpc":"2.0","method":"exit","params":null}

Platform

macOS

Terminal Emulator

iTerm2

Helix Version

helix 22.08.1 (5a3ff74)

@zummenix zummenix added the C-bug Category: This is a bug label Dec 1, 2022
@zummenix
Copy link
Contributor Author

zummenix commented Dec 2, 2022

Actually, the error in the log is unrelated.

I've done git bisect and found out the last good commit where autocomplete works is 1db01ca, the bad is 9059c65 (autocomplete doesn't work). There is no difference in log output between these two versions even with -vvv.

cc @the-mikedavis

@zummenix zummenix changed the title vscode-css-language-server: reports error when opening css/scss file vscode-css-language-server: autocompletion and auto format do not work with css/scss file Dec 2, 2022
@zummenix
Copy link
Contributor Author

zummenix commented Dec 2, 2022

Seems like the LS doesn't have completionProvider capability set. That's strange.

@the-mikedavis
Copy link
Member

Yeah it looks like the server doesn't send any information about the completion provider.

The LSP spec is not explicit as far as I can tell about whether this means that the server does/doesn't provide completion support. Some providers configs in the server capabilities have booleans so that a server can explicitly say false if the method is not supported. Completion and signature help are just configuration maps though. In #3554 we interpret this so that if the provider configuration isn't sent, the server doesn't support completion. Alternatively we could assume that those are always implemented. That doesn't feel quite right but I guess that's what other clients are doing?

@the-mikedavis the-mikedavis added the A-language-server Area: Language server client label Dec 3, 2022
@zummenix
Copy link
Contributor Author

zummenix commented Dec 3, 2022

I was able to make the LS to say that it has completion provider capability by setting snippetSupport to true in our client capabilities:

snippet_support: Some(false),

I guess this is correct behaviour on the LS side assuming it only supports completion with snppets.

@zummenix
Copy link
Contributor Author

zummenix commented Dec 3, 2022

Snippets are not yet implemented: #395

@zummenix
Copy link
Contributor Author

zummenix commented Dec 3, 2022

Regarding auto format, the option should be set in the language config. I've opened a related PR #4987

Closing this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-language-server Area: Language server client C-bug Category: This is a bug
Projects
None yet
Development

No branches or pull requests

2 participants