Since Navigator.nvim only implements wezterm compatibility in its main branch as of now, we explicitly switch away from its stable version for now.
227 lines
9.6 KiB
Lua
227 lines
9.6 KiB
Lua
local writing_ft = { "quarto", "pandoc", "markdown", "text", "tex" }
|
|
|
|
return {
|
|
-- vim plugs
|
|
-- essential
|
|
{ 'numToStr/Navigator.nvim', branch = "master", config = true }, -- allow seamless navigation between vim buffers and tmux/wezterm splits
|
|
{ 'jeffkreeftmeijer/vim-numbertoggle', event = "BufEnter" }, -- toggles numbers to absolute for all buffers but the current which is relative
|
|
{ 'ojroques/vim-oscyank', event = "VeryLazy" }, -- yank from *anywhere* (even ssh session) to clipboard, using :OSCYank
|
|
{ 'ggandor/lightspeed.nvim', event = "VeryLazy" }, -- jump between letters with improved fFtT quicksearch, mimics sneak
|
|
-- files
|
|
{ 'vifm/vifm.vim' }, -- integrate file manager
|
|
{
|
|
'lewis6991/gitsigns.nvim', -- show vcs changes on left-hand gutter
|
|
opts = { numhl = true, signcolumn = false },
|
|
event = "BufRead"
|
|
},
|
|
{ 'RRethy/nvim-base16', event = "BufWinEnter",
|
|
dependencies = { 'rktjmp/fwatch.nvim' } }, {
|
|
'norcalli/nvim-colorizer.lua', -- color hex, named colors in the correct preview scheme
|
|
config = true,
|
|
event = "VeryLazy"
|
|
}, {
|
|
'mhartington/formatter.nvim', -- auto formatting on save
|
|
config = function() require('plug._format') end,
|
|
event = "VeryLazy"
|
|
}, -- editing
|
|
{ 'kylechui/nvim-surround', version = '*', config = true, event = "VeryLazy" }, -- surround things with other things using ys/cs/ds
|
|
{
|
|
'monaqa/dial.nvim', -- extend the ^a / ^x possibilities to dates, hex, alphabets, markdown headers
|
|
config = function()
|
|
local augend = require("dial.augend")
|
|
require("dial.config").augends:register_group {
|
|
-- default augends used when no group name is specified
|
|
default = {
|
|
augend.integer.alias.decimal, augend.integer.alias.hex,
|
|
augend.date.alias["%Y/%m/%d"],
|
|
augend.date.alias["%Y-%m-%d"], augend.date.alias["%m/%d"],
|
|
augend.date.alias["%H:%M:%S"], augend.date.alias["%H:%M"],
|
|
augend.constant.alias.de_weekday_full,
|
|
augend.constant.alias.de_weekday,
|
|
augend.constant.alias.bool, augend.semver.alias.semver,
|
|
augend.constant.alias.Alpha, augend.constant.alias.alpha,
|
|
augend.hexcolor.new { case = "lower" }, augend.constant.new {
|
|
elements = { "and", "or" },
|
|
word = true, -- if false, "sand" is incremented into "sor", "doctor" into "doctand", etc.
|
|
cyclic = true -- "or" is incremented into "and".
|
|
},
|
|
augend.constant
|
|
.new {
|
|
elements = { "&&", "||" },
|
|
word = false,
|
|
cyclic = true
|
|
}
|
|
}
|
|
}
|
|
end,
|
|
event = "VeryLazy"
|
|
}, {
|
|
'tommcdo/vim-exchange', -- adds exchange operator with cx. common use: cxiw . on 2 words to switch
|
|
event = "VeryLazy"
|
|
}, {
|
|
'junegunn/vim-easy-align', -- Align tables and other alignable things
|
|
event = "VeryLazy"
|
|
}, -- statusline
|
|
{
|
|
'nvim-lualine/lualine.nvim',
|
|
requires = { 'kyazdani42/nvim-web-devicons', opt = true },
|
|
config = function() require('plug._lualine') end
|
|
}, -- writing
|
|
{ 'vim-pandoc/vim-criticmarkup', ft = writing_ft }, {
|
|
'mickael-menu/zk-nvim',
|
|
config = function() require('zk').setup({ picker = "telescope" }) end
|
|
}, { 'andrewferrier/wrapping.nvim', config = true }, {
|
|
'quarto-dev/quarto-nvim',
|
|
dependencies = {
|
|
'jmbuhr/otter.nvim', 'neovim/nvim-lspconfig',
|
|
'vim-pandoc/vim-pandoc-syntax'
|
|
},
|
|
config = function()
|
|
require 'quarto'.setup {
|
|
lspFeatures = {
|
|
enabled = true,
|
|
languages = { 'r', 'python', 'julia' },
|
|
diagnostics = { enabled = true, triggers = { "BufWrite" } },
|
|
completion = { enabled = true }
|
|
}
|
|
}
|
|
end,
|
|
ft = "quarto"
|
|
}, {
|
|
"lkhphuc/jupyter-kernel.nvim",
|
|
config = true,
|
|
cmd = "JupyterAttach",
|
|
build = ":UpdateRemotePlugins",
|
|
keys = {
|
|
{
|
|
"<localleader>ck",
|
|
"<Cmd>JupyterInspect<CR>",
|
|
desc = "Inspect object in kernel"
|
|
}
|
|
}
|
|
}, { 'micarmst/vim-spellsync', event = "VeryLazy" }, -- personal dict improvements for git sync
|
|
{ 'folke/zen-mode.nvim', config = true, event = "VeryLazy" }, -- provide distraction free writing
|
|
{ 'folke/twilight.nvim', event = "VeryLazy" }, -- provide even distraction free-er writing (lowlight paragraphs)
|
|
{ 'marty-oehme/zettelkasten.nvim', ft = writing_ft, event = "VeryLazy" }, -- simple static markdown linking
|
|
{
|
|
"iamcco/markdown-preview.nvim", -- generate an auto-updating html preview for md files
|
|
build = function() vim.fn["mkdp#util#install"]() end,
|
|
ft = writing_ft
|
|
}, -- languages
|
|
{ 'euclidianAce/BetterLua.vim', ft = 'lua' }, -- better syntax highlighting for lua
|
|
{ 'aliou/bats.vim', ft = { "bash", "sh", "zsh", "bats" } }, -- enable syntax for bats shell-code testing library
|
|
|
|
-- REPL work
|
|
{
|
|
'WhiteBlackGoose/magma-nvim-goose',
|
|
build = ":UpdateRemotePlugins",
|
|
config = function()
|
|
vim.g.magma_image_provider = "kitty"
|
|
vim.g.magma_automatically_open_output = false
|
|
end
|
|
}, -- nvim plugs
|
|
{
|
|
'echasnovski/mini.nvim',
|
|
version = '*',
|
|
config = function() require('plug._mini') end
|
|
}, {
|
|
"akinsho/nvim-toggleterm.lua", -- simpler, programmable and multiple terminal toggling for nvim
|
|
config = function() require('plug._toggleterm') end
|
|
},
|
|
{
|
|
"folke/which-key.nvim",
|
|
config = function() require("which-key").setup {} end
|
|
}, -- fuzzy matching
|
|
{ "nvim-telescope/telescope-fzf-native.nvim", build = 'make' }, {
|
|
"nvim-telescope/telescope.nvim",
|
|
dependencies = { "nvim-lua/popup.nvim", "nvim-lua/plenary.nvim" },
|
|
config = function() require('plug._telescope') end
|
|
}, {
|
|
"dense-analysis/neural",
|
|
dependencies = { "MunifTanjim/nui.nvim", "elpiloto/significant.nvim" },
|
|
config = function()
|
|
require('neural').setup({
|
|
source = { openai = { api_key = vim.env.OPENAI_API_KEY } }
|
|
})
|
|
end
|
|
}, -- treesitter
|
|
{
|
|
'nvim-treesitter/nvim-treesitter',
|
|
build = ':TSUpdate',
|
|
config = function() require('plug._treesitter') end,
|
|
event = "BufReadPre",
|
|
-- rainbow brackets using treesitter
|
|
-- show current cursor context at top of buffer
|
|
-- improves commenting plugin above by using ts
|
|
dependencies = {
|
|
'https://gitlab.com/HiPhish/nvim-ts-rainbow2.git',
|
|
{ 'romgrk/nvim-treesitter-context', config = true },
|
|
'JoosepAlviste/nvim-ts-context-commentstring'
|
|
}
|
|
},
|
|
{ 'nvim-treesitter/playground', cmd = "TSPlaygroundToggle" }, -- interactively view and query the treesitter tree
|
|
{
|
|
'RRethy/nvim-treesitter-textsubjects', -- allows using . and ; to target treesitter branches
|
|
config = function()
|
|
require 'nvim-treesitter.configs'.setup {
|
|
textsubjects = {
|
|
enable = true,
|
|
keymaps = {
|
|
['.'] = 'textsubjects-smart',
|
|
[';'] = 'textsubjects-container-outer'
|
|
}
|
|
}
|
|
}
|
|
end,
|
|
event = "BufReadPre"
|
|
}, {
|
|
'lewis6991/spellsitter.nvim', -- uses treesitter to highlight spelling errors
|
|
config = function() require('spellsitter').setup() end,
|
|
event = "BufReadPre"
|
|
}, -- lsp
|
|
{
|
|
"VonHeikemen/lsp-zero.nvim",
|
|
dependencies = {
|
|
{ "neovim/nvim-lspconfig", branch = "master" },
|
|
"williamboman/mason.nvim", "williamboman/mason-lspconfig.nvim", {
|
|
"hrsh7th/nvim-cmp",
|
|
branch = "main",
|
|
dependencies = {
|
|
"hrsh7th/cmp-buffer", "hrsh7th/cmp-path",
|
|
"saadparwaiz1/cmp_luasnip", "hrsh7th/cmp-nvim-lsp",
|
|
"hrsh7th/cmp-nvim-lua", "andersevenrud/cmp-tmux",
|
|
"hrsh7th/cmp-nvim-lsp", "kdheepak/cmp-latex-symbols",
|
|
"ray-x/cmp-treesitter", "f3fora/cmp-spell",
|
|
"hrsh7th/cmp-cmdline", "cbarrete/completion-vcard",
|
|
"jc-doyle/cmp-pandoc-references",
|
|
}
|
|
}, "L3MON4D3/LuaSnip", "rafamadriz/friendly-snippets",
|
|
{ "lukas-reineke/lsp-format.nvim", config = true }
|
|
},
|
|
config = function() require('plug._lsp') end
|
|
}, { 'simrat39/symbols-outline.nvim', config = true, event = "VeryLazy" }, -- vista-like outline view for code
|
|
{ 'ray-x/lsp_signature.nvim', config = true }, -- UI improvements
|
|
{ 'stevearc/dressing.nvim', config = true }, {
|
|
'rcarriga/nvim-notify',
|
|
config = function() vim.notify = require("notify") end
|
|
}
|
|
-- { -- REQUIRES custom `yay -S --asdeps lua51-lyaml invocation` AND is suuper slow
|
|
-- "jghauser/papis.nvim",
|
|
-- after = { "telescope.nvim", "nvim-cmp" },
|
|
-- dependencies = {
|
|
-- "kkharji/sqlite.lua", "nvim-lua/plenary.nvim",
|
|
-- "MunifTanjim/nui.nvim", "nvim-treesitter/nvim-treesitter"
|
|
-- },
|
|
-- ft = writing_ft,
|
|
-- rocks = { "lyaml" },
|
|
-- config = function()
|
|
-- require('papis').setup({
|
|
-- papis_python = {
|
|
-- dir = "/home/marty/documents/library/academia",
|
|
-- info_name = "info.yaml",
|
|
-- notes_name = [[notes.qmd]]
|
|
-- }
|
|
-- })
|
|
-- end
|
|
-- }
|
|
}
|