diff --git a/README.md b/README.md index 3c00f34..8b75074 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,7 @@ You can change the directory to install servers by set `g:lsp_settings_servers_d | Clojure | clojure-lsp | Yes | Yes | | Clojure | clj-kondo-lsp | Yes | Yes | | Cmake | cmake-language-server | Yes | Yes | +| Crystal | crystalline | Yes | Yes | | D | dls | Yes | No | | D | serve-d | Yes | No | | Dart | analysis-server-dart-snapshot | Yes | Yes | diff --git a/settings.json b/settings.json index 3d85675..dc0f0c9 100644 --- a/settings.json +++ b/settings.json @@ -193,6 +193,20 @@ "requires": [] } ], + "crystal": [ + { + "command": "crystalline", + "url": "https://github.com/elbywan/crystalline", + "description": "A Language Server Protocol implementation for Crystal. 🔮", + "requires": [], + "vim_plugin": { + "extensions": [ + "cr" + ], + "name": "vim-crystal/vim-crystal" + } + } + ], "cs": [ { "command": "omnisharp-lsp", diff --git a/settings/crystalline.vim b/settings/crystalline.vim new file mode 100644 index 0000000..bb724b1 --- /dev/null +++ b/settings/crystalline.vim @@ -0,0 +1,14 @@ +augroup vim_lsp_settings_crystalline + au! + LspRegisterServer { + \ 'name': 'crystalline', + \ 'cmd': {server_info->lsp_settings#get('crystalline', 'cmd', [lsp_settings#exec_path('crystalline')]+lsp_settings#get('crystalline', 'args', []))}, + \ 'root_uri':{server_info->lsp_settings#get('crystalline', 'root_uri', lsp_settings#root_uri('crystalline'))}, + \ 'initialization_options': lsp_settings#get('crystalline', 'initialization_options', {'diagnostics': 'true'}), + \ 'allowlist': lsp_settings#get('crystalline', 'allowlist', ['crystal']), + \ 'blocklist': lsp_settings#get('crystalline', 'blocklist', []), + \ 'config': lsp_settings#get('crystalline', 'config', lsp_settings#server_config('crystalline')), + \ 'workspace_config': lsp_settings#get('crystalline', 'workspace_config', {}), + \ 'semantic_highlight': lsp_settings#get('crystalline', 'semantic_highlight', {}), + \ } +augroup END