diff options
Diffstat (limited to 'home/config/nvim/lua/menu.lua')
-rw-r--r-- | home/config/nvim/lua/menu.lua | 338 |
1 files changed, 169 insertions, 169 deletions
diff --git a/home/config/nvim/lua/menu.lua b/home/config/nvim/lua/menu.lua index e3e74bd..2a95209 100644 --- a/home/config/nvim/lua/menu.lua +++ b/home/config/nvim/lua/menu.lua @@ -1,6 +1,6 @@ local path_ok, plenary_path = pcall(require, "plenary.path") if not path_ok then - return + return end local dashboard = require("alpha.themes.dashboard") @@ -8,226 +8,226 @@ local cdir = vim.fn.getcwd() local if_nil = vim.F.if_nil local nvim_web_devicons = { - enabled = true, - highlight = true, + enabled = true, + highlight = true, } local function get_extension(fn) - local match = fn:match("^.+(%..+)$") - local ext = "" - if match ~= nil then - ext = match:sub(2) - end - return ext + local match = fn:match("^.+(%..+)$") + local ext = "" + if match ~= nil then + ext = match:sub(2) + end + return ext end local function icon(fn) - local nwd = require("nvim-web-devicons") - local ext = get_extension(fn) - return nwd.get_icon(fn, ext, { default = true }) + local nwd = require("nvim-web-devicons") + local ext = get_extension(fn) + return nwd.get_icon(fn, ext, { default = true }) end local function file_button(fn, sc, short_fn,autocd) - short_fn = short_fn or fn - local ico_txt - local fb_hl = {} + short_fn = short_fn or fn + local ico_txt + local fb_hl = {} - if nvim_web_devicons.enabled then - local ico, hl = icon(fn) - local hl_option_type = type(nvim_web_devicons.highlight) - if hl_option_type == "boolean" then - if hl and nvim_web_devicons.highlight then - table.insert(fb_hl, { hl, 0, #ico }) - end - end - if hl_option_type == "string" then - table.insert(fb_hl, { nvim_web_devicons.highlight, 0, #ico }) - end - ico_txt = ico .. " " - else - ico_txt = "" - end - local cd_cmd = (autocd and " | cd %:p:h" or "") - local file_button_el = dashboard.button(sc, ico_txt .. short_fn, "<cmd>e " .. vim.fn.fnameescape(fn) .. cd_cmd .." <CR>") - local fn_start = short_fn:match(".*[/\\]") - if fn_start ~= nil then - table.insert(fb_hl, { "Comment", #ico_txt - 2, #fn_start + #ico_txt }) - end - file_button_el.opts.hl = fb_hl - return file_button_el + if nvim_web_devicons.enabled then + local ico, hl = icon(fn) + local hl_option_type = type(nvim_web_devicons.highlight) + if hl_option_type == "boolean" then + if hl and nvim_web_devicons.highlight then + table.insert(fb_hl, { hl, 0, #ico }) + end + end + if hl_option_type == "string" then + table.insert(fb_hl, { nvim_web_devicons.highlight, 0, #ico }) + end + ico_txt = ico .. " " + else + ico_txt = "" + end + local cd_cmd = (autocd and " | cd %:p:h" or "") + local file_button_el = dashboard.button(sc, ico_txt .. short_fn, "<cmd>e " .. vim.fn.fnameescape(fn) .. cd_cmd .." <CR>") + local fn_start = short_fn:match(".*[/\\]") + if fn_start ~= nil then + table.insert(fb_hl, { "Comment", #ico_txt - 2, #fn_start + #ico_txt }) + end + file_button_el.opts.hl = fb_hl + return file_button_el end local default_mru_ignore = { "gitcommit" } local mru_opts = { - ignore = function(path, ext) - return (string.find(path, "COMMIT_EDITMSG")) or (vim.tbl_contains(default_mru_ignore, ext)) - end, - autocd = false + ignore = function(path, ext) + return (string.find(path, "COMMIT_EDITMSG")) or (vim.tbl_contains(default_mru_ignore, ext)) + end, + autocd = false } --- @param start number --- @param cwd string? optional --- @param items_number number? optional number of items to generate, default = 10 local function mru(start, cwd, items_number, opts) - opts = opts or mru_opts - items_number = if_nil(items_number, 10) + opts = opts or mru_opts + items_number = if_nil(items_number, 10) - local oldfiles = {} - for _, v in pairs(vim.v.oldfiles) do - if #oldfiles == items_number then - break - end - local cwd_cond - if not cwd then - cwd_cond = true - else - cwd_cond = vim.startswith(v, cwd) - end - local ignore = (opts.ignore and opts.ignore(v, get_extension(v))) or false - if (vim.fn.filereadable(v) == 1) and cwd_cond and not ignore then - oldfiles[#oldfiles + 1] = v - end - end - local target_width = 35 + local oldfiles = {} + for _, v in pairs(vim.v.oldfiles) do + if #oldfiles == items_number then + break + end + local cwd_cond + if not cwd then + cwd_cond = true + else + cwd_cond = vim.startswith(v, cwd) + end + local ignore = (opts.ignore and opts.ignore(v, get_extension(v))) or false + if (vim.fn.filereadable(v) == 1) and cwd_cond and not ignore then + oldfiles[#oldfiles + 1] = v + end + end + local target_width = 35 - local tbl = {} - for i, fn in ipairs(oldfiles) do - local short_fn - if cwd then - short_fn = vim.fn.fnamemodify(fn, ":.") - else - short_fn = vim.fn.fnamemodify(fn, ":~") - end + local tbl = {} + for i, fn in ipairs(oldfiles) do + local short_fn + if cwd then + short_fn = vim.fn.fnamemodify(fn, ":.") + else + short_fn = vim.fn.fnamemodify(fn, ":~") + end - if #short_fn > target_width then - short_fn = plenary_path.new(short_fn):shorten(1, { -2, -1 }) - if #short_fn > target_width then - short_fn = plenary_path.new(short_fn):shorten(1, { -1 }) - end - end + if #short_fn > target_width then + short_fn = plenary_path.new(short_fn):shorten(1, { -2, -1 }) + if #short_fn > target_width then + short_fn = plenary_path.new(short_fn):shorten(1, { -1 }) + end + end - local shortcut = tostring(i + start - 1) + local shortcut = tostring(i + start - 1) - local file_button_el = file_button(fn, shortcut, short_fn,opts.autocd) - tbl[i] = file_button_el - end - return { - type = "group", - val = tbl, - opts = {}, - } + local file_button_el = file_button(fn, shortcut, short_fn,opts.autocd) + tbl[i] = file_button_el + end + return { + type = "group", + val = tbl, + opts = {}, + } end local cats = { { - [[ ,-. _,---._ __ / \]], - [[ / ) .-' `./ / \]], - [[( ( ,' `/ /|]], - [[ \ `-" \'\ / |]], - [[ `. , \ \ / |]], - [[ /`. ,'-`----Y |]], - [[ ( ; | ']], - [[ | ,-. ,-' | /]], - [[ | | ( | hjw | /]], + [[ ,-. _,---._ __ / \]], + [[ / ) .-' `./ / \]], + [[( ( ,' `/ /|]], + [[ \ `-" \'\ / |]], + [[ `. , \ \ / |]], + [[ /`. ,'-`----Y |]], + [[ ( ; | ']], + [[ | ,-. ,-' | /]], + [[ | | ( | hjw | /]], [[ ) | \ `.___________|/]], [[ `--' `--']], }, { [[ _]], - [[ \`*-. ]], - [[ ) _`-. ]], - [[ . : `. . ]], - [[ : _ ' \ ]], - [[ ; *` _. `*-._ ]], - [[ `-.-' `-. ]], - [[ ; ` `. ]], - [[ :. . \ ]], - [[ . \ . : .-' . ]], - [[ ' `+.; ; ' : ]], - [[ : ' | ; ;-. ]], - [[ ; ' : :`-: _.`* ;]], + [[ \`*-. ]], + [[ ) _`-. ]], + [[ . : `. . ]], + [[ : _ ' \ ]], + [[ ; *` _. `*-._ ]], + [[ `-.-' `-. ]], + [[ ; ` `. ]], + [[ :. . \ ]], + [[ . \ . : .-' . ]], + [[ ' `+.; ; ' : ]], + [[ : ' | ; ;-. ]], + [[ ; ' : :`-: _.`* ;]], [[[bug] .*' / .*' ; .*`- +' `*' ]], - [[ `*-* `*-* `*-*']], + [[ `*-* `*-* `*-*']], }, } math.randomseed(os.time()) local header = { - type = "text", + type = "text", val = cats[math.random(1, #cats)], - opts = { - position = "center", - hl = "Type", - }, + opts = { + position = "center", + hl = "Type", + }, } local section_mru = { - type = "group", - val = { - { - type = "text", - val = "Recent files", - opts = { - hl = "SpecialComment", - shrink_margin = false, - position = "center", - }, - }, - { type = "padding", val = 1 }, - { - type = "group", - val = function() - return { mru(0, cdir) } - end, - opts = { shrink_margin = false }, - }, - }, + type = "group", + val = { + { + type = "text", + val = "Recent files", + opts = { + hl = "SpecialComment", + shrink_margin = false, + position = "center", + }, + }, + { type = "padding", val = 1 }, + { + type = "group", + val = function() + return { mru(0, cdir) } + end, + opts = { shrink_margin = false }, + }, + }, } local buttons = { - type = "group", - val = { - { type = "text", val = "Quick links", opts = { hl = "SpecialComment", position = "center" } }, - { type = "padding", val = 1 }, - dashboard.button("e", " New file", "<cmd>ene<CR>"), - dashboard.button("SPC f f", " Find file"), - dashboard.button("SPC f g", " Live grep"), - dashboard.button("SPC p", " Update plugins", "<cmd>PlugUpdate<CR>"), - dashboard.button("c", " Configuration", "<cmd>cd ~/.config/nvim/ <CR>"), - dashboard.button("q", " Quit", "<cmd>qa<CR>"), - }, - position = "center", + type = "group", + val = { + { type = "text", val = "Quick links", opts = { hl = "SpecialComment", position = "center" } }, + { type = "padding", val = 1 }, + dashboard.button("e", " New file", "<cmd>ene<CR>"), + dashboard.button("SPC f f", " Find file"), + dashboard.button("SPC f g", " Live grep"), + dashboard.button("SPC p", " Update plugins", "<cmd>PlugUpdate<CR>"), + dashboard.button("c", " Configuration", "<cmd>cd ~/.config/nvim/ <CR>"), + dashboard.button("q", " Quit", "<cmd>qa<CR>"), + }, + position = "center", } local config = { - layout = { - { type = "padding", val = 2 }, - header, - { type = "padding", val = 2 }, - section_mru, - { type = "padding", val = 2 }, - buttons, - }, - opts = { - margin = 5, - setup = function() - vim.api.nvim_create_autocmd('DirChanged', { - pattern = '*', - group = "alpha_temp", - callback = function () require('alpha').redraw() end, - }) - end, - }, + layout = { + { type = "padding", val = 2 }, + header, + { type = "padding", val = 2 }, + section_mru, + { type = "padding", val = 2 }, + buttons, + }, + opts = { + margin = 5, + setup = function() + vim.api.nvim_create_autocmd('DirChanged', { + pattern = '*', + group = "alpha_temp", + callback = function () require('alpha').redraw() end, + }) + end, + }, } return { - header = header, - buttons = buttons, - mru = mru, - config = config, - -- theme specific config - mru_opts = mru_opts, - leader = dashboard.leader, - nvim_web_devicons = nvim_web_devicons, + header = header, + buttons = buttons, + mru = mru, + config = config, + -- theme specific config + mru_opts = mru_opts, + leader = dashboard.leader, + nvim_web_devicons = nvim_web_devicons, } |