summaryrefslogtreecommitdiff
path: root/home/config/nvim/lua/menu.lua
diff options
context:
space:
mode:
Diffstat (limited to 'home/config/nvim/lua/menu.lua')
-rw-r--r--home/config/nvim/lua/menu.lua338
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,
}