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},
|
2021-07-03 17:27:00 +02:00
|
|
|
filetypes = {"python"},
|
2021-07-02 05:42:26 +02:00
|
|
|
settings = {
|
|
|
|
rootMarkers = {".git/", "requirements.txt"},
|
|
|
|
languages = {
|
|
|
|
python = python_arguments,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-03-16 04:11:39 +01:00
|
|
|
-- 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-05-03 22:37:12 +02:00
|
|
|
},
|
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-05-03 22:37:12 +02:00
|
|
|
}
|
2021-03-27 08:49:27 +01:00
|
|
|
}
|
2021-03-18 01:32:52 +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
|