Browse Source

begine language refactor

Chris 4 năm trước cách đây
mục cha
commit
2d65ffcff2
2 tập tin đã thay đổi với 102 bổ sung85 xóa
  1. 4 85
      ftplugin/python.lua
  2. 98 0
      lua/lsp/python-ls.lua

+ 4 - 85
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()

+ 98 - 0
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