From 9d89929d9bb47d1f78c2d3945b761da2f24a5643 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sat, 31 Jul 2021 06:06:08 +0200 Subject: Enable querying lang-server formatting capabilities (#1078) --- lua/utils/init.lua | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index fe1e09aa..a41bfc10 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -162,6 +162,12 @@ function utils.gsub_args(args) return args end +function utils.lvim_log(msg) + if lvim.debug then + vim.notify(msg, vim.log.levels.DEBUG) + end +end + return utils -- TODO: find a new home for these autocommands -- cgit v1.2.3 From d977e7384e8ad449e1ffc039618910a9c780e0cf Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sat, 31 Jul 2021 10:19:57 +0200 Subject: cleanup formatting handler (#1185) --- lua/utils/init.lua | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index a41bfc10..b4c5fca1 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -110,16 +110,6 @@ function utils.is_string(t) return type(t) == "string" end -function utils.has_value(tab, val) - for _, value in ipairs(tab) do - if value == val then - return true - end - end - - return false -end - function utils.add_keymap(mode, opts, keymaps) for _, keymap in ipairs(keymaps) do vim.api.nvim_set_keymap(mode, keymap[1], keymap[2], opts) -- cgit v1.2.3 From 679b8b69fb0ee8c5249a416845054a1734815d43 Mon Sep 17 00:00:00 2001 From: Luc Sinet Date: Sat, 31 Jul 2021 14:47:31 +0200 Subject: [Refactor] Define keymapppings helpers in utils.keymap (#1176) --- lua/utils/init.lua | 26 -------------------------- lua/utils/keymap.lua | 31 +++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 26 deletions(-) create mode 100644 lua/utils/keymap.lua (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index b4c5fca1..9eb29ad8 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -110,32 +110,6 @@ function utils.is_string(t) return type(t) == "string" end -function utils.add_keymap(mode, opts, keymaps) - for _, keymap in ipairs(keymaps) do - vim.api.nvim_set_keymap(mode, keymap[1], keymap[2], opts) - end -end - -function utils.add_keymap_normal_mode(opts, keymaps) - utils.add_keymap("n", opts, keymaps) -end - -function utils.add_keymap_visual_mode(opts, keymaps) - utils.add_keymap("v", opts, keymaps) -end - -function utils.add_keymap_visual_block_mode(opts, keymaps) - utils.add_keymap("x", opts, keymaps) -end - -function utils.add_keymap_insert_mode(opts, keymaps) - utils.add_keymap("i", opts, keymaps) -end - -function utils.add_keymap_term_mode(opts, keymaps) - utils.add_keymap("t", opts, keymaps) -end - function utils.unrequire(m) package.loaded[m] = nil _G[m] = nil diff --git a/lua/utils/keymap.lua b/lua/utils/keymap.lua new file mode 100644 index 00000000..121a4888 --- /dev/null +++ b/lua/utils/keymap.lua @@ -0,0 +1,31 @@ +local M = {} + +local mode_adapters = { + insert_mode = "i", + normal_mode = "n", + term_mode = "t", + visual_mode = "v", + visual_block_mode = "x", +} + +-- Load key mappings for a given mode +-- @param mode The keymap mode, can be one of the keys of mode_adapters +-- @param keymaps The list of key mappings +-- @param opts The mapping options +M.load_mode = function(mode, keymaps, opts) + mode = mode_adapters[mode] and mode_adapters[mode] or mode + for _, keymap in ipairs(keymaps) do + vim.api.nvim_set_keymap(mode, keymap[1], keymap[2], opts) + end +end + +-- Load key mappings for all provided modes +-- @param keymaps A list of key mappings for each mode +-- @param opts The mapping options for each mode +M.load = function(keymaps, opts) + for mode, mapping in pairs(keymaps) do + M.load_mode(mode, mapping, opts[mode]) + end +end + +return M -- cgit v1.2.3 From 8157f50d1308f42f3db1c7f69c226eb2e5c0b796 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sat, 31 Jul 2021 15:04:22 +0200 Subject: feat: get null-ls registered providers by filetype (#1186) --- lua/utils/init.lua | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index 9eb29ad8..1685c1ca 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -110,6 +110,32 @@ function utils.is_string(t) return type(t) == "string" end +--- Extends a list-like table with the unique values of another list-like table. +--- +--- NOTE: This mutates dst! +--- +--@see |vim.tbl_extend()| +--- +--@param dst list which will be modified and appended to. +--@param src list from which values will be inserted. +--@param start Start index on src. defaults to 1 +--@param finish Final index on src. defaults to #src +--@returns dst +function utils.list_extend_unique(dst, src, start, finish) + vim.validate { + dst = { dst, "t" }, + src = { src, "t" }, + start = { start, "n", true }, + finish = { finish, "n", true }, + } + for i = start or 1, finish or #src do + if not vim.tbl_contains(dst, src[i]) then + table.insert(dst, src[i]) + end + end + return dst +end + function utils.unrequire(m) package.loaded[m] = nil _G[m] = nil -- cgit v1.2.3 From fe5daa722fb75ad85c24936cbb645018bb9d655b Mon Sep 17 00:00:00 2001 From: Luc Sinet Date: Sat, 31 Jul 2021 16:12:29 +0200 Subject: [Feature] Expose lsp config (#1156) --- lua/utils/init.lua | 8 -------- 1 file changed, 8 deletions(-) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index 1685c1ca..a404254b 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -102,14 +102,6 @@ function utils.check_lsp_client_active(name) return false end -function utils.is_table(t) - return type(t) == "table" -end - -function utils.is_string(t) - return type(t) == "string" -end - --- Extends a list-like table with the unique values of another list-like table. --- --- NOTE: This mutates dst! -- cgit v1.2.3 From 213e3961fa637e4dbe4ef1ea5fceadcb372e020e Mon Sep 17 00:00:00 2001 From: chaeing Date: Sat, 31 Jul 2021 11:28:59 -0700 Subject: [Feature] Rename lv-config.lua to config.lua (#1193) * Rename example config files * Update user config path in installer * Update user config path with a variable * Update default user config file to config.lua * Add fallback to lv-config if config.lua not found * Add global variable USER_CONFIG_PATH --- lua/utils/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index a404254b..b81ff4f4 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -81,7 +81,7 @@ end function utils.reload_lv_config() vim.cmd "source ~/.local/share/lunarvim/lvim/lua/settings.lua" - vim.cmd "source ~/.config/lvim/lv-config.lua" + vim.cmd("source " .. USER_CONFIG_PATH) vim.cmd "source ~/.local/share/lunarvim/lvim/lua/plugins.lua" local plugins = require "plugins" local plugin_loader = require("plugin-loader").init() -- cgit v1.2.3 From 0e05f05e9d584eec3764593a53eeeff2272718a0 Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 1 Aug 2021 15:13:56 -0400 Subject: respect override table --- lua/utils/init.lua | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index b81ff4f4..9f0064e1 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -42,6 +42,15 @@ local function r_inspect_settings(structure, limit, separator) return limit - 1 end +function utils.has_value(tab, val) + for _, value in ipairs(tab) do + if value == val then + return true + end + end + return false +end + function utils.generate_settings() -- Opens a file in append mode local file = io.open("lv-settings.lua", "w") -- cgit v1.2.3 From 6d14d7b5da54fffabfec18b2b09a488d3661d7f9 Mon Sep 17 00:00:00 2001 From: Luc Sinet Date: Mon, 2 Aug 2021 17:19:44 +0200 Subject: [Refactor] Adopt which key mapping style (#1210) * Refactor keymappings to match which-key style * Update confif example + remove redundant way of registering mappings --- lua/utils/keymap.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lua/utils') diff --git a/lua/utils/keymap.lua b/lua/utils/keymap.lua index 121a4888..1799e21f 100644 --- a/lua/utils/keymap.lua +++ b/lua/utils/keymap.lua @@ -14,8 +14,8 @@ local mode_adapters = { -- @param opts The mapping options M.load_mode = function(mode, keymaps, opts) mode = mode_adapters[mode] and mode_adapters[mode] or mode - for _, keymap in ipairs(keymaps) do - vim.api.nvim_set_keymap(mode, keymap[1], keymap[2], opts) + for key, mapping in pairs(keymaps) do + vim.api.nvim_set_keymap(mode, key, mapping[1], opts) end end -- cgit v1.2.3 From 77e283bd9c33166937756250918b12e349caf050 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Mon, 2 Aug 2021 23:42:56 +0200 Subject: [Refactor] Allow editing default keymaps (#1213) --- lua/utils/init.lua | 1 + 1 file changed, 1 insertion(+) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index 9f0064e1..9c9b8523 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -98,6 +98,7 @@ function utils.reload_lv_config() plugin_loader:load { plugins, lvim.plugins } vim.cmd ":PackerCompile" vim.cmd ":PackerInstall" + require("keymappings").setup() -- vim.cmd ":PackerClean" end -- cgit v1.2.3 From 4c3c3f388557a182794bffdbf923129c66af885a Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Tue, 3 Aug 2021 18:10:54 +0200 Subject: feat: add lvim.lsp.smart_cwd (#1218) - Enable querying the language-server for the `root_dir` - Use `root_dir` to set the current working-directory (CWD) - Make vim-rooter configurable and add an option to disable it Inspired by "ahmedkhalf/lsp-rooter.nvim" --- lua/utils/init.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index 9c9b8523..c043550f 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -112,6 +112,16 @@ function utils.check_lsp_client_active(name) return false end +function utils.get_active_client_by_ft(filetype) + local clients = vim.lsp.get_active_clients() + for _, client in pairs(clients) do + if client.name == lvim.lang[filetype].lsp.provider then + return client + end + end + return nil +end + --- Extends a list-like table with the unique values of another list-like table. --- --- NOTE: This mutates dst! -- cgit v1.2.3 From 67de24227f7244dc0f8a7ba90ad9d594e9bf4717 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Thu, 5 Aug 2021 16:35:58 +0200 Subject: chore: remove unncessary logic from utils (#1238) --- lua/utils/init.lua | 9 --------- lua/utils/keymap.lua | 31 ------------------------------- 2 files changed, 40 deletions(-) delete mode 100644 lua/utils/keymap.lua (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index c043550f..8cfd2790 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -42,15 +42,6 @@ local function r_inspect_settings(structure, limit, separator) return limit - 1 end -function utils.has_value(tab, val) - for _, value in ipairs(tab) do - if value == val then - return true - end - end - return false -end - function utils.generate_settings() -- Opens a file in append mode local file = io.open("lv-settings.lua", "w") diff --git a/lua/utils/keymap.lua b/lua/utils/keymap.lua deleted file mode 100644 index 1799e21f..00000000 --- a/lua/utils/keymap.lua +++ /dev/null @@ -1,31 +0,0 @@ -local M = {} - -local mode_adapters = { - insert_mode = "i", - normal_mode = "n", - term_mode = "t", - visual_mode = "v", - visual_block_mode = "x", -} - --- Load key mappings for a given mode --- @param mode The keymap mode, can be one of the keys of mode_adapters --- @param keymaps The list of key mappings --- @param opts The mapping options -M.load_mode = function(mode, keymaps, opts) - mode = mode_adapters[mode] and mode_adapters[mode] or mode - for key, mapping in pairs(keymaps) do - vim.api.nvim_set_keymap(mode, key, mapping[1], opts) - end -end - --- Load key mappings for all provided modes --- @param keymaps A list of key mappings for each mode --- @param opts The mapping options for each mode -M.load = function(keymaps, opts) - for mode, mapping in pairs(keymaps) do - M.load_mode(mode, mapping, opts[mode]) - end -end - -return M -- cgit v1.2.3 From 990bb622e0a7f90881a6016570c6f205499b1c0d Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Fri, 6 Aug 2021 10:39:08 +0200 Subject: chore: remove now-redundant utility function --- lua/utils/init.lua | 26 -------------------------- 1 file changed, 26 deletions(-) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index 8cfd2790..b27643ac 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -113,32 +113,6 @@ function utils.get_active_client_by_ft(filetype) return nil end ---- Extends a list-like table with the unique values of another list-like table. ---- ---- NOTE: This mutates dst! ---- ---@see |vim.tbl_extend()| ---- ---@param dst list which will be modified and appended to. ---@param src list from which values will be inserted. ---@param start Start index on src. defaults to 1 ---@param finish Final index on src. defaults to #src ---@returns dst -function utils.list_extend_unique(dst, src, start, finish) - vim.validate { - dst = { dst, "t" }, - src = { src, "t" }, - start = { start, "n", true }, - finish = { finish, "n", true }, - } - for i = start or 1, finish or #src do - if not vim.tbl_contains(dst, src[i]) then - table.insert(dst, src[i]) - end - end - return dst -end - function utils.unrequire(m) package.loaded[m] = nil _G[m] = nil -- cgit v1.2.3 From 9fc6a2e1cdac513c8ff09069263ff102852be86a Mon Sep 17 00:00:00 2001 From: grvxs Date: Fri, 6 Aug 2021 16:50:25 +0530 Subject: fix: typos in lua/ --- lua/utils/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index 8cfd2790..8cc1b32d 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -16,7 +16,7 @@ local function r_inspect_settings(structure, limit, separator) if ts == "table" then for k, v in pairs(structure) do - -- replace non alpha keys wih ["key"] + -- replace non alpha keys with ["key"] if tostring(k):match "[^%a_]" then k = '["' .. tostring(k) .. '"]' end -- cgit v1.2.3 From 47ebd70817c99c657271e399c0b98b920f765f29 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Fri, 6 Aug 2021 16:27:19 +0200 Subject: Add LunarVim info panel (Experimental) (#1241) * feat: lunarvim info (Experimental) * Add missing providers info * Use nvim api directly to create the popup * width tweaks --- lua/utils/init.lua | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index 16ad5e4a..df472c66 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -113,6 +113,34 @@ function utils.get_active_client_by_ft(filetype) return nil end +-- TODO: consider porting this logic to null-ls instead +function utils.get_supported_linters_by_filetype(filetype) + local null_ls = require "null-ls" + local matches = {} + for _, provider in pairs(null_ls.builtins.diagnostics) do + if vim.tbl_contains(provider.filetypes, filetype) then + local provider_name = provider.name + + table.insert(matches, provider_name) + end + end + + return matches +end + +function utils.get_supported_formatters_by_filetype(filetype) + local null_ls = require "null-ls" + local matches = {} + for _, provider in pairs(null_ls.builtins.formatting) do + if provider.filetypes and vim.tbl_contains(provider.filetypes, filetype) then + -- table.insert(matches, { provider.name, ft }) + table.insert(matches, provider.name) + end + end + + return matches +end + function utils.unrequire(m) package.loaded[m] = nil _G[m] = nil -- cgit v1.2.3 From 405423108fc31981c40116a827e845a1179c9053 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Mon, 9 Aug 2021 19:02:37 +0200 Subject: feat: Add an async logger using plenary (#1207) Co-authored-by: rebuilt --- lua/utils/init.lua | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index df472c66..208871bf 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -1,4 +1,6 @@ local utils = {} +local Log = require "core.log" +local uv = vim.loop -- recursive Print (structure, limit, separator) local function r_inspect_settings(structure, limit, separator) @@ -68,6 +70,9 @@ function utils.toggle_autoformat() }, }, } + if Log:get_default() then + Log:get_default().info "Format on save active" + end end if not lvim.format_on_save then @@ -76,6 +81,9 @@ function utils.toggle_autoformat() :autocmd! autoformat endif ]] + if Log:get_default() then + Log:get_default().info "Format on save off" + end end end @@ -91,6 +99,7 @@ function utils.reload_lv_config() vim.cmd ":PackerInstall" require("keymappings").setup() -- vim.cmd ":PackerClean" + Log:get_default().info "Reloaded configuration" end function utils.check_lsp_client_active(name) @@ -157,10 +166,12 @@ function utils.gsub_args(args) return args end -function utils.lvim_log(msg) - if lvim.debug then - vim.notify(msg, vim.log.levels.DEBUG) - end +--- Checks whether a given path exists and is a file. +--@param filename (string) path to check +--@returns (bool) +function utils.is_file(filename) + local stat = uv.fs_stat(filename) + return stat and stat.type == "file" or false end return utils -- cgit v1.2.3 From 9a68500333660af76a2b7e75c3d7dcd38f8481b2 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Tue, 10 Aug 2021 20:53:56 +0200 Subject: fix: do not overwrite plugins bindings in reload (#1284) --- lua/utils/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lua/utils') diff --git a/lua/utils/init.lua b/lua/utils/init.lua index 208871bf..8264189d 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -90,6 +90,7 @@ end function utils.reload_lv_config() vim.cmd "source ~/.local/share/lunarvim/lvim/lua/settings.lua" vim.cmd("source " .. USER_CONFIG_PATH) + require("keymappings").setup() -- this should be done before loading the plugins vim.cmd "source ~/.local/share/lunarvim/lvim/lua/plugins.lua" local plugins = require "plugins" local plugin_loader = require("plugin-loader").init() @@ -97,7 +98,6 @@ function utils.reload_lv_config() plugin_loader:load { plugins, lvim.plugins } vim.cmd ":PackerCompile" vim.cmd ":PackerInstall" - require("keymappings").setup() -- vim.cmd ":PackerClean" Log:get_default().info "Reloaded configuration" end -- cgit v1.2.3 From a6a10e3fdbcfea9d8600772b91e45fb19084a390 Mon Sep 17 00:00:00 2001 From: christianchiarulli Date: Tue, 10 Aug 2021 15:01:26 -0400 Subject: bring back behavior we used to get from astronauta --- lua/utils/ft.lua | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lua/utils/ft.lua (limited to 'lua/utils') diff --git a/lua/utils/ft.lua b/lua/utils/ft.lua new file mode 100644 index 00000000..fcebd1ea --- /dev/null +++ b/lua/utils/ft.lua @@ -0,0 +1,45 @@ +local ft = {} + +ft.find_lua_ftplugins = function(filetype) + local patterns = { + string.format("ftplugin/%s.lua", filetype), + + -- Looks like we don't need this, because the first one works + -- string.format("after/ftplugin/%s.lua", filetype), + } + + local result = {} + for _, pat in ipairs(patterns) do + vim.list_extend(result, vim.api.nvim_get_runtime_file(pat, true)) + end + + return result +end + +ft.do_filetype = function(filetype) + local ftplugins = ft.find_lua_ftplugins(filetype) + + local f_env = setmetatable({ + -- Override print, so the prints still go through, otherwise it's confusing for people + print = vim.schedule_wrap(print), + }, { + -- Buf default back read/write to whatever is going on in the global landscape + __index = _G, + __newindex = _G, + }) + + for _, file in ipairs(ftplugins) do + local f = loadfile(file) + if not f then + vim.api.nvim_err_writeln("Unable to load file: " .. file) + else + local ok, msg = pcall(setfenv(f, f_env)) + + if not ok then + vim.api.nvim_err_writeln("Error while processing file: " .. file .. "\n" .. msg) + end + end + end +end + +return ft -- cgit v1.2.3 From fc9090f64b73c2c2c5d9a6c3ec60ef4c2fe56cfe Mon Sep 17 00:00:00 2001 From: christianchiarulli Date: Tue, 10 Aug 2021 15:07:35 -0400 Subject: remove astronauta --- lua/utils/ft.lua | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lua/utils') diff --git a/lua/utils/ft.lua b/lua/utils/ft.lua index fcebd1ea..e9852e6f 100644 --- a/lua/utils/ft.lua +++ b/lua/utils/ft.lua @@ -1,3 +1,5 @@ +-- Here be dragons +-- Opening files with telescope will not start LSP without this local ft = {} ft.find_lua_ftplugins = function(filetype) -- cgit v1.2.3