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 | |
parent | 327955348174646e8f4c0eea62f9f25462f4ac28 (diff) |
begine language refactor
-rw-r--r-- | ftplugin/python.lua | 89 | ||||
-rw-r--r-- | lua/lsp/python-ls.lua | 98 |
2 files changed, 102 insertions, 85 deletions
diff --git a/ftplugin/python.lua b/ftplugin/python.lua index d2ade7e2..e98ebc22 100644 --- a/ftplugin/python.lua +++ b/ftplugin/python.lua @@ -1,85 +1,4 @@ -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, -} - -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 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 - -if not require("lv-utils").check_lsp_client_active "pyright" then - -- 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 - -if O.plugin.dap.active then - local dap_install = require "dap-install" - dap_install.config("python_dbg", {}) -end +require("lsp.python-ls").format() +require("lsp.python-ls").lint() +require("lsp.python-ls").lsp() +require("lsp.python-ls").dap() 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 |