summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/lsp/null-ls/services.lua
diff options
context:
space:
mode:
authorGustaf Rydholm <gustaf.rydholm@gmail.com>2021-08-15 13:54:15 +0200
committerGustaf Rydholm <gustaf.rydholm@gmail.com>2021-08-15 13:54:15 +0200
commit977990584331307dd5e71ebbbbd6b45b9c961996 (patch)
treea8b3d78e80f586da192a576dd678e2fbc8ac8e00 /.config/nvim/lua/lsp/null-ls/services.lua
parent99d00f47fe780dbb021149db2f93d202a2b8b025 (diff)
Updates to nvim lsp
Diffstat (limited to '.config/nvim/lua/lsp/null-ls/services.lua')
-rw-r--r--.config/nvim/lua/lsp/null-ls/services.lua55
1 files changed, 55 insertions, 0 deletions
diff --git a/.config/nvim/lua/lsp/null-ls/services.lua b/.config/nvim/lua/lsp/null-ls/services.lua
new file mode 100644
index 0000000..80bf66e
--- /dev/null
+++ b/.config/nvim/lua/lsp/null-ls/services.lua
@@ -0,0 +1,55 @@
+local M = {}
+
+local logger = require("core.log"):get_default()
+
+local function find_root_dir()
+ if options.builtin.rooter.active then
+ --- use vim-rooter to set root_dir
+ vim.cmd "let root_dir = FindRootDirectory()"
+ return vim.api.nvim_get_var "root_dir"
+ end
+
+ -- TODO: Rework this to not make it javascript specific
+ --- use LSP to set root_dir
+ local lsp_utils = require "lsp.utils"
+ local ts_client = lsp_utils.get_active_client_by_ft "typescript"
+ if ts_client == nil then
+ logger.error "Unable to determine root directory since tsserver didn't start correctly"
+ return nil
+ end
+
+ return ts_client.config.root_dir
+end
+
+local function from_node_modules(command)
+ local root_dir = find_root_dir()
+ if not root_dir then
+ return nil
+ end
+
+ return root_dir .. "/node_modules/.bin/" .. command
+end
+
+local local_providers = {
+ prettier = { find = from_node_modules },
+ prettierd = { find = from_node_modules },
+ prettier_d_slim = { find = from_node_modules },
+ eslint_d = { find = from_node_modules },
+ eslint = { find = from_node_modules },
+}
+
+function M.find_command(command)
+ if local_providers[command] then
+ local local_command = local_providers[command].find(command)
+ if local_command and vim.fn.executable(local_command) == 1 then
+ return local_command
+ end
+ end
+
+ if vim.fn.executable(command) == 1 then
+ return command
+ end
+ return nil
+end
+
+return M