From e8eeff8fd678a0e95d63f4241727973a2809aa29 Mon Sep 17 00:00:00 2001 From: peturparkur Date: Sat, 24 Aug 2024 10:32:44 +0100 Subject: [PATCH] add dockerfile and dockercompose LSPs + optional local enforcement --- lua/kickstart/plugins/lsp.lua | 9 +++++++-- lua/utils/mason.lua | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/lua/kickstart/plugins/lsp.lua b/lua/kickstart/plugins/lsp.lua index 53ae062a..45c9e02c 100644 --- a/lua/kickstart/plugins/lsp.lua +++ b/lua/kickstart/plugins/lsp.lua @@ -208,7 +208,6 @@ return { -- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ local servers = { -- clangd = {}, - -- gopls = {}, pyright = { settings = { python = { @@ -267,6 +266,12 @@ return { bashls = { alias = 'bash-language-server', }, + dockerls = { + alias = 'docker-langserver', + }, + docker_compose_language_service = { + alias = 'docker-compose-langserver', + }, lua_ls = { -- cmd = {...}, -- filetypes = { ...}, @@ -312,7 +317,7 @@ return { i = i + 1 end table.insert(installed, 'stylua') - require('utils.mason').install(installed) + require('utils.mason').install(installed, true) -- require('utils.mason').install { -- -- "python-lsp-server", -- 'pyright', diff --git a/lua/utils/mason.lua b/lua/utils/mason.lua index e5553c75..0b589740 100644 --- a/lua/utils/mason.lua +++ b/lua/utils/mason.lua @@ -7,12 +7,17 @@ local name_to_bin = { ['docker-compose-language-service'] = 'docker-compose-langserver', } -M.install = function(ensure_installed) +-- We guarantee 'ensure_installed' package is installed locally +-- If enforce_local is false then we install it via mason-registry +-- By default we install LSPs via mason +M.install = function(ensure_installed, enforce_local) -- Allow for passing in a single string if type(ensure_installed) == 'string' then ensure_installed = { ensure_installed } end + enforce_local = enforce_local == nil and false or enforce_local + -- Function to check if the executable exists in the PATH local function executable_exists(name) if name_to_bin[name] then @@ -24,7 +29,7 @@ M.install = function(ensure_installed) local registry = require 'mason-registry' registry.refresh(function() for _, pkg_name in ipairs(ensure_installed) do - if not executable_exists(pkg_name) then + if (not executable_exists(pkg_name)) and not enforce_local then local pkg = registry.get_package(pkg_name) if not pkg:is_installed() then pkg:install()