return { { "mfussenegger/nvim-ansible", lazy = true, keys = function() vim.keymap.set('v', 'te', function() require('ansible').run() end, { buffer = true, silent = true }) vim.keymap.set('n', 'te', ":w :lua require('ansible').run()", { buffer = true, silent = true }) end, }, { "hat0uma/csvview.nvim", opts = { parser = { comments = { "#", "//" } }, keymaps = { textobject_field_inner = { "if", mode = { "o", "x" } }, textobject_field_outer = { "af", mode = { "o", "x" } }, jump_next_field_end = { "", mode = { "n", "v" } }, jump_prev_field_end = { "", mode = { "n", "v" } }, jump_next_row = { "", mode = { "n", "v" } }, jump_prev_row = { "", mode = { "n", "v" } }, }, }, cmd = { "CsvViewEnable", "CsvViewDisable", "CsvViewToggle" }, }, { "obsidian-nvim/obsidian.nvim", lazy = false, ft = "markdown", keys = { { "kx", "Obsidian extract_note", desc = "Extract Note", mode = "v" }, { "knn", "Obsidian new", desc = "New Obsidian note", mode = "n" }, { "knt", "Obsidian new_from_template", desc = "New from template", mode = "n" }, { "ksq", "Obsidian quick_switch", desc = "Quick Switch", mode = "n" }, { "kss", "Obsidian search", desc = "Search Obsidian notes", mode = "n" }, { "kdt", "Obsidian today", desc = "Daily Today", mode = "n" }, { "kdy", "Obsidian yesterday", desc = "Daily Yesterday", mode = "n" }, { "kdw", "Obsidian tomorrow", desc = "Daily Tomorrow", mode = "n" }, { "kdd", "Obsidian dailies", desc = "Dailies", mode = "n" }, { "kw", "Obsidian workspace", 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', 'k.', 'Obsidian toggle_checkbox', { desc = 'toggle checkbox', buffer = note.bufnr, silent = true }) vim.keymap.set('n', 'kp', 'Obsidian paste_img', { desc = 'paste img', buffer = note.bufnr, silent = true }) vim.keymap.set('n', 'kt', 'Obsidian tags', { desc = 'tags', buffer = note.bufnr, silent = true }) vim.keymap.set('n', 'k`', 'Obsidian backlinks', { desc = 'backlinks', buffer = note.bufnr, silent = true }) vim.keymap.set('n', 'kx', 'Obsidian follow_link', { desc = 'follow link', buffer = note.bufnr, silent = true }) vim.keymap.set('n', 'ksl', 'Obsidian links', { desc = 'links', buffer = note.bufnr, silent = true }) vim.keymap.set('n', 'kr', 'Obsidian rename', { desc = 'rename', buffer = note.bufnr, silent = true }) vim.keymap.set('n', 'ksc', 'Obsidian toc', { desc = 'toc', buffer = note.bufnr, silent = true }) vim.keymap.set('v', 'kx', 'Obsidian link', { desc = 'links', buffer = note.bufnr, silent = true }) vim.keymap.set('v', 'kl', 'Obsidian link_new', { 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 = "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", "xmp", "MarkdownPreview", { desc ="Markdown Preview" }) vim.keymap.set("n", "xms", "MarkdownPreviewStop", { 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' }, 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, }, }