diff options
-rw-r--r-- | lua/lvim/core/autocmds.lua | 30 | ||||
-rw-r--r-- | lua/lvim/core/builtins/init.lua | 1 | ||||
-rw-r--r-- | lua/lvim/core/lir.lua | 117 | ||||
-rw-r--r-- | lua/lvim/core/which-key.lua | 2 | ||||
-rw-r--r-- | lua/lvim/plugin-loader.lua | 2 | ||||
-rw-r--r-- | lua/lvim/plugins.lua | 9 | ||||
-rw-r--r-- | snapshots/default.json | 3 |
7 files changed, 161 insertions, 3 deletions
diff --git a/lua/lvim/core/autocmds.lua b/lua/lvim/core/autocmds.lua index ef7122e5..525d2338 100644 --- a/lua/lvim/core/autocmds.lua +++ b/lua/lvim/core/autocmds.lua @@ -10,6 +10,36 @@ function M.load_defaults() user_config_file = user_config_file:gsub("\\", "/") end + vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = { + "Jaq", + "qf", + "help", + "man", + "lspinfo", + "spectre_panel", + "lir", + "DressingSelect", + "tsplayground", + "Markdown", + }, + callback = function() + vim.cmd [[ + nnoremap <silent> <buffer> q :close<CR> + nnoremap <silent> <buffer> <esc> :close<CR> + set nobuflisted + ]] + end, + }) + + vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = { "lir" }, + callback = function() + vim.opt_local.number = false + vim.opt_local.relativenumber = false + end, + }) + local definitions = { { "TextYankPost", diff --git a/lua/lvim/core/builtins/init.lua b/lua/lvim/core/builtins/init.lua index 5cad2a00..03ee8aec 100644 --- a/lua/lvim/core/builtins/init.lua +++ b/lua/lvim/core/builtins/init.lua @@ -9,6 +9,7 @@ local builtins = { "lvim.core.telescope", "lvim.core.treesitter", "lvim.core.nvimtree", + "lvim.core.lir", "lvim.core.project", "lvim.core.bufferline", "lvim.core.autopairs", diff --git a/lua/lvim/core/lir.lua b/lua/lvim/core/lir.lua new file mode 100644 index 00000000..694ea4eb --- /dev/null +++ b/lua/lvim/core/lir.lua @@ -0,0 +1,117 @@ +local M = {} + +local Log = require "lvim.core.log" + +M.config = function() + lvim.builtin.lir = { + active = true, + on_config_done = nil, + } + + local status_ok, lir = pcall(require, "lir") + if not status_ok then + return + end + + local actions = require "lir.actions" + local mark_actions = require "lir.mark.actions" + local clipboard_actions = require "lir.clipboard.actions" + + lir.setup { + show_hidden_files = false, + devicons_enable = true, + mappings = { + ["l"] = actions.edit, + ["<CR>"] = actions.edit, + ["<C-s>"] = actions.split, + ["v"] = actions.vsplit, + ["<C-t>"] = actions.tabedit, + + ["h"] = actions.up, + ["q"] = actions.quit, + + ["A"] = actions.mkdir, + ["a"] = actions.newfile, + ["r"] = actions.rename, + ["@"] = actions.cd, + ["Y"] = actions.yank_path, + ["i"] = actions.toggle_show_hidden, + ["d"] = actions.delete, + + ["J"] = function() + mark_actions.toggle_mark() + vim.cmd "normal! j" + end, + ["c"] = clipboard_actions.copy, + ["x"] = clipboard_actions.cut, + ["p"] = clipboard_actions.paste, + }, + float = { + winblend = 0, + curdir_window = { + enable = false, + highlight_dirname = true, + }, + + -- -- You can define a function that returns a table to be passed as the third + -- -- argument of nvim_open_win(). + win_opts = function() + local width = math.floor(vim.o.columns * 0.7) + local height = math.floor(vim.o.lines * 0.7) + return { + border = "rounded", + width = width, + height = height, + -- row = 1, + -- col = math.floor((vim.o.columns - width) / 2), + } + end, + }, + hide_cursor = false, + on_init = function() + -- use visual mode + vim.api.nvim_buf_set_keymap( + 0, + "x", + "J", + ':<C-u>lua require"lir.mark.actions".toggle_mark("v")<CR>', + { noremap = true, silent = true } + ) + + -- echo cwd + -- vim.api.nvim_echo({ { vim.fn.expand "%:p", "Normal" } }, false, {}) + end, + } + + -- custom folder icon + require("nvim-web-devicons").set_icon { + lir_folder_icon = { + icon = "î—¿", + -- color = "#7ebae4", + -- color = "#569CD6", + color = "#42A5F5", + name = "LirFolderNode", + }, + } +end + +function M.setup() + if lvim.builtin.nvimtree.active then + Log:warn "Unable to configure lir while nvimtree is active! Please set 'lvim.builtin.nvimtree.active=false'" + return + end + + local status_ok, lir = pcall(require, "lir") + if not status_ok then + return + end + + lir.setup(lvim.builtin.lir.setup) + require("nvim-web-devicons").set_icon(lvim.builtin.lir.icons) + + if lvim.builtin.lir.on_config_done then + lvim.builtin.lir.on_config_done(lir) + end +end + +return M diff --git a/lua/lvim/core/which-key.lua b/lua/lvim/core/which-key.lua index 7d75dee1..8b4f7b8b 100644 --- a/lua/lvim/core/which-key.lua +++ b/lua/lvim/core/which-key.lua @@ -15,7 +15,7 @@ M.config = function() motions = false, -- adds help for motions text_objects = false, -- help for text objects triggered after entering an operator windows = false, -- default bindings on <c-w> - nav = true, -- misc bindings to work with windows + nav = false, -- misc bindings to work with windows z = false, -- bindings for folds, spelling and others prefixed with z g = false, -- bindings for prefixed with g }, diff --git a/lua/lvim/plugin-loader.lua b/lua/lvim/plugin-loader.lua index c10fe75e..5c4e6cb2 100644 --- a/lua/lvim/plugin-loader.lua +++ b/lua/lvim/plugin-loader.lua @@ -20,7 +20,7 @@ function plugin_loader.init(opts) package_root = opts.package_root or join_paths(vim.fn.stdpath "data", "site", "pack"), compile_path = compile_path, snapshot_path = snapshot_path, - max_jobs = 40, + max_jobs = 100, log = { level = "warn" }, git = { clone_timeout = 300, diff --git a/lua/lvim/plugins.lua b/lua/lvim/plugins.lua index bfe76bb8..a483dbc0 100644 --- a/lua/lvim/plugins.lua +++ b/lua/lvim/plugins.lua @@ -139,7 +139,14 @@ local core_plugins = { end, disable = not lvim.builtin.nvimtree.active, }, - + -- Lir + { + "christianchiarulli/lir.nvim", + config = function() + require("lvim.core.lir").setup() + end, + disable = not lvim.builtin.lir.active, + }, { "lewis6991/gitsigns.nvim", diff --git a/snapshots/default.json b/snapshots/default.json index b57c4fba..8aaa576e 100644 --- a/snapshots/default.json +++ b/snapshots/default.json @@ -35,6 +35,9 @@ "gitsigns.nvim": { "commit": "d7e0bcb" }, + "lir.nvim": { + "commit": "7d8c6c4" + }, "lua-dev.nvim": { "commit": "fd7a18e" }, |