diff options
author | Chris <[email protected]> | 2021-07-14 00:21:32 -0400 |
---|---|---|
committer | Chris <[email protected]> | 2021-07-14 00:21:32 -0400 |
commit | 2d65ffcff2600cddc81a0e5c137974226e99054e (patch) | |
tree | 8a9a423792c6bc675934dd01566fd86a2d927373 /lua/lsp/python-ls.lua | |
parent | 327955348174646e8f4c0eea62f9f25462f4ac28 (diff) |
begine language refactor
Diffstat (limited to 'lua/lsp/python-ls.lua')
-rw-r--r-- | lua/lsp/python-ls.lua | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/lua/lsp/python-ls.lua b/lua/lsp/python-ls.lua new file mode 100644 index 00000000..1631577b --- /dev/null +++ b/lua/lsp/python-ls.lua @@ -0,0 +1,98 @@ +local M = {} + +M.format = function() + O.formatters.filetype["python"] = { + function() + return { + exe = O.lang.python.formatter.exe, + args = O.lang.python.formatter.args, + stdin = not (O.lang.python.formatter.stdin ~= nil), + } + end, + } + + require("formatter.config").set_defaults { + logging = false, + filetype = O.formatters.filetype, + } +end + +M.lint = function() + if require("lv-utils").check_lsp_client_active "efm" then + return + end + 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 } + + 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 not require("lv-utils").check_lsp_client_active "efm" then + require("lspconfig").efm.setup { + -- init_options = {initializationOptions}, + cmd = { DATA_PATH .. "/lspinstall/efm/efm-langserver" }, + init_options = { documentFormatting = true, codeAction = false }, + root_dir = require("lspconfig").util.root_pattern(".git/", "requirements.txt"), + filetypes = { "python" }, + settings = { + rootMarkers = { ".git/", "requirements.txt" }, + languages = { + python = python_arguments, + }, + }, + } + end +end + +M.lsp = function() + if require("lv-utils").check_lsp_client_active "pyright" then + return + end + -- 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, + }, + }, + }, + } +end + +M.dap = function() + if O.plugin.dap.active then + local dap_install = require "dap-install" + dap_install.config("python_dbg", {}) + end +end + +return M |