lsp in ftplugin austonautomoy

This commit is contained in:
christianchiarulli 2021-07-01 23:42:26 -04:00
parent 9bb4f8a085
commit 20ed47e21e
45 changed files with 404 additions and 142 deletions

View file

@ -1,3 +1,4 @@
-- TODO find correct root filetype
-- :LspInstall angular
require'lspconfig'.angularls.setup {
cmd = {DATA_PATH .. "/lspinstall/angular/node_modules/@angular/language-server/bin/ngserver", "--stdio"},

View file

@ -1,6 +0,0 @@
-- npm i -g bash-language-server
require'lspconfig'.bashls.setup {
cmd = {DATA_PATH .. "/lspinstall/bash/node_modules/.bin/bash-language-server", "start"},
on_attach = require'lsp'.common_on_attach,
filetypes = { "sh", "zsh" }
}

View file

@ -1,13 +0,0 @@
require'lspconfig'.clangd.setup {
cmd = {DATA_PATH .. "/lspinstall/cpp/clangd/bin/clangd"},
on_attach = require'lsp'.common_on_attach,
handlers = {
["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
virtual_text = O.lang.clang.diagnostics.virtual_text,
signs = O.lang.clang.diagnostics.signs,
underline = O.lang.clang.diagnostics.underline,
update_in_insert = true
})
}
}

View file

@ -1,5 +0,0 @@
require'lspconfig'.cmake.setup {
cmd = {DATA_PATH .. '/lspinstall/cmake/venv/bin/cmake-language-server'},
on_attach = require'lsp'.common_on_attach,
filetypes = {"cmake"},
}

View file

@ -1,8 +0,0 @@
-- npm install -g vscode-css-languageserver-bin
require'lspconfig'.cssls.setup {
cmd = {
"node", DATA_PATH .. "/lspinstall/css/vscode-css/css-language-features/server/dist/node/cssServerMain.js",
"--stdio"
},
on_attach = require'lsp'.common_on_attach
}

View file

@ -1,11 +0,0 @@
require'lspconfig'.dartls.setup{
cmd = { "dart", O.lang.dart.sdk_path, "--lsp" },
on_attach = require'lsp'.common_on_attach,
init_options = {
closingLabels = false,
flutterOutline = false,
onlyAnalyzeProjectsWithOpenFiles = false,
outline = false,
suggestFromUnimportedLibraries = true
}
}

View file

@ -1,6 +0,0 @@
-- npm install -g dockerfile-language-server-nodejs
require'lspconfig'.dockerls.setup {
cmd = {DATA_PATH .. "/lspinstall/dockerfile/node_modules/.bin/docker-langserver", "--stdio"},
on_attach = require'lsp'.common_on_attach,
root_dir = vim.loop.cwd
}

View file

@ -1,62 +1,4 @@
-- Example configuations here: https://github.com/mattn/efm-langserver
-- TODO this file needs to be refactored eache lang should be it's own file
-- python
local python_arguments = {}
-- TODO replace with path argument
local flake8 = {
LintCommand = "flake8 --ignore=E501 --stdin-display-name ${INPUT} -",
lintStdin = true,
lintFormats = {"%f:%l:%c: %m"}
}
local isort = {formatCommand = "isort --quiet -", formatStdin = true}
local yapf = {formatCommand = "yapf --quiet", formatStdin = true}
local black = {formatCommand = "black --quiet -", formatStdin = true}
if O.lang.python.linter == 'flake8' then table.insert(python_arguments, flake8) end
if O.lang.python.isort then table.insert(python_arguments, isort) end
if O.lang.python.formatter == 'yapf' then
table.insert(python_arguments, yapf)
elseif O.lang.python.formatter == 'black' then
table.insert(python_arguments, black)
end
-- lua
local lua_arguments = {}
local luaFormat = {
formatCommand = "lua-format -i --no-keep-simple-function-one-line --column-limit=80",
formatStdin = true
}
local lua_fmt = {
formatCommand = "luafmt --indent-count 2 --line-width 120 --stdin",
formatStdin = true
}
if O.lang.lua.formatter == 'lua-format' then
table.insert(lua_arguments, luaFormat)
elseif O.lang.lua.formatter == 'lua-fmt' then
table.insert(lua_arguments, lua_fmt)
end
-- sh
local sh_arguments = {}
local shfmt = {formatCommand = 'shfmt -ci -s -bn', formatStdin = true}
local shellcheck = {
LintCommand = 'shellcheck -f gcc -x',
lintFormats = {'%f:%l:%c: %trror: %m', '%f:%l:%c: %tarning: %m', '%f:%l:%c: %tote: %m'}
}
if O.lang.sh.formatter == 'shfmt' then table.insert(sh_arguments, shfmt) end
if O.lang.sh.linter == 'shellcheck' then table.insert(sh_arguments, shellcheck) end
-- tsserver/web javascript react, vue, json, html, css, yaml
local prettier = {formatCommand = "prettier --stdin-filepath ${INPUT}", formatStdin = true}
@ -96,9 +38,6 @@ require"lspconfig".efm.setup {
settings = {
rootMarkers = {".git/"},
languages = {
python = python_arguments,
lua = lua_arguments,
sh = sh_arguments,
javascript = tsserver_args,
javascriptreact = tsserver_args,
typescript = tsserver_args,

View file

@ -1,10 +0,0 @@
require'lspconfig'.elixirls.setup{
cmd = { DATA_PATH .. "/lspinstall/elixir/elixir-ls/language_server.sh"};
}
-- needed for the LSP to recognize elixir files (alternativly just use elixir-editors/vim-elixir)
vim.cmd([[
au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
au BufRead,BufNewFile *.eex,*.leex,*.sface set filetype=eelixir
au BufRead,BufNewFile mix.lock set filetype=elixir
]])

View file

@ -1,9 +0,0 @@
require'lspconfig'.elmls.setup {
cmd = {DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-language-server"},
init_options= {
elmAnalyseTrigger = "change",
elmFormatPath = DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-format",
elmPath = DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm",
elmTestPath = DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-test"
}
}

View file

@ -6,7 +6,7 @@ capabilities.textDocument.completion.completionItem.snippetSupport = true
configs.emmet_ls = {
default_config = {
cmd = {'emmet-ls', '--stdio'};
filetypes = {'html', 'css'};
filetypes = {'html', 'css', 'javascript', 'javascriptreact', 'typescript', 'typescriptreact'};
root_dir = function()
return vim.loop.cwd()
end;

View file

@ -1,22 +0,0 @@
require'lspconfig'.gopls.setup {
cmd = {DATA_PATH .. "/lspinstall/go/gopls"},
settings = {gopls = {analyses = {unusedparams = true}, staticcheck = true}},
root_dir = require'lspconfig'.util.root_pattern(".git", "go.mod"),
init_options = {usePlaceholders = true, completeUnimported = true},
on_attach = require'lsp'.common_on_attach
}
if O.lang.go.autoformat then
require('lv-utils').define_augroups({
_go_format = {
{'BufWritePre', '*.go', 'lua vim.lsp.buf.formatting_sync(nil,1000)'}
},
_go = {
-- Go generally requires Tabs instead of spaces.
{'FileType', 'go', 'setlocal tabstop=4'},
{'FileType', 'go', 'setlocal shiftwidth=4'},
{'FileType', 'go', 'setlocal softtabstop=4'},
{'FileType', 'go', 'setlocal noexpandtab'}
}
})
end

View file

@ -1,2 +0,0 @@
-- npm install -g graphql-language-service-cli
require'lspconfig'.graphql.setup {on_attach = require'lsp'.common_on_attach}

View file

@ -1,9 +0,0 @@
-- npm install -g vscode-html-languageserver-bin
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.completion.completionItem.snippetSupport = true
require'lspconfig'.html.setup {
cmd = {"node", DATA_PATH .. "/lspinstall/html/vscode-html/html-language-features/server/dist/node/htmlServerMain.js", "--stdio"},
on_attach = require'lsp'.common_on_attach,
capabilities = capabilities
}

View file

@ -1,50 +0,0 @@
local util = require 'lspconfig/util'
-- In Vimscript
-- augroup lsp
-- au!
-- au FileType java lua require('jdtls').start_or_attach({cmd = {'java-linux-ls'}})
-- augroup end
-- find_root looks for parent directories relative to the current buffer containing one of the given arguments.
-- require'lspconfig'.jdtls.setup {cmd = {'java-linux-ls'}}
-- if vim.fn.has("mac") == 1 then
-- JAVA_LS_EXECUTABLE = 'java-mac-ls'
-- elseif vim.fn.has("unix") == 1 then
-- JAVA_LS_EXECUTABLE = 'java-linux-ls'
-- else
-- print("Unsupported system")
-- end
-- local bundles = {
-- vim.fn.glob(
-- CONFIG_PATH.."/.debuggers/java-debug/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-*.jar")
-- };
local on_attach = function(client, bufr)
-- require('jdtls').setup_dap()
require'lsp'.common_on_attach(client, bufr)
end
require'lspconfig'.jdtls.setup {
on_attach = on_attach,
cmd = {DATA_PATH .. "/lspinstall/java/jdtls.sh"},
filetypes = { "java" },
root_dir = util.root_pattern({'.git', 'build.gradle', 'pom.xml'}),
-- init_options = {bundles = bundles}
-- on_attach = require'lsp'.common_on_attach
}
-- require('jdtls').start_or_attach({
-- on_attach = on_attach,
-- cmd = {DATA_PATH .. "/lspinstall/java/jdtls.sh"},
-- root_dir = require('jdtls.setup').find_root({'build.gradle', 'pom.xml', '.git'}),
-- init_options = {bundles = bundles}
-- })
-- TODO setup autoformat stuff later
-- _java = {
-- -- {'FileType', 'java', 'luafile '..CONFIG_PATH..'/lua/lsp/java-ls.lua'},
-- {
-- 'FileType', 'java',
-- 'nnoremap ca <Cmd>lua require(\'jdtls\').code_action()<CR>'
-- }
-- }

View file

@ -1,67 +0,0 @@
-- npm install -g typescript typescript-language-server
-- require'snippets'.use_suggested_mappings()
-- local capabilities = vim.lsp.protocol.make_client_capabilities()
-- capabilities.textDocument.completion.completionItem.snippetSupport = true;
-- local on_attach_common = function(client)
-- print("LSP Initialized")
-- require'completion'.on_attach(client)
-- require'illuminate'.on_attach(client)
-- end
require'lspconfig'.tsserver.setup {
cmd = {
DATA_PATH ..
"/lspinstall/typescript/node_modules/.bin/typescript-language-server",
"--stdio"
},
filetypes = {
"javascript", "javascriptreact", "javascript.jsx", "typescript",
"typescriptreact", "typescript.tsx"
},
on_attach = require'lsp'.tsserver_on_attach,
-- This makes sure tsserver is not used for formatting (I prefer prettier)
-- on_attach = require'lsp'.common_on_attach,
root_dir = require('lspconfig/util').root_pattern("package.json",
"tsconfig.json",
"jsconfig.json", ".git"),
settings = {documentFormatting = false},
handlers = {
["textDocument/publishDiagnostics"] = vim.lsp.with(
vim.lsp.diagnostic.on_publish_diagnostics, {
virtual_text = O.lang.tsserver.diagnostics.virtual_text,
signs = O.lang.tsserver.diagnostics.signs,
underline = O.lang.tsserver.diagnostics.underline,
update_in_insert = true
})
}
}
if O.lang.tsserver.autoformat then
require('lv-utils').define_augroups({
_javascript_autoformat = {
{
'BufWritePre', '*.js',
'lua vim.lsp.buf.formatting_sync(nil, 1000)'
}
},
_javascriptreact_autoformat = {
{
'BufWritePre', '*.jsx',
'lua vim.lsp.buf.formatting_sync(nil, 1000)'
}
},
_typescript_autoformat = {
{
'BufWritePre', '*.ts',
'lua vim.lsp.buf.formatting_sync(nil, 1000)'
}
},
_typescriptreact_autoformat = {
{
'BufWritePre', '*.tsx',
'lua vim.lsp.buf.formatting_sync(nil, 1000)'
}
}
})
end

View file

@ -1,28 +0,0 @@
-- npm install -g vscode-json-languageserver
require'lspconfig'.jsonls.setup {
cmd = {
"node", DATA_PATH ..
"/lspinstall/json/vscode-json/json-language-features/server/dist/node/jsonServerMain.js",
"--stdio"
},
on_attach = require'lsp'.common_on_attach,
commands = {
Format = {
function()
vim.lsp.buf.range_formatting({}, {0, 0}, {vim.fn.line("$"), 0})
end
}
}
}
if O.lang.json.autoformat then
require('lv-utils').define_augroups({
_json_format = {
{
'BufWritePre', '*.json',
'lua vim.lsp.buf.formatting_sync(nil, 1000)'
}
}
})
end

View file

@ -1,36 +0,0 @@
--- default config for gradle-projects of the
--- kotlin-language-server: https://github.com/fwcd/kotlin-language-server
---
--- This server requires vim to be aware of the kotlin-filetype.
--- You could refer for this capability to:
--- https://github.com/udalov/kotlin-vim (recommended)
--- Note that there is no LICENSE specified yet.
local util = require 'lspconfig/util'
local bin_name = DATA_PATH .. "/lspinstall/kotlin/server/bin/kotlin-language-server"
if vim.fn.has('win32') == 1 then
bin_name = bin_name..".bat"
end
local root_files = {
'settings.gradle', -- Gradle (multi-project)
'settings.gradle.kts', -- Gradle (multi-project)
'build.xml', -- Ant
'pom.xml', -- Maven
}
local fallback_root_files = {
'build.gradle', -- Gradle
'build.gradle.kts', -- Gradle
}
require'lspconfig'.kotlin_language_server.setup {
cmd = {bin_name},
on_attach = require'lsp'.common_on_attach,
root_dir = function(fname)
return util.root_pattern(unpack(root_files))(fname) or
util.root_pattern(unpack(fallback_root_files))(fname)
end
}

View file

@ -1,4 +0,0 @@
require'lspconfig'.texlab.setup{
cmd = {DATA_PATH .. "/lspinstall/latex/texlab"},
on_attach = require'lsp'.common_on_attach
}

View file

@ -1,41 +0,0 @@
-- https://github.com/sumneko/lua-language-server/wiki/Build-and-Run-(Standalone)
local sumneko_root_path = DATA_PATH .. "/lspinstall/lua"
local sumneko_binary = sumneko_root_path .. "/sumneko-lua-language-server"
require'lspconfig'.sumneko_lua.setup {
cmd = {sumneko_binary, "-E", sumneko_root_path .. "/main.lua"},
on_attach = require'lsp'.common_on_attach,
settings = {
Lua = {
runtime = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = 'LuaJIT',
-- Setup your lua path
path = vim.split(package.path, ';')
},
diagnostics = {
-- Get the language server to recognize the `vim` global
globals = {'vim'}
},
workspace = {
-- Make the server aware of Neovim runtime files
library = {
[vim.fn.expand('$VIMRUNTIME/lua')] = true,
[vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true
},
maxPreload = 10000
}
}
}
}
if O.lang.lua.autoformat then
require('lv-utils').define_augroups({
_lua_autoformat = {
{
'BufWritePre', '*.lua',
'lua vim.lsp.buf.formatting_sync(nil, 1000)'
}
}
})
end

View file

@ -1,4 +0,0 @@
require'lspconfig'.intelephense.setup {
cmd = { DATA_PATH .. "/lspinstall/php/node_modules/.bin/intelephense", "--stdio" },
on_attach = require'lsp'.common_on_attach
}

View file

@ -1,38 +0,0 @@
-- npm i -g pyright
require'lspconfig'.pyright.setup {
cmd = {
DATA_PATH .. "/lspinstall/python/node_modules/.bin/pyright-langserver",
"--stdio"
},
on_attach = require'lsp'.common_on_attach,
handlers = {
["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic
.on_publish_diagnostics,
{
virtual_text = O.lang.python.diagnostics.virtual_text,
signs = O.lang.python.diagnostics.signs,
underline = O.lang.python.diagnostics.underline,
update_in_insert = true
})
},
settings = {
python = {
analysis = {
typeCheckingMode = O.lang.python.analysis.type_checking,
autoSearchPaths = O.lang.python.analysis.auto_search_paths,
useLibraryCodeForTypes = O.lang.python.analysis
.use_library_code_types
}
}
}
}
if O.lang.python.autoformat then
require('lv-utils').define_augroups({
_python_autoformat = {
{
'BufWritePre', '*.py',
'lua vim.lsp.buf.formatting_sync(nil, 1000)'
}
}
})
end

View file

@ -1,24 +0,0 @@
-- If you are using rvm, make sure to change below configuration
require'lspconfig'.solargraph.setup {
cmd = {DATA_PATH .. "/lspinstall/ruby/solargraph/solargraph", "--stdio"},
on_attach = require'lsp'.common_on_attach,
handlers = {
["textDocument/publishDiagnostics"] = vim.lsp.with(
vim.lsp.diagnostic.on_publish_diagnostics, {
virtual_text = O.lang.ruby.diagnostics.virtual_text,
signs = O.lang.ruby.diagnostics.signs,
underline = O.lang.ruby.diagnostics.underline,
update_in_insert = true
})
},
filetypes = O.lang.ruby.filetypes
}
if O.lang.ruby.autoformat then
require('lv-utils').define_augroups({
_ruby_format = {
{'BufWritePre', '*.rb', 'lua vim.lsp.buf.formatting_sync(nil,1000)'}
}
})
end

View file

@ -1,87 +0,0 @@
local opts = {
tools = { -- rust-tools options
-- automatically set inlay hints (type hints)
-- There is an issue due to which the hints are not applied on the first
-- opened file. For now, write to the file to trigger a reapplication of
-- the hints or just run :RustSetInlayHints.
-- default: true
autoSetHints = true,
-- whether to show hover actions inside the hover window
-- this overrides the default hover handler
-- default: true
hover_with_actions = true,
runnables = {
-- whether to use telescope for selection menu or not
-- default: true
use_telescope = true
-- rest of the opts are forwarded to telescope
},
inlay_hints = {
-- wheter to show parameter hints with the inlay hints or not
-- default: true
show_parameter_hints = true,
-- prefix for parameter hints
-- default: "<-"
parameter_hints_prefix = "<-",
-- prefix for all the other hints (type, chaining)
-- default: "=>"
other_hints_prefix = "=>",
-- whether to align to the lenght of the longest line in the file
max_len_align = false,
-- padding from the left if max_len_align is true
max_len_align_padding = 1,
-- whether to align to the extreme right or not
right_align = false,
-- padding from the right if right_align is true
right_align_padding = 7
},
hover_actions = {
-- the border that is used for the hover window
-- see vim.api.nvim_open_win()
border = {
{"", "FloatBorder"}, {"", "FloatBorder"},
{"", "FloatBorder"}, {"", "FloatBorder"},
{"", "FloatBorder"}, {"", "FloatBorder"},
{"", "FloatBorder"}, {"", "FloatBorder"}
}
}
},
-- all the opts to send to nvim-lspconfig
-- these override the defaults set by rust-tools.nvim
-- see https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md#rust_analyzer
server = {
cmd = {DATA_PATH .. "/lspinstall/rust/rust-analyzer"},
on_attach = require'lsp'.common_on_attach
} -- rust-analyser options
}
require('rust-tools').setup(opts)
-- TODO add this later
vim.api.nvim_exec([[
autocmd Filetype rust nnoremap <leader>lm <Cmd>RustExpandMacro<CR>
autocmd Filetype rust nnoremap <leader>lH <Cmd>RustToggleInlayHints<CR>
autocmd Filetype rust nnoremap <leader>le <Cmd>RustRunnables<CR>
autocmd Filetype rust nnoremap <leader>lh <Cmd>RustHoverActions<CR>
]], true)
if O.lang.rust.autoformat then
require('lv-utils').define_augroups({
_rust_format = {
{'BufWritePre', '*.rs', 'lua vim.lsp.buf.formatting_sync(nil,1000)'}
}
})
end

View file

@ -1,3 +1,4 @@
-- TODO what is a svelte filetype
require'lspconfig'.svelte.setup {
cmd = {DATA_PATH .. "/lspinstall/svelte/node_modules/.bin/svelteserver", "--stdio"},
on_attach = require'lsp'.common_on_attach

View file

@ -1,3 +1,4 @@
-- TODO what is a tailwindcss filetype
local lspconfig = require 'lspconfig'
lspconfig.tailwindcss.setup {

View file

@ -1,5 +0,0 @@
require'lspconfig'.terraformls.setup{
cmd = {DATA_PATH .. "/lspinstall/terraform/terraform-ls", "serve"},
on_attach = require'lsp'.common_on_attach,
filetypes = { "tf", "terraform", "hcl" }
}

View file

@ -1,5 +0,0 @@
-- npm install -g vim-language-server
require'lspconfig'.vimls.setup {
cmd = {DATA_PATH .. "/lspinstall/vim/node_modules/.bin/vim-language-server", "--stdio"},
on_attach = require'lsp'.common_on_attach
}

View file

@ -1,6 +0,0 @@
require('lspconfig').vuels.setup {
cmd = {DATA_PATH .. "/lspinstall/vue/node_modules/.bin/vls", "--stdio"},
on_attach = require'lsp'.common_on_attach,
root_dir = require('lspconfig').util.root_pattern(".git", ".")
}

View file

@ -1,5 +0,0 @@
-- npm install -g yaml-language-server
require'lspconfig'.yamlls.setup{
cmd = {DATA_PATH .. "/lspinstall/yaml/node_modules/.bin/yaml-language-server", "--stdio"},
on_attach = require'lsp'.common_on_attach,
}