LunarVim/ftplugin/python.lua

88 lines
2.5 KiB
Lua
Raw Normal View History

2021-07-02 05:42:26 +02:00
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
require"lspconfig".efm.setup {
-- init_options = {initializationOptions},
cmd = {DATA_PATH .. "/lspinstall/efm/efm-langserver"},
init_options = {documentFormatting = true, codeAction = false},
filetypes = {"lua", "python", "javascriptreact", "javascript", "typescript","typescriptreact","sh", "html", "css", "yaml", "markdown", "vue"},
settings = {
rootMarkers = {".git/", "requirements.txt"},
languages = {
python = python_arguments,
}
}
}
-- npm i -g pyright
2021-03-23 23:55:12 +01:00
require'lspconfig'.pyright.setup {
2021-07-01 00:45:40 +02:00
cmd = {
DATA_PATH .. "/lspinstall/python/node_modules/.bin/pyright-langserver",
"--stdio"
},
2021-03-27 08:01:24 +01:00
on_attach = require'lsp'.common_on_attach,
2021-03-27 08:49:27 +01:00
handlers = {
2021-07-01 00:45:40 +02:00
["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic
.on_publish_diagnostics,
{
2021-06-28 06:36:29 +02:00
virtual_text = O.lang.python.diagnostics.virtual_text,
signs = O.lang.python.diagnostics.signs,
underline = O.lang.python.diagnostics.underline,
2021-03-27 08:49:27 +01:00
update_in_insert = true
})
},
2021-07-01 00:45:40 +02:00
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
}
}
2021-03-27 08:49:27 +01:00
}
}
2021-07-01 00:45:40 +02:00
if O.lang.python.autoformat then
require('lv-utils').define_augroups({
_python_autoformat = {
{
'BufWritePre', '*.py',
'lua vim.lsp.buf.formatting_sync(nil, 1000)'
}
}
})
end