From 888b1fee214d4102dd0d2b86ef3e74c3a89626cb Mon Sep 17 00:00:00 2001 From: ChristianChiarulli Date: Thu, 11 Nov 2021 22:32:14 -0500 Subject: feat: auto resize for more consistent UI behavior --- lua/lvim/core/nvimtree.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/nvimtree.lua b/lua/lvim/core/nvimtree.lua index d9e6fb5d..893ddffc 100644 --- a/lua/lvim/core/nvimtree.lua +++ b/lua/lvim/core/nvimtree.lua @@ -24,7 +24,7 @@ function M.config() view = { width = 30, side = "left", - auto_resize = false, + auto_resize = true, mappings = { custom_only = false, }, -- cgit v1.2.3 From b0a9ee720a64f4ec1563e7358d58506a714d39fe Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sun, 14 Nov 2021 13:44:00 +0100 Subject: refactor: more configurable format-on-save (#1937) --- lua/lvim/core/autocmds.lua | 55 ++++++++++++++++++++++++++++++++++++++++++++++ lua/lvim/core/commands.lua | 1 + 2 files changed, 56 insertions(+) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/autocmds.lua b/lua/lvim/core/autocmds.lua index 569622be..664c1662 100644 --- a/lua/lvim/core/autocmds.lua +++ b/lua/lvim/core/autocmds.lua @@ -1,4 +1,5 @@ local M = {} +local Log = require "lvim.core.log" --- Load the default set of autogroups and autocommands. function M.load_augroups() @@ -58,6 +59,60 @@ function M.load_augroups() } end +local get_format_on_save_opts = function() + local defaults = require("lvim.config.defaults").format_on_save + -- accept a basic boolean `lvim.format_on_save=true` + if type(lvim.format_on_save) ~= "table" then + return defaults + end + + return { + pattern = lvim.format_on_save.pattern or defaults.pattern, + timeout = lvim.format_on_save.timeout or defaults.timeout, + } +end + +function M.enable_format_on_save(opts) + local fmd_cmd = string.format(":silent lua vim.lsp.buf.formatting_sync({}, %s)", opts.timeout_ms) + M.define_augroups { + format_on_save = { { "BufWritePre", opts.pattern, fmd_cmd } }, + } + Log:debug "enabled format-on-save" +end + +function M.disable_format_on_save() + M.remove_augroup "format_on_save" + Log:debug "disabled format-on-save" +end + +function M.configure_format_on_save() + if lvim.format_on_save then + if vim.fn.exists "#format_on_save#BufWritePre" == 1 then + M.remove_augroup "format_on_save" + Log:debug "reloading format-on-save configuration" + end + local opts = get_format_on_save_opts() + M.enable_format_on_save(opts) + else + M.disable_format_on_save() + end +end + +function M.toggle_format_on_save() + if vim.fn.exists "#format_on_save#BufWritePre" == 0 then + local opts = get_format_on_save_opts() + M.enable_format_on_save(opts) + else + M.disable_format_on_save() + end +end + +function M.remove_augroup(name) + if vim.fn.exists("#" .. name) == 1 then + vim.cmd("au! " .. name) + end +end + function M.define_augroups(definitions) -- {{{1 -- Create autocommand groups based on the passed definitions -- diff --git a/lua/lvim/core/commands.lua b/lua/lvim/core/commands.lua index 61148889..a9dd51c0 100644 --- a/lua/lvim/core/commands.lua +++ b/lua/lvim/core/commands.lua @@ -16,6 +16,7 @@ M.defaults = { [[ command! LvimUpdate lua require('lvim.bootstrap').update() ]], [[ command! LvimSyncCorePlugins lua require('lvim.plugin-loader'):sync_core_plugins() ]], [[ command! LvimReload lua require('lvim.config'):reload() ]], + [[ command! LvimToggleFormatOnSave lua require('lvim.core.autocmds').toggle_format_on_save() ]], } M.load = function(commands) -- cgit v1.2.3 From a9bf545e0fc76882d99a3539f317155ce6c76d35 Mon Sep 17 00:00:00 2001 From: Lee Marlow Date: Sun, 14 Nov 2021 06:00:59 -0700 Subject: Bugfix: allow LunarVim changelog to work outside the lvim directory (#1952) --- lua/lvim/core/telescope/custom-finders.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/telescope/custom-finders.lua b/lua/lvim/core/telescope/custom-finders.lua index c3347fd0..68fd0b07 100644 --- a/lua/lvim/core/telescope/custom-finders.lua +++ b/lua/lvim/core/telescope/custom-finders.lua @@ -40,7 +40,7 @@ function M.grep_lunarvim_files(opts) end function M.view_lunarvim_changelog() - local opts = {} + local opts = { cwd = get_lvim_base_dir() } opts.entry_maker = make_entry.gen_from_git_commits(opts) pickers.new(opts, { @@ -52,8 +52,6 @@ function M.view_lunarvim_changelog() "log", "--pretty=oneline", "--abbrev-commit", - "--", - ".", }, opts ), -- cgit v1.2.3 From ffcaae6c32fb10c7716dde2593e30bdf044719db Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Mon, 15 Nov 2021 09:20:45 +0100 Subject: fix: use an indepdent shadafile from neovim (#1910) --- lua/lvim/core/log.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/log.lua b/lua/lvim/core/log.lua index 9950af28..f51b8af6 100644 --- a/lua/lvim/core/log.lua +++ b/lua/lvim/core/log.lua @@ -1,6 +1,6 @@ local Log = {} -local logfile = string.format("%s/%s.log", vim.fn.stdpath "cache", "lvim") +local logfile = string.format("%s/%s.log", get_cache_dir(), "lvim") Log.levels = { TRACE = 1, -- cgit v1.2.3 From abc9f2764d3c4500a3c95e162d72e38c7e473f33 Mon Sep 17 00:00:00 2001 From: Christian Chiarulli Date: Tue, 16 Nov 2021 14:55:45 +0000 Subject: feat: support new null-ls (#1955) --- lua/lvim/core/info.lua | 1 + 1 file changed, 1 insertion(+) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/info.lua b/lua/lvim/core/info.lua index fc87691e..8d33fe5e 100644 --- a/lua/lvim/core/info.lua +++ b/lua/lvim/core/info.lua @@ -20,6 +20,7 @@ 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 section = { "Formatters info", -- cgit v1.2.3 From da7ff0a87aec87592a9ef2905eea60fddcf2d2fb Mon Sep 17 00:00:00 2001 From: ChristianChiarulli Date: Tue, 16 Nov 2021 13:55:57 -0500 Subject: feat: Empty for empty buffers instead of Buffer <#> --- lua/lvim/core/bufferline.lua | 1 + 1 file changed, 1 insertion(+) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/bufferline.lua b/lua/lvim/core/bufferline.lua index ae6542d1..74d84af4 100644 --- a/lua/lvim/core/bufferline.lua +++ b/lua/lvim/core/bufferline.lua @@ -1,6 +1,7 @@ local M = {} M.config = function() + vim.g.bufferline = { no_name_title = "Empty" } lvim.builtin.bufferline = { active = true, on_config_done = nil, -- cgit v1.2.3 From 5a310a29cfa24e82c4b0925c1877ecc6a4f628d4 Mon Sep 17 00:00:00 2001 From: ChristianChiarulli Date: Tue, 16 Nov 2021 17:33:43 -0500 Subject: fix: no idea why this breaks barbar --- lua/lvim/core/bufferline.lua | 1 - 1 file changed, 1 deletion(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/bufferline.lua b/lua/lvim/core/bufferline.lua index 74d84af4..ae6542d1 100644 --- a/lua/lvim/core/bufferline.lua +++ b/lua/lvim/core/bufferline.lua @@ -1,7 +1,6 @@ local M = {} M.config = function() - vim.g.bufferline = { no_name_title = "Empty" } lvim.builtin.bufferline = { active = true, on_config_done = nil, -- cgit v1.2.3 From 16fd37c8bf5d9f352ea16ad18d3ca327977e205a Mon Sep 17 00:00:00 2001 From: ChristianChiarulli Date: Thu, 18 Nov 2021 02:56:48 -0500 Subject: fix: lsp root can get very annoying when working with multiple languages. User is still able to turn it on. --- lua/lvim/core/project.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/project.lua b/lua/lvim/core/project.lua index e7527440..485137b7 100644 --- a/lua/lvim/core/project.lua +++ b/lua/lvim/core/project.lua @@ -18,7 +18,8 @@ function M.config() --- **"pattern"** uses vim-rooter like glob pattern matching. Here --- order matters: if one is not detected, the other is used as fallback. You --- can also delete or rearangne the detection methods. - detection_methods = { "lsp", "pattern" }, + -- detection_methods = { "lsp", "pattern" }, -- NOTE: lsp detection will get annoying with multiple langs in one project + detection_methods = { "pattern" }, ---@usage patterns used to detect root dir, when **"pattern"** is in detection_methods patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json" }, -- cgit v1.2.3 From c26ac5364f2bb04b7428105db39c12c6549d5dfb Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Thu, 18 Nov 2021 16:04:34 +0100 Subject: refactor: load the default keymaps once (#1965) --- lua/lvim/core/bufferline.lua | 8 ++------ lua/lvim/core/dashboard.lua | 3 +-- lua/lvim/core/nvimtree.lua | 3 +-- lua/lvim/core/which-key.lua | 2 +- 4 files changed, 5 insertions(+), 11 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/bufferline.lua b/lua/lvim/core/bufferline.lua index ae6542d1..4f7493d6 100644 --- a/lua/lvim/core/bufferline.lua +++ b/lua/lvim/core/bufferline.lua @@ -5,17 +5,13 @@ M.config = function() active = true, on_config_done = nil, keymap = { - normal_mode = { - [""] = ":BufferNext", - [""] = ":BufferPrevious", - }, + normal_mode = {}, }, } end M.setup = function() - local keymap = require "lvim.keymappings" - keymap.append_to_defaults(lvim.builtin.bufferline.keymap) + require("lvim.keymappings").load(lvim.builtin.bufferline.keymap) if lvim.builtin.bufferline.on_config_done then lvim.builtin.bufferline.on_config_done() diff --git a/lua/lvim/core/dashboard.lua b/lua/lvim/core/dashboard.lua index 11053796..22e5c9b6 100644 --- a/lua/lvim/core/dashboard.lua +++ b/lua/lvim/core/dashboard.lua @@ -58,6 +58,7 @@ M.config = function(config) footer = { "lunarvim.org" }, } + lvim.builtin.which_key.mappings[";"] = { "Dashboard", "Dashboard" } end M.setup = function() @@ -69,8 +70,6 @@ M.setup = function() vim.g.dashboard_custom_section = lvim.builtin.dashboard.custom_section - lvim.builtin.which_key.mappings[";"] = { "Dashboard", "Dashboard" } - vim.g.dashboard_session_directory = lvim.builtin.dashboard.session_directory local lvim_site = "lunarvim.org" diff --git a/lua/lvim/core/nvimtree.lua b/lua/lvim/core/nvimtree.lua index 893ddffc..08a73cdb 100644 --- a/lua/lvim/core/nvimtree.lua +++ b/lua/lvim/core/nvimtree.lua @@ -65,6 +65,7 @@ function M.config() }, }, } + lvim.builtin.which_key.mappings["e"] = { "NvimTreeToggle", "Explorer" } end function M.setup() @@ -98,8 +99,6 @@ function M.setup() } end - lvim.builtin.which_key.mappings["e"] = { "NvimTreeToggle", "Explorer" } - local tree_view = require "nvim-tree.view" -- Add nvim_tree open callback diff --git a/lua/lvim/core/which-key.lua b/lua/lvim/core/which-key.lua index 254f2ec2..7bb0f00e 100644 --- a/lua/lvim/core/which-key.lua +++ b/lua/lvim/core/which-key.lua @@ -188,7 +188,7 @@ M.config = function() "lua require('lvim.core.telescope.custom-finders').grep_lunarvim_files()", "Grep LunarVim files", }, - k = { "lua require('lvim.keymappings').print()", "View LunarVim's default keymappings" }, + k = { "Telescope keymaps", "View LunarVim's keymappings" }, i = { "lua require('lvim.core.info').toggle_popup(vim.bo.filetype)", "Toggle LunarVim Info", -- cgit v1.2.3 From fe99ee6e42ddec225c46a9d1fcda5c5d76396601 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Fri, 19 Nov 2021 08:20:49 +0100 Subject: fix(windows): autocmd requires forward slashes (#1967) --- lua/lvim/core/autocmds.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/autocmds.lua b/lua/lvim/core/autocmds.lua index 664c1662..d982b151 100644 --- a/lua/lvim/core/autocmds.lua +++ b/lua/lvim/core/autocmds.lua @@ -3,7 +3,12 @@ local Log = require "lvim.core.log" --- Load the default set of autogroups and autocommands. function M.load_augroups() - local user_config_file = vim.fn.resolve(require("lvim.config"):get_user_config_path()) + local user_config_file = require("lvim.config"):get_user_config_path() + + if vim.loop.os_uname().version:match "Windows" then + -- autocmds require forward slashes even on windows + user_config_file = vim.fn.resolve(user_config_file:gsub("\\", "/")) + end return { _general_settings = { -- cgit v1.2.3 From 5663c925ebef0d48732e8794c2335c118ee61e55 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sat, 20 Nov 2021 14:22:04 +0100 Subject: fix(windows): remove redundant `resolve` call (#1974) --- lua/lvim/core/autocmds.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/autocmds.lua b/lua/lvim/core/autocmds.lua index d982b151..e4577e63 100644 --- a/lua/lvim/core/autocmds.lua +++ b/lua/lvim/core/autocmds.lua @@ -7,7 +7,7 @@ function M.load_augroups() if vim.loop.os_uname().version:match "Windows" then -- autocmds require forward slashes even on windows - user_config_file = vim.fn.resolve(user_config_file:gsub("\\", "/")) + user_config_file = user_config_file:gsub("\\", "/") end return { -- cgit v1.2.3 From f3d7a94d8cb85a7c03eace8576ad7f9125147384 Mon Sep 17 00:00:00 2001 From: christianchiarulli Date: Mon, 22 Nov 2021 15:14:18 -0500 Subject: feat: improved LSP grouping in lualine --- lua/lvim/core/lualine/components.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/lualine/components.lua b/lua/lvim/core/lualine/components.lua index 9366df56..c0482c02 100644 --- a/lua/lvim/core/lualine/components.lua +++ b/lua/lvim/core/lualine/components.lua @@ -112,9 +112,9 @@ return { local supported_linters = linters.list_registered_providers(buf_ft) vim.list_extend(buf_client_names, supported_linters) - return table.concat(buf_client_names, ", ") + return "[" .. table.concat(buf_client_names, ", ") .. "]" end, - icon = " ", + -- icon = " ", color = { gui = "bold" }, cond = conditions.hide_in_width, }, -- cgit v1.2.3 From 044b53a6fed7ed2c477870883857a9742a2e1b98 Mon Sep 17 00:00:00 2001 From: christianchiarulli Date: Mon, 22 Nov 2021 15:16:05 -0500 Subject: feat: decrease hide in width limit for lualine --- lua/lvim/core/lualine/conditions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/lualine/conditions.lua b/lua/lvim/core/lualine/conditions.lua index 3ee4fbb8..6e120b26 100644 --- a/lua/lvim/core/lualine/conditions.lua +++ b/lua/lvim/core/lualine/conditions.lua @@ -1,4 +1,4 @@ -local window_width_limit = 80 +local window_width_limit = 70 local conditions = { buffer_not_empty = function() -- cgit v1.2.3 From 24be0ef1ef36b8cc725655e920104e9676b72f25 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sat, 27 Nov 2021 15:22:43 +0100 Subject: chore: bump core-plugins version (#1989) --- lua/lvim/core/nvimtree.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/nvimtree.lua b/lua/lvim/core/nvimtree.lua index 08a73cdb..1fc93aea 100644 --- a/lua/lvim/core/nvimtree.lua +++ b/lua/lvim/core/nvimtree.lua @@ -29,6 +29,8 @@ function M.config() custom_only = false, }, }, + hide_dotfiles = false, + ignore = { ".git", "node_modules", ".cache" }, }, show_icons = { git = 1, @@ -37,9 +39,7 @@ function M.config() folder_arrows = 1, tree_width = 30, }, - ignore = { ".git", "node_modules", ".cache" }, quit_on_open = 0, - hide_dotfiles = 1, git_hl = 1, root_folder_modifier = ":t", allow_resize = 1, -- cgit v1.2.3 From 5c0ccff78f199c46aea47fa756e7c748477e5c65 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sun, 28 Nov 2021 16:52:56 +0100 Subject: fix: correct order for cmp's setup (#1999) --- lua/lvim/core/cmp.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/cmp.lua b/lua/lvim/core/cmp.lua index 89159ebb..afad3ead 100644 --- a/lua/lvim/core/cmp.lua +++ b/lua/lvim/core/cmp.lua @@ -301,8 +301,7 @@ M.config = function() } end -M.setup = function() - require("luasnip/loaders/from_vscode").lazy_load() +function M.setup() require("cmp").setup(lvim.builtin.cmp) end -- cgit v1.2.3 From 8641c38c862d3e9818791673a9366831b81ff603 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Mon, 29 Nov 2021 09:12:13 +0100 Subject: fix(nvimtree): update settings (#2001) --- lua/lvim/core/nvimtree.lua | 43 ++++++++++++++++++++++++++++++++++++------- lua/lvim/core/which-key.lua | 2 +- 2 files changed, 37 insertions(+), 8 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/nvimtree.lua b/lua/lvim/core/nvimtree.lua index 1fc93aea..7be9c421 100644 --- a/lua/lvim/core/nvimtree.lua +++ b/lua/lvim/core/nvimtree.lua @@ -6,12 +6,22 @@ function M.config() active = true, on_config_done = nil, setup = { + disable_netrw = true, + hijack_netrw = true, open_on_setup = false, - auto_close = true, - open_on_tab = false, - update_focused_file = { + ignore_ft_on_setup = { + "startify", + "dashboard", + "alpha", + }, + update_to_buf_dir = { enable = true, + auto_open = true, }, + auto_close = true, + open_on_tab = false, + hijack_cursor = false, + update_cwd = false, diagnostics = { enable = true, icons = { @@ -21,16 +31,36 @@ function M.config() error = "", }, }, + update_focused_file = { + enable = true, + update_cwd = true, + ignore_list = {}, + }, + system_open = { + cmd = nil, + args = {}, + }, + git = { + enable = true, + ignore = true, + timeout = 200, + }, view = { width = 30, + height = 30, side = "left", auto_resize = true, + number = false, + relativenumber = false, mappings = { custom_only = false, + list = {}, }, }, - hide_dotfiles = false, - ignore = { ".git", "node_modules", ".cache" }, + filters = { + dotfiles = false, + custom = { ".git", "node_modules", ".cache" }, + }, }, show_icons = { git = 1, @@ -41,9 +71,8 @@ function M.config() }, quit_on_open = 0, git_hl = 1, + disable_window_picker = 0, root_folder_modifier = ":t", - allow_resize = 1, - auto_ignore_ft = { "startify", "dashboard" }, icons = { default = "", symlink = "", diff --git a/lua/lvim/core/which-key.lua b/lua/lvim/core/which-key.lua index 7bb0f00e..88af028f 100644 --- a/lua/lvim/core/which-key.lua +++ b/lua/lvim/core/which-key.lua @@ -61,7 +61,7 @@ M.config = function() -- NOTE: Prefer using : over as the latter avoids going back in normal-mode. -- see https://neovim.io/doc/user/map.html#:map-cmd vmappings = { - ["/"] = { "lua ___comment_gc(vim.fn.visualmode())", "Comment" }, + ["/"] = { "lua require('Comment.api').gc(vim.fn.visualmode())", "Comment" }, }, mappings = { ["w"] = { "w!", "Save" }, -- cgit v1.2.3 From 708fdd2980a7e42e2e67c5824f718a4ae9a9f0b4 Mon Sep 17 00:00:00 2001 From: Abouzar Parvan Date: Wed, 1 Dec 2021 18:44:41 +0330 Subject: fix: dont close if next char is a close pair and no pairs in same line (#2017) --- lua/lvim/core/autopairs.lua | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/autopairs.lua b/lua/lvim/core/autopairs.lua index 51649790..a4585e08 100644 --- a/lua/lvim/core/autopairs.lua +++ b/lua/lvim/core/autopairs.lua @@ -9,6 +9,7 @@ function M.config() all = "(", tex = "{", }, + enable_check_bracket_line = false, ---@usage check treesitter check_ts = true, ts_config = { @@ -26,6 +27,7 @@ M.setup = function() autopairs.setup { check_ts = lvim.builtin.autopairs.check_ts, + enable_check_bracket_line = lvim.builtin.autopairs.enable_check_bracket_line, ts_config = lvim.builtin.autopairs.ts_config, } -- cgit v1.2.3 From e0336ed029f8368fb1c7a0240f93af1ccf409ffd Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Wed, 1 Dec 2021 21:24:48 +0100 Subject: fix: more accessible changelog (#2019) --- lua/lvim/core/commands.lua | 1 + lua/lvim/core/dashboard.lua | 2 +- lua/lvim/core/telescope/custom-finders.lua | 21 ++++++++++++++------- 3 files changed, 16 insertions(+), 8 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/commands.lua b/lua/lvim/core/commands.lua index a9dd51c0..6997795d 100644 --- a/lua/lvim/core/commands.lua +++ b/lua/lvim/core/commands.lua @@ -17,6 +17,7 @@ M.defaults = { [[ command! LvimSyncCorePlugins lua require('lvim.plugin-loader'):sync_core_plugins() ]], [[ command! LvimReload lua require('lvim.config'):reload() ]], [[ command! LvimToggleFormatOnSave lua require('lvim.core.autocmds').toggle_format_on_save() ]], + [[ command! LvimVersion lua require('lvim.core.telescope.custom-finders').view_lunarvim_changelog() ]], } M.load = function(commands) diff --git a/lua/lvim/core/dashboard.lua b/lua/lvim/core/dashboard.lua index 22e5c9b6..0f62d973 100644 --- a/lua/lvim/core/dashboard.lua +++ b/lua/lvim/core/dashboard.lua @@ -84,7 +84,7 @@ M.setup = function() if lvim_version then table.insert(footer, 2, "") - table.insert(footer, 3, "v" .. lvim_version) + table.insert(footer, 2, lvim_version) end local text = require "lvim.interface.text" diff --git a/lua/lvim/core/telescope/custom-finders.lua b/lua/lvim/core/telescope/custom-finders.lua index 68fd0b07..5ce1485c 100644 --- a/lua/lvim/core/telescope/custom-finders.lua +++ b/lua/lvim/core/telescope/custom-finders.lua @@ -39,12 +39,22 @@ function M.grep_lunarvim_files(opts) builtin.live_grep(opts) end +local copy_to_clipboard_action = function(prompt_bufnr) + local _, action_state = pcall(require, "telescope.actions.state") + local entry = action_state.get_selected_entry() + local version = entry.value + vim.fn.setreg("+", version) + vim.fn.setreg('"', version) + vim.notify("Copied " .. version .. " to clipboard", vim.log.levels.INFO) + actions.close(prompt_bufnr) +end + function M.view_lunarvim_changelog() - local opts = { cwd = get_lvim_base_dir() } + local opts = themes.get_ivy { cwd = get_lvim_base_dir() } opts.entry_maker = make_entry.gen_from_git_commits(opts) pickers.new(opts, { - prompt_title = "LunarVim changelog", + prompt_title = "~ LunarVim Changelog ~", finder = finders.new_oneshot_job( vim.tbl_flatten { @@ -56,16 +66,13 @@ function M.view_lunarvim_changelog() opts ), previewer = { - previewers.git_commit_diff_to_parent.new(opts), - previewers.git_commit_diff_to_head.new(opts), previewers.git_commit_diff_as_was.new(opts), - previewers.git_commit_message.new(opts), }, --TODO: consider opening a diff view when pressing enter attach_mappings = function(_, map) - map("i", "", actions._close) - map("n", "", actions._close) + map("i", "", copy_to_clipboard_action) + map("n", "", copy_to_clipboard_action) map("i", "", actions._close) map("n", "", actions._close) map("n", "q", actions._close) -- cgit v1.2.3 From f3cd608d174e6dc2b8cdbdcbad6c7b7eedb6668a Mon Sep 17 00:00:00 2001 From: Jieru Mei Date: Thu, 2 Dec 2021 04:31:45 -0500 Subject: feat: null-ls code_actions interface (#2008) --- lua/lvim/core/info.lua | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/info.lua b/lua/lvim/core/info.lua index 8d33fe5e..df7b7061 100644 --- a/lua/lvim/core/info.lua +++ b/lua/lvim/core/info.lua @@ -35,6 +35,23 @@ local function make_formatters_info(ft) return section 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 section = { + "Code actions info", + fmt( + "* Active: %s%s", + table.concat(registered_actions, "  , "), + vim.tbl_count(registered_actions) > 0 and "  " or "" + ), + fmt("* Supported: %s", str_list(supported_actions)), + } + + return section +end + local function make_linters_info(ft) local null_linters = require "lvim.lsp.null-ls.linters" local supported_linters = null_linters.list_available(ft) @@ -121,6 +138,8 @@ function M.toggle_popup(ft) local linters_info = make_linters_info(ft) + local code_actions_info = make_code_actions_info(ft) + local content_provider = function(popup) local content = {} @@ -137,6 +156,8 @@ function M.toggle_popup(ft) formatters_info, { "" }, linters_info, + { "" }, + code_actions_info, } do vim.list_extend(content, section) end @@ -151,6 +172,7 @@ function M.toggle_popup(ft) 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")' @@ -160,6 +182,7 @@ function M.toggle_popup(ft) -- 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") end local Popup = require("lvim.interface.popup"):new { -- cgit v1.2.3 From b6d1aa8a314f849e4e98e9fb541e6ea403e01b6f Mon Sep 17 00:00:00 2001 From: Jieru Mei Date: Thu, 2 Dec 2021 11:46:50 -0500 Subject: fix: better default, ignore `.git` in `live_grep` (#2020) --- lua/lvim/core/telescope.lua | 1 + 1 file changed, 1 insertion(+) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/telescope.lua b/lua/lvim/core/telescope.lua index 147c056c..44aed88b 100644 --- a/lua/lvim/core/telescope.lua +++ b/lua/lvim/core/telescope.lua @@ -37,6 +37,7 @@ function M.config() "--column", "--smart-case", "--hidden", + "--glob=!.git/", }, mappings = { i = { -- cgit v1.2.3 From e292d665f161ee58477a5c1011313ef10a7fef8e Mon Sep 17 00:00:00 2001 From: xeluxee <88047141+xeluxee@users.noreply.github.com> Date: Fri, 3 Dec 2021 18:57:43 +0100 Subject: fix(nvimtree): restore default mappings + make them customizable (#2007) --- lua/lvim/core/nvimtree.lua | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/nvimtree.lua b/lua/lvim/core/nvimtree.lua index 7be9c421..05945059 100644 --- a/lua/lvim/core/nvimtree.lua +++ b/lua/lvim/core/nvimtree.lua @@ -103,10 +103,9 @@ function M.setup() Log:error "Failed to load nvim-tree.config" return end - local g = vim.g for opt, val in pairs(lvim.builtin.nvimtree) do - g["nvim_tree_" .. opt] = val + vim.g["nvim_tree_" .. opt] = val end -- Implicitly update nvim-tree when project module is active @@ -118,19 +117,21 @@ function M.setup() vim.g.netrw_banner = false end + -- Add useful keymaps local tree_cb = nvim_tree_config.nvim_tree_callback - - if not lvim.builtin.nvimtree.setup.view.mappings.list then + if #lvim.builtin.nvimtree.setup.view.mappings.list == 0 then lvim.builtin.nvimtree.setup.view.mappings.list = { { key = { "l", "", "o" }, cb = tree_cb "edit" }, { key = "h", cb = tree_cb "close_node" }, { key = "v", cb = tree_cb "vsplit" }, + { key = "C", cb = tree_cb "cd" }, + { key = "gtf", cb = "lua require'lvim.core.nvimtree'.start_telescope('find_files')" }, + { key = "gtg", cb = "lua require'lvim.core.nvimtree'.start_telescope('live_grep')" }, } end - local tree_view = require "nvim-tree.view" - -- Add nvim_tree open callback + local tree_view = require "nvim-tree.view" local open = tree_view.open tree_view.open = function() M.on_open() @@ -166,4 +167,12 @@ function M.change_tree_dir(dir) end end +function M.start_telescope(telescope_mode) + local node = require("nvim-tree.lib").get_node_at_cursor() + local abspath = node.link_to or node.absolute_path + local is_folder = node.has_children and true + local basedir = is_folder and abspath or vim.fn.fnamemodify(abspath, ":h") + vim.api.nvim_command("Telescope " .. telescope_mode .. " cwd=" .. basedir) +end + return M -- cgit v1.2.3 From 7b753ea627db4b1c205dc3f123fbfc23cb619fdd Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sat, 4 Dec 2021 13:58:45 +0100 Subject: fix(autopairs): add missing configuration entries (#2030) --- lua/lvim/core/autopairs.lua | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/autopairs.lua b/lua/lvim/core/autopairs.lua index a4585e08..365d00d5 100644 --- a/lua/lvim/core/autopairs.lua +++ b/lua/lvim/core/autopairs.lua @@ -4,19 +4,45 @@ function M.config() lvim.builtin.autopairs = { active = true, on_config_done = nil, - ---@usage -- modifies the function or method delimiter by filetypes + ---@usage modifies the function or method delimiter by filetypes map_char = { all = "(", tex = "{", }, + ---@usage check bracket in same line enable_check_bracket_line = false, ---@usage check treesitter check_ts = true, ts_config = { - lua = { "string" }, - javascript = { "template_string" }, + lua = { "string", "source" }, + javascript = { "string", "template_string" }, java = false, }, + disable_filetype = { "TelescopePrompt", "spectre_panel" }, + ignored_next_char = string.gsub([[ [%w%%%'%[%"%.] ]], "%s+", ""), + enable_moveright = true, + ---@usage disable when recording or executing a macro + disable_in_macro = false, + ---@usage add bracket pairs after quote + enable_afterquote = true, + ---@usage map the key + map_bs = true, + ---@usage map to delete a pair if possible + map_c_w = false, + ---@usage disable when insert after visual block mode + disable_in_visualblock = false, + ---@usage change default fast_wrap + fast_wrap = { + map = "", + chars = { "{", "[", "(", '"', "'" }, + pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""), + offset = 0, -- Offset from pattern match + end_key = "$", + keys = "qwertyuiopzxcvbnmasdfghjkl", + check_comma = true, + highlight = "Search", + highlight_grey = "Comment", + }, } end @@ -29,10 +55,17 @@ M.setup = function() check_ts = lvim.builtin.autopairs.check_ts, enable_check_bracket_line = lvim.builtin.autopairs.enable_check_bracket_line, ts_config = lvim.builtin.autopairs.ts_config, + disable_filetype = lvim.builtin.autopairs.disable_filetype, + disable_in_macro = lvim.builtin.autopairs.disable_in_macro, + ignored_next_char = lvim.builtin.autopairs.ignored_next_char, + enable_moveright = lvim.builtin.autopairs.enable_moveright, + enable_afterquote = lvim.builtin.autopairs.enable_afterquote, + map_c_w = lvim.builtin.autopairs.map_c_w, + map_bs = lvim.builtin.autopairs.map_bs, + disable_in_visualblock = lvim.builtin.autopairs.disable_in_visualblock, + fast_wrap = lvim.builtin.autopairs.fast_wrap, } - -- vim.g.completion_confirm_key = "" - autopairs.add_rule(Rule("$$", "$$", "tex")) autopairs.add_rules { Rule("$", "$", { "tex", "latex" }) -- don't add a pair if the next character is % -- cgit v1.2.3 From 02a1e769be9139dfe7294d24b7be2d09bb30b77f Mon Sep 17 00:00:00 2001 From: xeluxee <88047141+xeluxee@users.noreply.github.com> Date: Sat, 4 Dec 2021 16:57:41 +0100 Subject: fix(nvimtree): handle paths containing spaces (#2027) --- lua/lvim/core/nvimtree.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/nvimtree.lua b/lua/lvim/core/nvimtree.lua index 05945059..cb91e344 100644 --- a/lua/lvim/core/nvimtree.lua +++ b/lua/lvim/core/nvimtree.lua @@ -170,9 +170,11 @@ end function M.start_telescope(telescope_mode) local node = require("nvim-tree.lib").get_node_at_cursor() local abspath = node.link_to or node.absolute_path - local is_folder = node.has_children and true + local is_folder = node.open ~= nil local basedir = is_folder and abspath or vim.fn.fnamemodify(abspath, ":h") - vim.api.nvim_command("Telescope " .. telescope_mode .. " cwd=" .. basedir) + require("telescope.builtin")[telescope_mode] { + cwd = basedir, + } end return M -- cgit v1.2.3 From 38a172434027c9ac2a71cd658803ec3f7a39ab09 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Mon, 6 Dec 2021 07:30:29 +0100 Subject: feat(terminal): lazygit can now be toggled (#2039) * feat(terminal): lazygit can now be toggled - remove `hidden` parameter so it can be persistent - map keybinding for both normal and term modes - a default shell is now always reachable with `` in a split - add an addition keybinding `` for `lazygit` since it's hard to hit `gg` within the `timeoutlen` < 300ms * revert(terminal): use float direction by default --- lua/lvim/core/terminal.lua | 80 ++++++++++++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 28 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/terminal.lua b/lua/lvim/core/terminal.lua index aa6989ec..61c0acd0 100644 --- a/lua/lvim/core/terminal.lua +++ b/lua/lvim/core/terminal.lua @@ -40,53 +40,77 @@ M.config = function() -- lvim.builtin.terminal.execs = {{}} to overwrite -- lvim.builtin.terminal.execs[#lvim.builtin.terminal.execs+1] = {"gdb", "tg", "GNU Debugger"} execs = { - { "lazygit", "gg", "LazyGit" }, + -- TODO: this should probably be removed since it's hard to hit gg within the timeoutlen + { "lazygit", "gg", "LazyGit", "float" }, + { "lazygit", "", "LazyGit", "float" }, }, } end M.setup = function() local terminal = require "toggleterm" - for _, exec in pairs(lvim.builtin.terminal.execs) do - require("lvim.core.terminal").add_exec(exec[1], exec[2], exec[3]) - end terminal.setup(lvim.builtin.terminal) - if lvim.builtin.terminal.on_config_done then - lvim.builtin.terminal.on_config_done(terminal) - end -end + -- setup the default terminal so it's always reachable + local default_term_opts = { + cmd = lvim.builtin.terminal.shell, + keymap = lvim.builtin.terminal.open_mapping, + label = "Toggle terminal", + count = 1, + direction = lvim.builtin.terminal.direction, + size = lvim.builtin.terminal.size, + } + M.add_exec(default_term_opts) -M.add_exec = function(exec, keymap, name) - vim.api.nvim_set_keymap( - "n", - "" .. keymap, - "lua require('lvim.core.terminal')._exec_toggle('" .. exec .. "')", - { noremap = true, silent = true } - ) - lvim.builtin.which_key.mappings[keymap] = name -end + for i, exec in pairs(lvim.builtin.terminal.execs) do + local opts = { + cmd = exec[1], + keymap = exec[2], + label = exec[3], + count = i + 1, + direction = exec[4] or lvim.builtin.terminal.direction, + size = lvim.builtin.terminal.size, + } -M._split = function(inputstr, sep) - if sep == nil then - sep = "%s" + M.add_exec(opts) end - local t = {} - for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do - table.insert(t, str) + + if lvim.builtin.terminal.on_config_done then + lvim.builtin.terminal.on_config_done(terminal) end - return t end -M._exec_toggle = function(exec) - local binary = M._split(exec)[1] +M.add_exec = function(opts) + local binary = opts.cmd:match "(%S+)" if vim.fn.executable(binary) ~= 1 then Log:error("Unable to run executable " .. binary .. ". Please make sure it is installed properly.") return end + + local exec_func = string.format( + "lua require('lvim.core.terminal')._exec_toggle({ cmd = '%s', count = %d, direction = '%s'})", + opts.cmd, + opts.count, + opts.direction + ) + + require("lvim.keymappings").load { + normal_mode = { [opts.keymap] = exec_func }, + term_mode = { [opts.keymap] = exec_func }, + } + + local wk_status_ok, wk = pcall(require, "whichkey") + if not wk_status_ok then + return + end + wk.register({ [opts.keymap] = { opts.label } }, { mode = "n" }) + wk.register({ [opts.keymap] = { opts.label } }, { mode = "t" }) +end + +M._exec_toggle = function(opts) local Terminal = require("toggleterm.terminal").Terminal - local exec_term = Terminal:new { cmd = exec, hidden = true } - exec_term:toggle() + local term = Terminal:new { cmd = opts.cmd, count = opts.count, direction = opts.direction } + term:toggle(lvim.builtin.terminal.size, opts.direction) end ---Toggles a log viewer according to log.viewer.layout_config -- cgit v1.2.3 From c43ee9aa3a6353e74d577cb79e60c5c885bc02f5 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Wed, 8 Dec 2021 09:01:33 +0100 Subject: fix: no longer treat lazygit missing as an error (#2051) --- lua/lvim/core/terminal.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/terminal.lua b/lua/lvim/core/terminal.lua index 61c0acd0..20485cda 100644 --- a/lua/lvim/core/terminal.lua +++ b/lua/lvim/core/terminal.lua @@ -83,7 +83,7 @@ end M.add_exec = function(opts) local binary = opts.cmd:match "(%S+)" if vim.fn.executable(binary) ~= 1 then - Log:error("Unable to run executable " .. binary .. ". Please make sure it is installed properly.") + Log:debug("Skipping configuring executable " .. binary .. ". Please make sure it is installed properly.") return end -- cgit v1.2.3 From cbb94752aef70e69e4df7b5ad270e33a7722a00c Mon Sep 17 00:00:00 2001 From: Abouzar Parvan Date: Sat, 11 Dec 2021 12:16:36 +0330 Subject: feat: bump plugin versions (#2064) Co-authored-by: kylo252 <59826753+kylo252@users.noreply.github.com> --- lua/lvim/core/lualine/components.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/lualine/components.lua b/lua/lvim/core/lualine/components.lua index c0482c02..9cf67616 100644 --- a/lua/lvim/core/lualine/components.lua +++ b/lua/lvim/core/lualine/components.lua @@ -65,7 +65,7 @@ return { }, diagnostics = { "diagnostics", - sources = { "nvim_lsp" }, + sources = { "nvim_diagnostic" }, symbols = { error = " ", warn = " ", info = " ", hint = " " }, color = {}, cond = conditions.hide_in_width, -- cgit v1.2.3 From abf127db83794569af204c017c0e003a5e9e63c9 Mon Sep 17 00:00:00 2001 From: Chase Colman Date: Sat, 11 Dec 2021 16:57:52 +0800 Subject: fix(terminal): allow disabling the open binding for toggleterm --- lua/lvim/core/terminal.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/terminal.lua b/lua/lvim/core/terminal.lua index 20485cda..7eb343ce 100644 --- a/lua/lvim/core/terminal.lua +++ b/lua/lvim/core/terminal.lua @@ -60,7 +60,9 @@ M.setup = function() direction = lvim.builtin.terminal.direction, size = lvim.builtin.terminal.size, } - M.add_exec(default_term_opts) + if lvim.builtin.terminal.open_mapping then + M.add_exec(default_term_opts) + end for i, exec in pairs(lvim.builtin.terminal.execs) do local opts = { -- cgit v1.2.3