fix(lsp): Fix LSP server attachment and JSON parsing issues
- Replace lspconfig.scl_lsp registration with vim.lsp.start() + FileType autocmd for Neovim 0.11+ compatibility - Fix Lua reserved keyword 'end' in tables (use bracket notation ['end']) - Fix JSON decoder pattern matching bugs (s:find -> s:sub:match) - Add LSP method name conversion (textDocument/didOpen -> textDocument_didOpen) - Handle request vs notification correctly (only respond to requests with id) - Strip CRLF line endings for Windows compatibility - Add semantic token handler aliases - Update documentation with implementation notes
This commit is contained in:
@@ -253,10 +253,24 @@ myVar.temperature := 25.5;
|
||||
END_FUNCTION_BLOCK
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
The plugin uses a standalone LSP server (`src/main.lua`) that communicates via JSON-RPC over stdio. The server handles:
|
||||
- Text document synchronization
|
||||
- Diagnostics (linting)
|
||||
- Formatting
|
||||
- Completion, hover, go-to-definition
|
||||
- Semantic tokens
|
||||
|
||||
The Neovim plugin (`lua/scl_lsp/init.lua`) manages:
|
||||
- LSP client lifecycle via `vim.lsp.start()`
|
||||
- FileType autocmd for lazy loading
|
||||
- blink.cmp integration
|
||||
- Workspace scanning for UDTs/DBs
|
||||
|
||||
## Requirements
|
||||
|
||||
- **Neovim 0.9+**
|
||||
- **nvim-lspconfig** - LSP client
|
||||
- **Neovim 0.11+** (uses `vim.lsp.start()`)
|
||||
- **nvim-treesitter** - Syntax highlighting
|
||||
- **blink.cmp** - Optional, for completion
|
||||
- **Lua 5.1+** - LSP server runtime
|
||||
|
||||
Reference in New Issue
Block a user