summaryrefslogtreecommitdiff
path: root/lua/lvim/core/builtins/lir.lua
diff options
context:
space:
mode:
authorLostNeophyte <[email protected]>2023-02-11 14:41:45 +0100
committerLostNeophyte <[email protected]>2023-02-11 14:44:24 +0100
commit7be867e2aac31ef04565eaba6b416ede766c06d7 (patch)
tree413dc6c0e82b04e14f505b7f291ed56f97dea9ea /lua/lvim/core/builtins/lir.lua
parented5b43bba06e6d1ef7b6bd7ed95c55b64e2df3c8 (diff)
refactor(builtins): move builtins to ./builtins
Diffstat (limited to 'lua/lvim/core/builtins/lir.lua')
-rw-r--r--lua/lvim/core/builtins/lir.lua117
1 files changed, 117 insertions, 0 deletions
diff --git a/lua/lvim/core/builtins/lir.lua b/lua/lvim/core/builtins/lir.lua
new file mode 100644
index 00000000..9c59a99c
--- /dev/null
+++ b/lua/lvim/core/builtins/lir.lua
@@ -0,0 +1,117 @@
+local M = {}
+
+M.config = function()
+ local utils = require "lvim.utils.modules"
+ local actions = utils.require_on_exported_call "lir.actions"
+ local clipboard_actions = utils.require_on_exported_call "lir.clipboard.actions"
+
+ lvim.builtin.lir = {
+ active = true,
+ icon = "î—¿",
+ show_hidden_files = false,
+ ignore = {}, -- { ".DS_Store" "node_modules" } etc.
+ devicons = {
+ enable = true,
+ highlight_dirname = 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()
+ require("lir.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,
+ }
+ 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 }
+ )
+ end,
+ }
+end
+
+function M.icon_setup()
+ local devicons_ok, devicons = pcall(require, "nvim-web-devicons")
+ if not devicons_ok then
+ return
+ end
+
+ local function get_hl_by_name(name)
+ local ret = vim.api.nvim_get_hl_by_name(name.group, true)
+ return string.format("#%06x", ret[name.property])
+ end
+
+ local found, icon_hl = pcall(get_hl_by_name, { group = "NvimTreeFolderIcon", property = "foreground" })
+ if not found then
+ icon_hl = "#42A5F5"
+ end
+
+ devicons.set_icon {
+ lir_folder_icon = {
+ icon = lvim.builtin.lir.icon,
+ color = icon_hl,
+ name = "LirFolderNode",
+ },
+ }
+end
+
+function M.setup()
+ local status_ok, lir = pcall(reload, "lir")
+ if not status_ok then
+ return
+ end
+
+ if not lvim.use_icons then
+ lvim.builtin.lir.devicons.enable = false
+ end
+
+ lir.setup(lvim.builtin.lir)
+ M.icon_setup()
+
+ return lir
+end
+
+return M