304 lines
12 KiB
Lua
304 lines
12 KiB
Lua
return {
|
|
|
|
{
|
|
"mfussenegger/nvim-ansible",
|
|
lazy = true,
|
|
keys = function()
|
|
vim.keymap.set('v', '<leader>te', function() require('ansible').run() end, { buffer = true, silent = true })
|
|
vim.keymap.set('n', '<leader>te', ":w<CR> :lua require('ansible').run()<CR>", { buffer = true, silent = true })
|
|
end,
|
|
},
|
|
|
|
{
|
|
"hat0uma/csvview.nvim",
|
|
---@module "csvview"
|
|
---@type CsvView.Options
|
|
opts = {
|
|
parser = { comments = { "#", "//" } },
|
|
keymaps = {
|
|
-- Text objects for selecting fields
|
|
textobject_field_inner = { "if", mode = { "o", "x" } },
|
|
textobject_field_outer = { "af", mode = { "o", "x" } },
|
|
-- Excel-like navigation:
|
|
-- Use <Tab> and <S-Tab> to move horizontally between fields.
|
|
-- Use <Enter> and <S-Enter> to move vertically between rows and place the cursor at the end of the field.
|
|
-- Note: In terminals, you may need to enable CSI-u mode to use <S-Tab> and <S-Enter>.
|
|
jump_next_field_end = { "<Tab>", mode = { "n", "v" } },
|
|
jump_prev_field_end = { "<S-Tab>", mode = { "n", "v" } },
|
|
jump_next_row = { "<Enter>", mode = { "n", "v" } },
|
|
jump_prev_row = { "<S-Enter>", mode = { "n", "v" } },
|
|
},
|
|
},
|
|
cmd = { "CsvViewEnable", "CsvViewDisable", "CsvViewToggle" },
|
|
},
|
|
|
|
{
|
|
"obsidian-nvim/obsidian.nvim",
|
|
lazy = false,
|
|
ft = "markdown",
|
|
keys = {
|
|
{ "<leader>kx", "<cmd>Obsidian extract_note<cr>", desc = "Extract Note", mode = "v" },
|
|
|
|
{ "<leader>knn", "<cmd>Obsidian new<cr>", desc = "New Obsidian note", mode = "n" },
|
|
{ "<leader>knt", "<cmd>Obsidian new_from_template<cr>", desc = "New from template", mode = "n" },
|
|
|
|
{ "<leader>ksq", "<cmd>Obsidian quick_switch<cr>", desc = "Quick Switch", mode = "n" },
|
|
{ "<leader>kss", "<cmd>Obsidian search<cr>", desc = "Search Obsidian notes", mode = "n" },
|
|
|
|
{ "<leader>kdt", "<cmd>Obsidian today<cr>", desc = "Daily Today", mode = "n" },
|
|
{ "<leader>kdy", "<cmd>Obsidian yesterday<cr>", desc = "Daily Yesterday", mode = "n" },
|
|
{ "<leader>kdw", "<cmd>Obsidian tomorrow<cr>", desc = "Daily Tomorrow", mode = "n" },
|
|
{ "<leader>kdd", "<cmd>Obsidian dailies<cr>", desc = "Dailies", mode = "n" },
|
|
{ "<leader>kw", "<cmd>Obsidian workspace<cr>", desc = "Change Workspace", mode = "n" },
|
|
|
|
},
|
|
config = function()
|
|
require("obsidian").setup({
|
|
legacy_commands = false,
|
|
picker = {
|
|
name = "snacks.pick",
|
|
},
|
|
ui = {
|
|
enable = true,
|
|
},
|
|
workspaces = {
|
|
{
|
|
name = "NCA notes",
|
|
path = vim.fn.expand "~" .. "/Documents/nca-notes/",
|
|
},
|
|
},
|
|
notes_subdir = "Inbox",
|
|
daily_notes = {
|
|
folder = "Dailies",
|
|
date_format = "%Y-%m-%d-%a",
|
|
alias_fomat = "%B %-d, %Y",
|
|
default_tags = { "daily-notes" },
|
|
},
|
|
new_notes_location = "notes_subdir",
|
|
templates = {
|
|
subdir = "Templates",
|
|
date_format = "%Y-%m-%d-%a",
|
|
time_format = "%H:%M",
|
|
tags = "",
|
|
},
|
|
completion = {
|
|
nvim_cmp = false,
|
|
blink = true,
|
|
min_chars = 2,
|
|
},
|
|
link = {
|
|
style = "wiki",
|
|
},
|
|
note_id_func = function(title)
|
|
local suffix = ""
|
|
if title ~= nil then
|
|
suffix = title:gsub(" ", "-"):gsub("[^A-Za-z0-9-]", ""):lower()
|
|
else
|
|
for _ = 1, 4 do
|
|
suffix = suffix .. string.char(math.random(65, 90))
|
|
suffix = tostring(os.time()) .. "-" .. suffix
|
|
end
|
|
end
|
|
return suffix
|
|
end,
|
|
|
|
callbacks = {
|
|
enter_note = function(note)
|
|
vim.keymap.set('n', '<leader>k.', '<CMD>Obsidian toggle_checkbox<CR>', { desc = 'toggle checkbox', buffer = note.bufnr, silent = true })
|
|
vim.keymap.set('n', '<leader>kp', '<CMD>Obsidian paste_img<CR>', { desc = 'paste img', buffer = note.bufnr, silent = true })
|
|
vim.keymap.set('n', '<leader>kt', '<CMD>Obsidian tags<CR>', { desc = 'tags', buffer = note.bufnr, silent = true })
|
|
vim.keymap.set('n', '<leader>k`', '<CMD>Obsidian backlinks<CR>', { desc = 'backlinks', buffer = note.bufnr, silent = true })
|
|
vim.keymap.set('n', '<leader>kx', '<CMD>Obsidian follow_link<CR>', { desc = 'follow link', buffer = note.bufnr, silent = true })
|
|
vim.keymap.set('n', '<leader>ksl', '<CMD>Obsidian links<CR>', { desc = 'links', buffer = note.bufnr, silent = true })
|
|
vim.keymap.set('n', '<leader>kr', '<CMD>Obsidian rename<CR>', { desc = 'rename', buffer = note.bufnr, silent = true })
|
|
vim.keymap.set('n', '<leader>ksc', '<CMD>Obsidian toc<CR>', { desc = 'toc', buffer = note.bufnr, silent = true })
|
|
vim.keymap.set('v', '<leader>kx', '<CMD>Obsidian link<CR>', { desc = 'links', buffer = note.bufnr, silent = true })
|
|
vim.keymap.set('v', '<leader>kl', '<CMD>Obsidian link_new<CR>', { desc = 'links', buffer = note.bufnr, silent = true })
|
|
end,
|
|
},
|
|
})
|
|
end,
|
|
},
|
|
|
|
{
|
|
"salkin-mada/openscad.nvim",
|
|
lazy = true,
|
|
config = function()
|
|
vim.g.openscad_load_snippets = true
|
|
require("openscad").setup({})
|
|
end,
|
|
dependencies = { "L3MON4D3/LuaSnip", "junegunn/fzf.vim" },
|
|
},
|
|
|
|
{
|
|
-- 'nvim-orgmode/orgmode',
|
|
'SjB/orgmode',
|
|
branch = 'sjb-wip',
|
|
event = 'VeryLazy',
|
|
ft = { 'org' },
|
|
config = function()
|
|
-- Setup orgmode
|
|
local org = require('orgmode')
|
|
-- org.setup_ts_grammar()
|
|
org.setup({
|
|
ui = {
|
|
input = {
|
|
use_vim_ui = true
|
|
}
|
|
},
|
|
org_agenda_files = {'~/Documents/notes/*project*org', '~/Documents/notes/Inbox*org', '~/Documents/journals/*.org'},
|
|
org_default_notes_file = "~/Documents/notes/Inbox.org",
|
|
org_todo_keywords = { 'TODO(t)', 'NEXT(n)', '|', 'DONE(d)', 'DELEGATED(a)' },
|
|
mappings = {
|
|
capture = {
|
|
org_capture_refile = 'R',
|
|
}
|
|
},
|
|
hyperlinks = {
|
|
sources = {
|
|
-- require("denote.extensions.orgmode"):new({
|
|
-- files = _G.denote.config.directory,
|
|
-- }),
|
|
},
|
|
},
|
|
org_capture_templates = {
|
|
t = {
|
|
description = "Todo item",
|
|
template = "* TODO %?\n SCHEDULED: %t\n DEADLINE: %T\n", -- Template content
|
|
headline = "Tasks",
|
|
},
|
|
j = {
|
|
description = "Journal entry",
|
|
target = "~/Documents/notes/journals/%<%Y-%m-%d>.org",
|
|
template = "* %<%Y-%m-%d %H:%M> %?\n",
|
|
},
|
|
},
|
|
|
|
})
|
|
end,
|
|
},
|
|
|
|
{
|
|
"akinsho/org-bullets.nvim",
|
|
config = function()
|
|
require("org-bullets").setup {
|
|
concealcursor = false, -- If false then when the cursor is on a line underlying characters are visible
|
|
symbols = {
|
|
-- list symbol
|
|
list = "•",
|
|
-- headlines can be a list
|
|
headlines = { "◉", "○", "✸", "✿" },
|
|
-- or a function that receives the defaults and returns a list
|
|
headlines = function(default_list)
|
|
table.insert(default_list, "♥")
|
|
return default_list
|
|
end,
|
|
-- or false to disable the symbol. Works for all symbols
|
|
headlines = false,
|
|
-- or a table of tables that provide a name
|
|
-- and (optional) highlight group for each headline level
|
|
headlines = {
|
|
{ "◉", "MyBulletL1" },
|
|
{ "○", "MyBulletL2" },
|
|
{ "✸", "MyBulletL3" },
|
|
{ "✿", "MyBulletL4" },
|
|
},
|
|
checkboxes = {
|
|
half = { "", "@org.checkbox.halfchecked" },
|
|
done = { "✓", "@org.keyword.done" },
|
|
todo = { "˟", "@org.keyword.todo" },
|
|
},
|
|
}
|
|
}
|
|
end
|
|
},
|
|
|
|
{
|
|
"chipsenkbeil/org-roam.nvim",
|
|
lazy = true,
|
|
ft = { 'org' },
|
|
opts = {
|
|
bindings = {
|
|
prefix = "<LocalLeader>oO",
|
|
},
|
|
directory = "~/Documents/notes",
|
|
extensions = {
|
|
dailies = {
|
|
directory = "journals"
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
{
|
|
"iamcco/markdown-preview.nvim",
|
|
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
|
|
ft = { "markdown" },
|
|
init = function()
|
|
vim.g.mkdp_filetypes = { "markdown" }
|
|
end,
|
|
keys = function()
|
|
vim.keymap.set("n", "<leader>xmp", "<cmd>MarkdownPreview<CR>", { desc ="Markdown Preview" })
|
|
vim.keymap.set("n", "<leader>xms", "<cmd>MarkdownPreviewStop<CR>", { desc ="Markdown Preview Stop" })
|
|
end,
|
|
build = function() vim.fn["mkdp#util#install"]() end,
|
|
--build = "cd app && npm install",
|
|
},
|
|
|
|
{
|
|
"lervag/vimtex",
|
|
ft = "tex", -- Load only for .tex files
|
|
config = function()
|
|
vim.g.tex_flavor = "latex"
|
|
vim.g.vimtex_view_method = "zathura" -- Change to your preferred PDF viewer
|
|
vim.g.vimtex_quickfix_mode = 0 -- Disable quickfix window
|
|
-- vim.opt.conceallevel = 2 -- Enable concealment for nicer inline math display
|
|
vim.g.tex_conceal = "abdmg" -- Conceal accents, bold, delimiters, math, Greek
|
|
end,
|
|
},
|
|
|
|
{
|
|
'MeanderingProgrammer/render-markdown.nvim',
|
|
after = { 'nvim-treesitter' },
|
|
requires = { 'nvim-tree/nvim-web-devicons', opt = true },
|
|
ft = { 'markdown', 'codecompanion', 'copilot-chat' },
|
|
---@module 'render-markdown'
|
|
---@type render.md.UserConfig
|
|
config = function()
|
|
require('render-markdown').setup({
|
|
completions = { lsp = { enabled = true } },
|
|
-- render_modes = { 'n', 'v' },
|
|
render_modes = true,
|
|
enabled = true,
|
|
anti_conceal = {
|
|
enabled = false,
|
|
},
|
|
quote = { repeat_linebreak = true },
|
|
checkbox = {
|
|
-- unchecked = { icon = '✘ ' },
|
|
checked = { icon = '✔ ', scope_highlight = '@markup.strikethrough' },
|
|
custom = {
|
|
todo = { raw = '[-]', rendered = ' ', highlight = 'RenderMarkdownTodo', scope_highlight = nil },
|
|
important = { raw = '[~]', rendered = ' ', highlight = 'DiagnosticWarn', },
|
|
},
|
|
},
|
|
latex = {
|
|
enabled = false,
|
|
converter = "latex2text",
|
|
},
|
|
win_options = {
|
|
conceallevel = {
|
|
default = 0,
|
|
rendered = 2, -- Conceal level 2: hide LaTeX code fully
|
|
},
|
|
concealcursor = {
|
|
default = "",
|
|
rendered = "n", -- Conceal only in normal mode
|
|
},
|
|
}
|
|
})
|
|
end,
|
|
},
|
|
|
|
}
|