diff options
author | kylo252 <[email protected]> | 2022-09-16 17:47:40 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2022-09-16 11:47:40 -0400 |
commit | 77fdcd43cb77b50fc925487132f6aabd31760337 (patch) | |
tree | dd29a152104c6c4ce75413a4a0f6445107cce52a /lua | |
parent | 62d9a4ea9df1828af2cbc6c5f42774f1662aaab4 (diff) |
feat: add lir.nvim (#3031)
Diffstat (limited to 'lua')
-rw-r--r-- | lua/lvim/core/builtins/init.lua | 1 | ||||
-rw-r--r-- | lua/lvim/core/lir.lua | 107 | ||||
-rw-r--r-- | lua/lvim/plugins.lua | 7 |
3 files changed, 115 insertions, 0 deletions
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..38b05b9c --- /dev/null +++ b/lua/lvim/core/lir.lua @@ -0,0 +1,107 @@ +local M = {} + +local Log = require "lvim.core.log" +M.config = function() + lvim.builtin.lir = { + active = false, + on_config_done = nil, + } + + local status_ok, actions = pcall(require, "lir.actions") + if not status_ok then + return + end + + local mark_actions = require "lir.mark.actions" + local clipboard_actions = require "lir.clipboard.actions" + lvim.builtin.lir = vim.tbl_extend("force", lvim.builtin.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, + }, + icons = { + 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 lir = require "lir" + 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/plugins.lua b/lua/lvim/plugins.lua index bfe76bb8..106403ac 100644 --- a/lua/lvim/plugins.lua +++ b/lua/lvim/plugins.lua @@ -139,6 +139,13 @@ local core_plugins = { end, disable = not lvim.builtin.nvimtree.active, }, + { + "christianchiarulli/lir.nvim", + config = function() + require("lvim.core.lir").setup() + end, + disable = not lvim.builtin.lir.active, + }, { "lewis6991/gitsigns.nvim", |