diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index c8cef1c7..fd682bee 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -411,7 +411,7 @@ func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufT // initializes an LSP server if possible, or calls didOpen on an existing // LSP server in this workspace func (b *Buffer) lspInit() { - ft := b.Settings["filetype"].(string) + ft := lsp.Filetype(b.Settings["filetype"].(string)) l, ok := lsp.GetLanguage(ft) if ok && l.Installed() { b.Server = lsp.GetServer(l, gopath.Dir(b.AbsPath)) diff --git a/internal/lsp/languages.go b/internal/lsp/languages.go new file mode 100644 index 00000000..18f64726 --- /dev/null +++ b/internal/lsp/languages.go @@ -0,0 +1,20 @@ +package lsp + +// mappings for when micro filetypes don't match LSP language identifiers +var languages = map[string]string{ + "batch": "bat", + "c++": "cpp", + "git-rebase-todo": "git-rebase", + "html4": "html", + "html5": "html", + "python2": "python", + "shell": "shellscript", + // "tex": "latex", +} + +func Filetype(ft string) string { + if l, ok := languages[ft]; ok { + return l + } + return ft +} diff --git a/internal/lsp/servers_toml.go b/internal/lsp/servers_toml.go index 63a64157..5d4e7676 100644 --- a/internal/lsp/servers_toml.go +++ b/internal/lsp/servers_toml.go @@ -76,4 +76,13 @@ install = [["npm", "install", "-g", "vim-language-server"]] command = "purescript-language-server" args = ["--stdio"] install = [["npm", "install", "-g", "purescript-language-server"]] + +[language.verilog] +command = "svls" +args = [] +install = [["cargo", "install", "svls"]] + +[language.d] +command = "serve-d" +args = [] `