Procházet zdrojové kódy

refactor(info): use new null-ls api for sources (#2125)

kylo252 před 3 roky
rodič
revize
91077623f0

+ 19 - 23
lua/lvim/core/info.lua

@@ -19,9 +19,8 @@ end
 
 local function make_formatters_info(ft)
   local null_formatters = require "lvim.lsp.null-ls.formatters"
-  local registered_formatters = null_formatters.list_registered_providers(ft)
-  -- print("reg", vim.inspect(registered_formatters))
-  local supported_formatters = null_formatters.list_available(ft)
+  local registered_formatters = null_formatters.list_registered(ft)
+  local supported_formatters = null_formatters.list_supported(ft)
   local section = {
     "Formatters info",
     fmt(
@@ -37,8 +36,7 @@ end
 
 local function make_code_actions_info(ft)
   local null_actions = require "lvim.lsp.null-ls.code_actions"
-  local registered_actions = null_actions.list_registered_providers(ft)
-  local supported_actions = null_actions.list_available(ft)
+  local registered_actions = null_actions.list_registered(ft)
   local section = {
     "Code actions info",
     fmt(
@@ -46,7 +44,6 @@ local function make_code_actions_info(ft)
       table.concat(registered_actions, "  , "),
       vim.tbl_count(registered_actions) > 0 and "  " or ""
     ),
-    fmt("* Supported: %s", str_list(supported_actions)),
   }
 
   return section
@@ -54,8 +51,8 @@ end
 
 local function make_linters_info(ft)
   local null_linters = require "lvim.lsp.null-ls.linters"
-  local supported_linters = null_linters.list_available(ft)
-  local registered_linters = null_linters.list_registered_providers(ft)
+  local supported_linters = null_linters.list_supported(ft)
+  local registered_linters = null_linters.list_registered(ft)
   local section = {
     "Linters info",
     fmt(
@@ -168,21 +165,20 @@ function M.toggle_popup(ft)
   local function set_syntax_hl()
     vim.cmd [[highlight LvimInfoIdentifier gui=bold]]
     vim.cmd [[highlight link LvimInfoHeader Type]]
-    vim.cmd [[let m=matchadd("LvimInfoHeader", "Treesitter info")]]
-    vim.cmd [[let m=matchadd("LvimInfoHeader", "Language Server Protocol (LSP) info")]]
-    vim.cmd [[let m=matchadd("LvimInfoHeader", "Formatters info")]]
-    vim.cmd [[let m=matchadd("LvimInfoHeader", "Linters info")]]
-    vim.cmd [[let m=matchadd("LvimInfoHeader", "Code actions info")]]
-    vim.cmd('let m=matchadd("LvimInfoIdentifier", " ' .. ft .. '$")')
-    vim.cmd 'let m=matchadd("string", "true")'
-    vim.cmd 'let m=matchadd("string", "active")'
-    vim.cmd 'let m=matchadd("boolean", "inactive")'
-    vim.cmd 'let m=matchadd("string", "")'
-    vim.cmd 'let m=matchadd("error", "false")'
-    -- tbl_set_highlight(registered_providers, "LvimInfoIdentifier")
-    tbl_set_highlight(require("lvim.lsp.null-ls.formatters").list_available(ft), "LvimInfoIdentifier")
-    tbl_set_highlight(require("lvim.lsp.null-ls.linters").list_available(ft), "LvimInfoIdentifier")
-    tbl_set_highlight(require("lvim.lsp.null-ls.code_actions").list_available(ft), "LvimInfoIdentifier")
+    vim.fn.matchadd("LvimInfoHeader", "Treesitter info")
+    vim.fn.matchadd("LvimInfoHeader", "Language Server Protocol (LSP) info")
+    vim.fn.matchadd("LvimInfoHeader", "Formatters info")
+    vim.fn.matchadd("LvimInfoHeader", "Linters info")
+    vim.fn.matchadd("LvimInfoHeader", "Code actions info")
+    vim.fn.matchadd("LvimInfoIdentifier", " " .. ft .. "$")
+    vim.fn.matchadd("string", "true")
+    vim.fn.matchadd("string", "active")
+    vim.fn.matchadd("string", "")
+    vim.fn.matchadd("boolean", "inactive")
+    vim.fn.matchadd("error", "false")
+    tbl_set_highlight(require("lvim.lsp.null-ls.formatters").list_registered(ft), "LvimInfoIdentifier")
+    tbl_set_highlight(require("lvim.lsp.null-ls.linters").list_registered(ft), "LvimInfoIdentifier")
+    tbl_set_highlight(require("lvim.lsp.null-ls.code_actions").list_registered(ft), "LvimInfoIdentifier")
   end
 
   local Popup = require("lvim.interface.popup"):new {

+ 2 - 3
lua/lvim/core/lualine/components.lua

@@ -104,17 +104,16 @@ return {
 
       -- add formatter
       local formatters = require "lvim.lsp.null-ls.formatters"
-      local supported_formatters = formatters.list_registered_providers(buf_ft)
+      local supported_formatters = formatters.list_registered(buf_ft)
       vim.list_extend(buf_client_names, supported_formatters)
 
       -- add linter
       local linters = require "lvim.lsp.null-ls.linters"
-      local supported_linters = linters.list_registered_providers(buf_ft)
+      local supported_linters = linters.list_registered(buf_ft)
       vim.list_extend(buf_client_names, supported_linters)
 
       return "[" .. table.concat(buf_client_names, ", ") .. "]"
     end,
-    -- icon = " ",
     color = { gui = "bold" },
     cond = conditions.hide_in_width,
   },

+ 7 - 4
lua/lvim/lsp/config.lua

@@ -65,13 +65,14 @@ return {
     "angularls",
     "ansiblels",
     "ccls",
-    "cssmodules_ls",
     "csharp_ls",
+    "cssmodules_ls",
     "denols",
     "ember",
     "emmet_ls",
     "eslint",
     "eslintls",
+    "grammarly",
     "graphql",
     "jedi_language_server",
     "ltex",
@@ -79,15 +80,17 @@ return {
     "pylsp",
     "quick_lint_js",
     "rome",
-    "sorbet",
-    "sqlls",
-    "sqls",
     "solang",
+    "solidity_ls",
+    "sorbet",
     "sourcekit",
     "spectral",
+    "sqlls",
+    "sqls",
     "stylelint_lsp",
     "tailwindcss",
     "tflint",
     "volar",
+    "zk",
   },
 }

+ 1 - 10
lua/lvim/lsp/null-ls/code_actions.lua

@@ -14,20 +14,11 @@ local is_registered = function(name)
   return require("null-ls.sources").is_registered(query)
 end
 
-function M.list_registered_providers(filetype)
+function M.list_registered(filetype)
   local registered_providers = services.list_registered_providers_names(filetype)
   return registered_providers[METHOD] or {}
 end
 
-function M.list_available(filetype)
-  local availables = require("null-ls.sources").get_available(filetype, METHOD)
-  local actors = vim.tbl_map(function(src)
-    return src.name
-  end, availables)
-  table.sort(actors)
-  return actors
-end
-
 function M.list_configured(actions_configs)
   local actors, errors = {}, {}
 

+ 6 - 14
lua/lvim/lsp/null-ls/formatters.lua

@@ -12,26 +12,18 @@ local is_registered = function(name)
   return require("null-ls.sources").is_registered(query)
 end
 
-function M.list_registered_providers(filetype)
+function M.list_registered(filetype)
   local null_ls_methods = require "null-ls.methods"
   local formatter_method = null_ls_methods.internal["FORMATTING"]
   local registered_providers = services.list_registered_providers_names(filetype)
   return registered_providers[formatter_method] or {}
 end
 
-function M.list_available(filetype)
-  local formatters = {}
-  local tbl = require "lvim.utils.table"
-  for _, provider in pairs(null_ls.builtins.formatting) do
-    if tbl.contains(provider.filetypes or {}, function(ft)
-      return ft == "*" or ft == filetype
-    end) then
-      table.insert(formatters, provider.name)
-    end
-  end
-
-  table.sort(formatters)
-  return formatters
+function M.list_supported(filetype)
+  local s = require "null-ls.sources"
+  local supported_formatters = s.get_supported(filetype, "formatting")
+  table.sort(supported_formatters)
+  return supported_formatters
 end
 
 function M.list_configured(formatter_configs)

+ 6 - 14
lua/lvim/lsp/null-ls/linters.lua

@@ -12,26 +12,18 @@ local is_registered = function(name)
   return require("null-ls.sources").is_registered(query)
 end
 
-function M.list_registered_providers(filetype)
+function M.list_registered(filetype)
   local null_ls_methods = require "null-ls.methods"
   local linter_method = null_ls_methods.internal["DIAGNOSTICS"]
   local registered_providers = services.list_registered_providers_names(filetype)
   return registered_providers[linter_method] or {}
 end
 
-function M.list_available(filetype)
-  local linters = {}
-  local tbl = require "lvim.utils.table"
-  for _, provider in pairs(null_ls.builtins.diagnostics) do
-    if tbl.contains(provider.filetypes or {}, function(ft)
-      return ft == "*" or ft == filetype
-    end) then
-      table.insert(linters, provider.name)
-    end
-  end
-
-  table.sort(linters)
-  return linters
+function M.list_supported(filetype)
+  local s = require "null-ls.sources"
+  local supported_linters = s.get_supported(filetype, "diagnostics")
+  table.sort(supported_linters)
+  return supported_linters
 end
 
 function M.list_configured(linter_configs)

+ 4 - 4
lua/lvim/plugins.lua

@@ -12,13 +12,13 @@ local commit = {
   gitsigns = "a451f97117bd1ede582a6b9db61c387c48d880b6",
   lualine = "9e26823ea6c7361aba3253c8a5c56a6f35b4a0ee",
   luasnip = "f654f947b80f5aad3f5849c0867e4cd5bbd9e40b",
-  nlsp_settings = "5d74bcc8ae3795063cc8e35f634a8b3184568207",
-  null_ls = "0bf6d358b86ae13f87cd45f6446e7b3ab924d060",
+  nlsp_settings = "1b376a0b7dc60238e835dd0467135ba9a1557ec7",
+  null_ls = "cb1e9945caef4d1e372eb0e165736f972a20afe9",
   nvim_autopairs = "a9b6b98de3bacacc0c986d9b0673cae6a87c4a41",
   nvim_cmp = "ae708ef3a44dfb0cb42d1aa901b4c57c2de53aa3",
   nvim_dap = "a6fa644f9de62c594a8a9cf6f2aaf324b5a6108b",
-  nvim_lsp_installer = "e65e4966e1b3db486ae548a5674f20a8416a42d0",
-  nvim_lspconfig = "0d2fb782cac8a19df0c0d7715ad4cdab4c582e15",
+  nvim_lsp_installer = "09e602e1ee7c14687b35a15c229d93d167698ef2",
+  nvim_lspconfig = "b01c0d0542c7a942f8f2ebf1232e0557a85a9045",
   nvim_notify = "243811198d3a937be03535bbe899446f235dda75",
   nvim_tree = "0a2f6b0b6ba558a88c77a6b262af647760e6eca8",
   nvim_treesitter = "ad69e2528ac382b7cbf28f1ac7ee450981734ab0",