summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkylo252 <[email protected]>2022-09-16 17:47:40 +0200
committerGitHub <[email protected]>2022-09-16 11:47:40 -0400
commit77fdcd43cb77b50fc925487132f6aabd31760337 (patch)
treedd29a152104c6c4ce75413a4a0f6445107cce52a
parent62d9a4ea9df1828af2cbc6c5f42774f1662aaab4 (diff)
feat: add lir.nvim (#3031)
-rw-r--r--lua/lvim/core/builtins/init.lua1
-rw-r--r--lua/lvim/core/lir.lua107
-rw-r--r--lua/lvim/plugins.lua7
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",