This commit is contained in:
Ray Andrew 2024-01-04 22:03:52 -06:00
parent b04e688eaa
commit 1210ef507b
No known key found for this signature in database
GPG key ID: F5A608DC53934412
13 changed files with 1015 additions and 1205 deletions

View file

@ -4,8 +4,9 @@
"cellular-automaton.nvim": { "branch": "main", "commit": "b7d056dab963b5d3f2c560d92937cb51db61cb5b" }, "cellular-automaton.nvim": { "branch": "main", "commit": "b7d056dab963b5d3f2c560d92937cb51db61cb5b" },
"cloak.nvim": { "branch": "main", "commit": "951b163e55ce7639eb320c450bde9283c4fe968b" }, "cloak.nvim": { "branch": "main", "commit": "951b163e55ce7639eb320c450bde9283c4fe968b" },
"cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
"conform.nvim": { "branch": "master", "commit": "c4b2efb8aee4af0ef179a9b49ba401de3c4ef5d2" },
"copilot.vim": { "branch": "release", "commit": "5b19fb001d7f31c4c7c5556d7a97b243bd29f45f" }, "copilot.vim": { "branch": "release", "commit": "5b19fb001d7f31c4c7c5556d7a97b243bd29f45f" },
"distant.nvim": { "branch": "v0.3", "commit": "998724f62386c8022a4e6c885f4509cf9477451a" }, "everforest": { "branch": "main", "commit": "06a600c4fa49e7a4c44848d14c353ecbaab8eb9f" },
"focus.nvim": { "branch": "master", "commit": "c83be53de558f6f0824c8cefcad61719c87ce157" }, "focus.nvim": { "branch": "master", "commit": "c83be53de558f6f0824c8cefcad61719c87ce157" },
"gitsigns.nvim": { "branch": "main", "commit": "d195f0c35ced5174d3ecce1c4c8ebb3b5bc23fa9" }, "gitsigns.nvim": { "branch": "main", "commit": "d195f0c35ced5174d3ecce1c4c8ebb3b5bc23fa9" },
"glow.nvim": { "branch": "main", "commit": "238070a686c1da3bccccf1079700eb4b5e19aea4" }, "glow.nvim": { "branch": "main", "commit": "238070a686c1da3bccccf1079700eb4b5e19aea4" },
@ -22,8 +23,6 @@
"mini.comment": { "branch": "main", "commit": "67f00d3ebbeae15e84584d971d0c32aad4f4f3a4" }, "mini.comment": { "branch": "main", "commit": "67f00d3ebbeae15e84584d971d0c32aad4f4f3a4" },
"nabla.nvim": { "branch": "master", "commit": "27a6ea9ed7452bb9e0b19eb0942b5bcf7d051b2f" }, "nabla.nvim": { "branch": "master", "commit": "27a6ea9ed7452bb9e0b19eb0942b5bcf7d051b2f" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "77d9f484b88fd380386b46ed9206e5374d69d9d8" }, "neo-tree.nvim": { "branch": "v3.x", "commit": "77d9f484b88fd380386b46ed9206e5374d69d9d8" },
"neorg": { "branch": "main", "commit": "a489e7c4f9d7edb3caa04250d07bb6c6a5b9b890" },
"neorg-telescope": { "branch": "main", "commit": "6a7a677c40fa3c348924a4e2a06a513e0b34c056" },
"nui.nvim": { "branch": "main", "commit": "35da9ca1de0fc4dda96c2e214d93d363c145f418" }, "nui.nvim": { "branch": "main", "commit": "35da9ca1de0fc4dda96c2e214d93d363c145f418" },
"nvim-bqf": { "branch": "main", "commit": "bdc2a4e5bb670b3c0e33ada9c0eec636d93a0748" }, "nvim-bqf": { "branch": "main", "commit": "bdc2a4e5bb670b3c0e33ada9c0eec636d93a0748" },
"nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" }, "nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" },
@ -35,9 +34,11 @@
"nvim-treesitter-textobjects": { "branch": "master", "commit": "85b9d0cbd4ff901abcda862b50dbb34e0901848b" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "85b9d0cbd4ff901abcda862b50dbb34e0901848b" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "1277b4a1f451b0f18c0790e1a7f12e1e5fdebfee" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "1277b4a1f451b0f18c0790e1a7f12e1e5fdebfee" },
"nvim-web-devicons": { "branch": "master", "commit": "3e24abe1ae66532135cec911562f553fe247cb56" }, "nvim-web-devicons": { "branch": "master", "commit": "3e24abe1ae66532135cec911562f553fe247cb56" },
"oil.nvim": { "branch": "master", "commit": "a128e6f75c6a71b7b9ac7ea663949a5209771cd5" },
"playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" }, "playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" },
"plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" }, "plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" },
"rasmus": { "branch": "main", "commit": "f824de95d446686e479781c0c2b778c177da528f" }, "rasmus": { "branch": "main", "commit": "f824de95d446686e479781c0c2b778c177da528f" },
"readline.nvim": { "branch": "main", "commit": "5cb27349bc01cdcdb3d3494e5337d8b3834aef1a" },
"refactoring.nvim": { "branch": "master", "commit": "258041a596d733dc51f6ad1e092ed1f23e3faa70" }, "refactoring.nvim": { "branch": "master", "commit": "258041a596d733dc51f6ad1e092ed1f23e3faa70" },
"rose-pine": { "branch": "main", "commit": "92762f4fa2144c05db760ea254f4c399a56a7ef5" }, "rose-pine": { "branch": "main", "commit": "92762f4fa2144c05db760ea254f4c399a56a7ef5" },
"smart-splits.nvim": { "branch": "master", "commit": "403ad1a4fd7eb39388690a5657e7cbfb16da6668" }, "smart-splits.nvim": { "branch": "master", "commit": "403ad1a4fd7eb39388690a5657e7cbfb16da6668" },
@ -52,7 +53,6 @@
"vim-dispatch": { "branch": "master", "commit": "6cc2691576f97d43f8751664d1a1a908b99927e5" }, "vim-dispatch": { "branch": "master", "commit": "6cc2691576f97d43f8751664d1a1a908b99927e5" },
"vim-fugitive": { "branch": "master", "commit": "59659093581aad2afacedc81f009ed6a4bfad275" }, "vim-fugitive": { "branch": "master", "commit": "59659093581aad2afacedc81f009ed6a4bfad275" },
"vim-illuminate": { "branch": "master", "commit": "3bd2ab64b5d63b29e05691e624927e5ebbf0fb86" }, "vim-illuminate": { "branch": "master", "commit": "3bd2ab64b5d63b29e05691e624927e5ebbf0fb86" },
"vim-rsi": { "branch": "master", "commit": "45540637ead22f011e8215f1c90142e49d946a54" },
"vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" }, "vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },
"vim-tmux-navigator": { "branch": "master", "commit": "38b1d0402c4600543281dc85b3f51884205674b6" }, "vim-tmux-navigator": { "branch": "master", "commit": "38b1d0402c4600543281dc85b3f51884205674b6" },
"vimtex": { "branch": "master", "commit": "f9b19d09ee6f0ba70dad0b5c2e710dd700681000" }, "vimtex": { "branch": "master", "commit": "f9b19d09ee6f0ba70dad0b5c2e710dd700681000" },

View file

@ -0,0 +1,33 @@
-- https://github.com/stevearc/conform.nvim/blob/master/doc/recipes.md#lazy-loading-with-lazynvim
vim.api.nvim_create_user_command("FormatDisable", function(args)
if args.bang then
-- FormatDisable! will disable formatting just for this buffer
vim.b.disable_autoformat = true
else
vim.g.disable_autoformat = true
end
end, {
desc = "Disable autoformat-on-save",
bang = true,
})
-- https://github.com/stevearc/conform.nvim/blob/master/doc/recipes.md#lazy-loading-with-lazynvim
vim.api.nvim_create_user_command("FormatEnable", function()
vim.b.disable_autoformat = false
vim.g.disable_autoformat = false
end, {
desc = "Re-enable autoformat-on-save",
})
-- https://github.com/stevearc/conform.nvim/blob/master/doc/recipes.md#format-command
vim.api.nvim_create_user_command("Format", function(args)
local range = nil
if args.count ~= -1 then
local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1]
range = {
start = { args.line1, 0 },
["end"] = { args.line2, end_line:len() },
}
end
require("conform").format({ async = true, lsp_fallback = true, range = range })
end, { range = true })

View file

@ -6,6 +6,7 @@ function M.setup()
require("rayandrew.autocmds") require("rayandrew.autocmds")
require("rayandrew.remap") require("rayandrew.remap")
require("rayandrew.theme").setup() require("rayandrew.theme").setup()
require("rayandrew.commands")
-- require("rayandrew.filetype").setup() -- require("rayandrew.filetype").setup()
-- require("rayandrew.statusline").setup() -- require("rayandrew.statusline").setup()
end end

View file

@ -0,0 +1,159 @@
return {
{
"folke/todo-comments.nvim",
cmd = { "TodoTrouble", "TodoTelescope" },
event = { "BufReadPost", "BufNewFile" },
config = true,
-- stylua: ignore
keys = {
{ "]t", function() require("todo-comments").jump_next() end, desc = "Next todo comment" },
{ "[t", function() require("todo-comments").jump_prev() end, desc = "Previous todo comment" },
{ "<leader>xt", "<cmd>TodoTrouble<cr>", desc = "Todo (Trouble)" },
{ "<leader>xT", "<cmd>TodoTrouble keywords=TODO,FIX,FIXME<cr>", desc = "Todo/Fix/Fixme (Trouble)" },
{ "<leader>st", "<cmd>TodoTelescope<cr>", desc = "Todo" },
{ "<leader>sT", "<cmd>TodoTelescope keywords=TODO,FIX,FIXME<cr>", desc = "Todo/Fix/Fixme" },
},
},
{
"jbyuki/venn.nvim",
keys = {
{
"<leader>nv",
function()
function Toggle_venn()
local venn_enabled = vim.inspect(vim.b.venn_enabled)
if venn_enabled == "nil" then
vim.b.venn_enabled = true
vim.cmd([[setlocal ve=all]])
-- draw a line on HJKL keystokes
vim.api.nvim_buf_set_keymap(0, "n", "J", "<C-v>j:VBox<CR>", { noremap = true })
vim.api.nvim_buf_set_keymap(0, "n", "K", "<C-v>k:VBox<CR>", { noremap = true })
vim.api.nvim_buf_set_keymap(0, "n", "L", "<C-v>l:VBox<CR>", { noremap = true })
vim.api.nvim_buf_set_keymap(0, "n", "H", "<C-v>h:VBox<CR>", { noremap = true })
-- draw a box by pressing "f" with visual selection
vim.api.nvim_buf_set_keymap(0, "v", "f", ":VBox<CR>", { noremap = true })
else
vim.cmd([[setlocal ve=]])
vim.cmd([[mapclear <buffer>]])
vim.b.venn_enabled = nil
end
end
Toggle_venn()
end,
desc = "Open Venn panel",
},
},
},
{
"ellisonleao/glow.nvim",
config = true,
cmd = "Glow",
ft = "markdown",
keys = {
{
"<leader>pm",
"<cmd>Glow<cr>",
desc = "Preview Markdown",
},
},
},
{
"jbyuki/nabla.nvim",
lazy = true,
-- ft = { "tex", "latex", "markdown" },
-- opts = {
-- autogen = true, -- auto-regenerate ASCII art when exiting insert mode
-- silent = true, -- silents error messages
-- },
-- config = function()
-- local nabla = require("nabla")
-- nabla.enable_virt()
-- end,
keys = {
{
"<leader>pe",
function()
require("nabla").toggle_virt()
end,
desc = "Preview Math Equation",
},
},
},
{
"lervag/vimtex",
config = function()
-- vim.g.vimtex_compiler_progname = "nvr"
-- vim.g.vimtex_view_method = "zathura"
end,
},
{
"3rd/image.nvim",
opts = {
backend = "kitty",
integrations = {
markdown = {
enabled = true,
clear_in_insert_mode = false,
download_remote_images = true,
only_render_image_at_cursor = false,
filetypes = { "markdown", "vimwiki" }, -- markdown extensions (ie. quarto) can go here
},
neorg = {
enabled = true,
clear_in_insert_mode = false,
download_remote_images = true,
only_render_image_at_cursor = false,
filetypes = { "norg" },
},
},
max_width = nil,
max_height = nil,
max_width_window_percentage = nil,
max_height_window_percentage = 50,
window_overlap_clear_enabled = false, -- toggles images when windows are overlapped
window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "" },
editor_only_render_when_focused = false, -- auto show/hide images when the editor gains/looses focus
tmux_show_only_in_active_window = false, -- auto show/hide images in the correct Tmux window (needs visual-activity off)
hijack_file_patterns = { "*.png", "*.jpg", "*.jpeg", "*.gif", "*.webp" }, -- render image files as images when opened
},
config = true,
},
{
"laytan/cloak.nvim",
event = {
"BufEnter .env",
"BufEnter .env.*",
},
cmd = {
"CloakEnable",
"CloakDisable",
"CloakToggle",
},
opts = {
enabled = true,
cloak_character = "*",
-- The applied highlight group (colors) on the cloaking, see `:h highlight`.
highlight_group = "Comment",
patterns = {
{
file_pattern = {
".env",
".env.*",
".dev.vars",
},
cloak_pattern = "=.+",
},
},
},
config = function(_, opts)
require("cloak").setup(opts)
end,
},
}

View file

@ -60,15 +60,15 @@ return {
}, },
}, },
keys = { keys = {
-- {
-- "<leader>E",
-- function()
-- vim.cmd("Neotree toggle position=current")
-- end,
-- desc = "Toggle NeoTree as Buffer",
-- },
{ {
"<leader>E", "<leader>fe",
function()
vim.cmd("Neotree toggle position=current")
end,
desc = "Toggle NeoTree as Buffer",
},
{
"<leader>e",
function() function()
vim.cmd("Neotree toggle") vim.cmd("Neotree toggle")
end, end,
@ -78,14 +78,14 @@ return {
deactivate = function() deactivate = function()
vim.cmd([[Neotree close]]) vim.cmd([[Neotree close]])
end, end,
init = function() -- init = function()
if vim.fn.argc(-1) == 1 then -- if vim.fn.argc(-1) == 1 then
local stat = vim.loop.fs_stat(vim.fn.argv(0)) -- local stat = vim.loop.fs_stat(vim.fn.argv(0))
if stat and stat.type == "directory" then -- if stat and stat.type == "directory" then
require("neo-tree") -- require("neo-tree")
end -- end
end -- end
end, -- end,
config = function(_, opts) config = function(_, opts)
local function on_move(data) local function on_move(data)
Util.lsp.on_rename(data.source, data.destination) Util.lsp.on_rename(data.source, data.destination)
@ -109,48 +109,11 @@ return {
end, end,
}, },
-- { {
-- "X3eRo0/dired.nvim", "stevearc/oil.nvim",
-- dependencies = { "MunifTanjim/nui.nvim" }, dependencies = { "nvim-tree/nvim-web-devicons" },
-- opts = { cmd = { "Oil" },
-- path_separator = "/", -- Use '/' as the path separator keys = {
-- show_hidden = true, -- Show hidden files
-- show_banner = false, -- Do not show the banner
-- hide_details = false, -- Show file details by default
-- sort_order = "name", -- Sort files by name by default
--
-- -- Define keybindings for various 'dired' actions
-- keybinds = {
-- dired_enter = "<cr>",
-- dired_back = "-",
-- dired_up = "_",
-- dired_rename = "R",
-- dired_quit = "q",
-- dired_create = "+",
-- dired_toggle_colors = "@",
-- },
-- },
-- keys = {
-- { "<leader>e", "<cmd>Dired<cr>", desc = "Dired" },
-- },
-- config = function(_, opts)
-- require("dired").setup(opts)
-- vim.api.nvim_create_autocmd("FileType", {
-- pattern = "dired",
-- callback = function()
-- local Util = require("rayandrew.util")
-- Util.map("n", "c", "<cmd>DiredCreate<cr>")
-- Util.map("n", "g", "<cmd>edit<cr>")
-- end,
-- })
-- end,
-- },
-- {
-- "stevearc/oil.nvim",
-- dependencies = { "nvim-tree/nvim-web-devicons" },
-- cmd = { "Oil" },
-- keys = {
-- { -- {
-- "<leader>e", -- "<leader>e",
-- function() -- function()
@ -162,74 +125,72 @@ return {
-- end, -- end,
-- desc = "Open current directory", -- desc = "Open current directory",
-- }, -- },
-- { {
-- "<leader>E", "<leader>fE",
-- function() function()
-- -- disable in oil filetype -- disable in oil filetype
-- if vim.bo.filetype == "oil" then if vim.bo.filetype == "oil" then
-- return return
-- end end
-- require("oil").open(".") require("oil").open(".")
-- end, end,
-- desc = "Open current directory", desc = "Open current directory",
-- }, },
-- }, },
-- opts = { opts = {
-- columns = { columns = {
-- -- "icon", -- "icon",
-- -- "permissions",
-- -- "size",
-- -- "mtime",
-- },
-- default_file_explorer = true,
-- restore_win_options = true,
-- float = {
-- padding = 2,
-- max_width = 240,
-- max_height = 70,
-- -- width = 0.2,
-- -- max_height = 0.5,
-- border = "rounded",
-- win_options = {
-- winblend = 10,
-- },
-- },
-- keymaps = {
-- ["<C-i>"] = {
-- callback = function()
-- if vim.bo.filetype == "oil" then
-- local oil = require("oil")
-- vim.g.oil_show_info = not vim.g.oil_show_info
-- if vim.g.oil_show_info then
-- oil.set_columns({
-- "permissions", -- "permissions",
-- "size", -- "size",
-- "mtime", -- "mtime",
-- "icon", },
-- }) default_file_explorer = true,
-- else restore_win_options = true,
-- oil.set_columns({}) float = {
-- end padding = 2,
-- return max_width = 240,
-- end max_height = 70,
-- end, -- width = 0.2,
-- desc = "Toggle info", -- max_height = 0.5,
-- }, border = "rounded",
-- ["q"] = "actions.close", win_options = {
-- ["<C-h>"] = "actions.toggle_hidden", winblend = 10,
-- ["?"] = "actions.show_help", },
-- }, },
-- }, keymaps = {
-- init = function() ["<C-i>"] = {
-- vim.g.oil_show_info = false callback = function()
-- -- if vim.fn.argc() == 1 then if vim.bo.filetype == "oil" then
-- -- local stat = vim.loop.fs_stat(vim.fn.argv(0)) local oil = require("oil")
-- -- if stat and stat.type == "directory" then vim.g.oil_show_info = not vim.g.oil_show_info
-- -- require("oil") if vim.g.oil_show_info then
-- -- end oil.set_columns({
-- -- end "permissions",
-- end, "size",
-- }, "mtime",
"icon",
})
else
oil.set_columns({})
end
return
end
end,
desc = "Toggle info",
},
["q"] = "actions.close",
["<C-h>"] = "actions.toggle_hidden",
["?"] = "actions.show_help",
},
},
init = function()
vim.g.oil_show_info = false
if vim.fn.argc() == 1 then
local stat = vim.loop.fs_stat(vim.fn.argv(0))
if stat and stat.type == "directory" then
require("oil")
end
end
end,
},
} }

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,14 @@
------------------------------
-- LSP CONFIGURATION --
------------------------------
local slow_format_filetypes = {}
return { return {
{ {
{ {
'VonHeikemen/lsp-zero.nvim', "VonHeikemen/lsp-zero.nvim",
branch = 'v3.x', branch = "v3.x",
lazy = true, lazy = true,
config = false, config = false,
init = function() init = function()
@ -12,52 +18,52 @@ return {
end, end,
}, },
{ {
'williamboman/mason.nvim', "williamboman/mason.nvim",
lazy = false, lazy = false,
config = true, config = true,
}, },
-- Autocompletion -- Autocompletion
{ {
'hrsh7th/nvim-cmp', "hrsh7th/nvim-cmp",
event = 'InsertEnter', event = "InsertEnter",
dependencies = { dependencies = {
{'L3MON4D3/LuaSnip'}, { "L3MON4D3/LuaSnip" },
}, },
config = function() config = function()
-- Here is where you configure the autocompletion settings. -- Here is where you configure the autocompletion settings.
local lsp_zero = require('lsp-zero') local lsp_zero = require("lsp-zero")
lsp_zero.extend_cmp() lsp_zero.extend_cmp()
-- And you can configure cmp even more, if you want to. -- And you can configure cmp even more, if you want to.
local cmp = require('cmp') local cmp = require("cmp")
local cmp_action = lsp_zero.cmp_action() local cmp_action = lsp_zero.cmp_action()
cmp.setup({ cmp.setup({
formatting = lsp_zero.cmp_format(), formatting = lsp_zero.cmp_format(),
mapping = cmp.mapping.preset.insert({ mapping = cmp.mapping.preset.insert({
['<C-Space>'] = cmp.mapping.complete(), ["<C-Space>"] = cmp.mapping.complete(),
['<C-u>'] = cmp.mapping.scroll_docs(-4), ["<C-u>"] = cmp.mapping.scroll_docs(-4),
['<C-d>'] = cmp.mapping.scroll_docs(4), ["<C-d>"] = cmp.mapping.scroll_docs(4),
['<C-f>'] = cmp_action.luasnip_jump_forward(), ["<C-f>"] = cmp_action.luasnip_jump_forward(),
['<C-b>'] = cmp_action.luasnip_jump_backward(), ["<C-b>"] = cmp_action.luasnip_jump_backward(),
}),
}) })
}) end,
end
}, },
-- LSP -- LSP
{ {
'neovim/nvim-lspconfig', "neovim/nvim-lspconfig",
cmd = {'LspInfo', 'LspInstall', 'LspStart'}, cmd = { "LspInfo", "LspInstall", "LspStart" },
event = {'BufReadPre', 'BufNewFile'}, event = { "BufReadPre", "BufNewFile" },
dependencies = { dependencies = {
{'hrsh7th/cmp-nvim-lsp'}, { "hrsh7th/cmp-nvim-lsp" },
{'williamboman/mason-lspconfig.nvim'}, { "williamboman/mason-lspconfig.nvim" },
}, },
config = function() config = function()
-- This is where all the LSP shenanigans will live -- This is where all the LSP shenanigans will live
local lsp_zero = require('lsp-zero') local lsp_zero = require("lsp-zero")
lsp_zero.extend_lspconfig() lsp_zero.extend_lspconfig()
lsp_zero.on_attach(function(client, bufnr) lsp_zero.on_attach(function(client, bufnr)
@ -66,18 +72,132 @@ return {
lsp_zero.default_keymaps({ buffer = bufnr }) lsp_zero.default_keymaps({ buffer = bufnr })
end) end)
require('mason-lspconfig').setup({ require("mason-lspconfig").setup({
ensure_installed = {}, ensure_installed = {},
handlers = { handlers = {
lsp_zero.default_setup, lsp_zero.default_setup,
lua_ls = function() lua_ls = function()
-- (Optional) Configure lua language server for neovim -- (Optional) Configure lua language server for neovim
local lua_opts = lsp_zero.nvim_lua_ls() local lua_opts = lsp_zero.nvim_lua_ls()
require('lspconfig').lua_ls.setup(lua_opts) require("lspconfig").lua_ls.setup(lua_opts)
end, end,
} },
}) })
end,
},
},
-- Formatter
{
"stevearc/conform.nvim",
event = { "BufWritePre" },
cmd = { "ConformInfo" },
keys = {
{
-- Customize or remove this keymap to your liking
"<leader>cf",
function()
require("conform").format({ async = true, lsp_fallback = true })
end,
mode = "",
desc = "Format buffer",
},
},
opts = {
formatters_by_ft = {
lua = { "stylua" },
python = { "isort", "black" },
typescript = { { "prettierd", "prettier" }, { "eslint_d", "eslint" } },
javascript = { { "prettierd", "prettier" }, { "eslint_d", "eslint" } },
nix = { "nixfmt" },
},
format_on_save = function(bufnr)
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
return
end end
}
} if slow_format_filetypes[vim.bo[bufnr].filetype] then
return
end
local function on_format(err)
if err and err:match("timeout$") then
slow_format_filetypes[vim.bo[bufnr].filetype] = true
end
end
return { timeout_ms = 200, lsp_fallback = true }, on_format
end,
format_after_save = function(bufnr)
if not slow_format_filetypes[vim.bo[bufnr].filetype] then
return
end
return { lsp_fallback = true }
end,
formatters = {
shfmt = {
prepend_args = { "-i", "2" },
},
},
},
init = function()
-- If you want the formatexpr, here is the place to set it
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
end,
},
{
"folke/trouble.nvim",
cmd = { "TroubleToggle", "Trouble" },
opts = { use_diagnostic_signs = true },
keys = {
{
"<leader>xx",
"<cmd>TroubleToggle document_diagnostics<cr>",
desc = "Document Diagnostics (Trouble)",
},
{
"<leader>xX",
"<cmd>TroubleToggle workspace_diagnostics<cr>",
desc = "Workspace Diagnostics (Trouble)",
},
{
"<leader>xL",
"<cmd>TroubleToggle loclist<cr>",
desc = "Location List (Trouble)",
},
{
"<leader>xQ",
"<cmd>TroubleToggle quickfix<cr>",
desc = "Quickfix List (Trouble)",
},
{
"[q",
function()
if require("trouble").is_open() then
require("trouble").previous({ skip_groups = true, jump = true })
else
local ok, err = pcall(vim.cmd.cprev)
if not ok then
vim.notify(err, vim.log.levels.ERROR)
end
end
end,
desc = "Previous trouble/quickfix item",
},
{
"]q",
function()
if require("trouble").is_open() then
require("trouble").next({ skip_groups = true, jump = true })
else
local ok, err = pcall(vim.cmd.cnext)
if not ok then
vim.notify(err, vim.log.levels.ERROR)
end
end
end,
desc = "Next trouble/quickfix item",
},
},
},
} }

View file

@ -1,7 +1,9 @@
------------------------------
-- Telescope --
------------------------------
return { return {
-- Telescope
------------------------------
{ {
"nvim-telescope/telescope.nvim", "nvim-telescope/telescope.nvim",
cmd = "Telescope", cmd = "Telescope",

View file

@ -1,23 +0,0 @@
return {
------------------------------
-- Color Scheme
------------------------------
{
"rose-pine/neovim",
name = "rose-pine",
lazy = true,
},
{
"davidosomething/vim-colors-meh",
name = "meh",
lazy = true,
},
{
"kvrohit/rasmus.nvim",
name = "rasmus",
lazy = true,
},
}

View file

@ -1,3 +1,5 @@
local load_textobjects = false
return { return {
------------------------------ ------------------------------
-- TreeSitter -- TreeSitter
@ -141,9 +143,11 @@ return {
end end
end, end,
}, },
{ {
"nvim-treesitter/playground", "nvim-treesitter/playground",
}, },
{ {
"nvim-treesitter/nvim-treesitter-context", "nvim-treesitter/nvim-treesitter-context",
opts = { opts = {
@ -151,4 +155,13 @@ return {
}, },
config = true, config = true,
}, },
{
"simrat39/symbols-outline.nvim",
opts = {},
cmd = { "SymbolsOutline", "SymbolsOutlineOpen", "SymbolsOutlineClose" },
keys = {
{ "<leader>so", "<cmd>SymbolsOutline<CR>", desc = "Symbols Outline" },
},
},
} }

View file

@ -0,0 +1,142 @@
------------------------------
-- User Interface
------------------------------
return {
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
opts = function()
local icons = require("rayandrew.theme").icons
local Util = require("rayandrew.util")
return {
options = {
theme = "auto",
globalstatus = true,
disabled_filetypes = { statusline = { "dashboard", "alpha" } },
},
sections = {
lualine_a = {
{
"mode",
fmt = function(str)
return str:sub(1, 1)
end,
},
},
lualine_b = { "branch" },
lualine_c = {
{
"diagnostics",
symbols = {
error = icons.diagnostics.Error,
warn = icons.diagnostics.Warn,
info = icons.diagnostics.Info,
hint = icons.diagnostics.Hint,
},
},
{ "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } },
{ "filename", path = 1, symbols = { modified = "", readonly = "", unnamed = "" } },
},
lualine_x = {
{ require("lazy.status").updates, cond = require("lazy.status").has_updates, color = Util.fg("Special") },
{
"diff",
symbols = {
added = icons.git.added,
modified = icons.git.modified,
removed = icons.git.removed,
},
},
},
lualine_y = {},
lualine_z = {
function()
return "" .. os.date("%R")
end,
},
},
extensions = { "neo-tree", "lazy" },
}
end,
},
{
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
event = { "BufReadPost", "BufNewFile" },
opts = {
-- char = "▏",
indent = {
char = "",
},
exclude = {
filetypes = {
"help",
"alpha",
"dashboard",
"neo-tree",
"Trouble",
"lazy",
"mason",
"notify",
"toggleterm",
"lazyterm",
"qf",
},
buftypes = {
"terminal",
"nofile",
"quickfix",
"prompt",
},
},
scope = {
enabled = true,
},
-- show_trailing_blankline_indent = false,
},
},
{ "kevinhwang91/nvim-bqf", ft = "qf" },
-- icons
{ "nvim-tree/nvim-web-devicons", lazy = true },
{
"lewis6991/gitsigns.nvim",
event = { "BufReadPre", "BufNewFile" },
opts = {
signs = {
add = { text = "" },
change = { text = "" },
delete = { text = "" },
topdelete = { text = "" },
changedelete = { text = "" },
untracked = { text = "" },
},
on_attach = function(buffer)
local gs = package.loaded.gitsigns
local function map(mode, l, r, desc)
vim.keymap.set(mode, l, r, { buffer = buffer, desc = desc })
end
-- stylua: ignore start
map("n", "]h", gs.next_hunk, "Next Hunk")
map("n", "[h", gs.prev_hunk, "Prev Hunk")
map({ "n", "v" }, "<leader>ghs", ":Gitsigns stage_hunk<CR>", "Stage Hunk")
map({ "n", "v" }, "<leader>ghr", ":Gitsigns reset_hunk<CR>", "Reset Hunk")
map("n", "<leader>ghS", gs.stage_buffer, "Stage Buffer")
map("n", "<leader>ghu", gs.undo_stage_hunk, "Undo Stage Hunk")
map("n", "<leader>ghR", gs.reset_buffer, "Reset Buffer")
map("n", "<leader>ghp", gs.preview_hunk, "Preview Hunk")
map("n", "<leader>ghb", function() gs.blame_line({ full = true }) end, "Blame Line")
map("n", "<leader>ghd", gs.diffthis, "Diff This")
map("n", "<leader>ghD", function() gs.diffthis("~") end, "Diff This ~")
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", "GitSigns Select Hunk")
end,
},
},
}

View file

@ -0,0 +1,398 @@
------------------------------
-- Utilities
------------------------------
return {
{
"nvim-focus/focus.nvim",
version = "*",
opts = {},
cmd = { "FocusToggle", "FocusSplitNicely", "FocusSplitCycle", "FocusSplitCycleReverse" },
keys = {
{
"<space>wf",
"<cmd>FocusToggle<CR>",
desc = "Toggle Focus",
},
},
},
{
"kylechui/nvim-surround",
version = "*",
event = "VeryLazy",
opts = {},
},
{
"RRethy/vim-illuminate",
event = { "BufReadPost", "BufNewFile" },
opts = {
delay = 200,
large_file_cutoff = 2000,
large_file_overrides = {
providers = { "lsp" },
},
},
config = function(_, opts)
require("illuminate").configure(opts)
local function map(key, dir, buffer)
vim.keymap.set("n", key, function()
require("illuminate")["goto_" .. dir .. "_reference"](false)
end, {
desc = dir:sub(1, 1):upper() .. dir:sub(2) .. " Reference",
buffer = buffer,
})
end
map("]]", "next")
map("[[", "prev")
-- also set it after loading ftplugins, since a lot overwrite [[ and ]]
vim.api.nvim_create_autocmd("FileType", {
callback = function()
local buffer = vim.api.nvim_get_current_buf()
map("]]", "next", buffer)
map("[[", "prev", buffer)
end,
})
end,
keys = {
{ "]]", desc = "Next Reference" },
{ "[[", desc = "Prev Reference" },
},
},
-- comments
{
"echasnovski/mini.comment",
event = "VeryLazy",
dependencies = {
{ "JoosepAlviste/nvim-ts-context-commentstring", lazy = true },
},
opts = {
options = {
custom_commentstring = function()
return require("ts_context_commentstring.internal").calculate_commentstring() or vim.bo.commentstring
end,
},
},
},
-- RSI compatibility
-- {
-- "tpope/vim-rsi",
-- },
{
"assistcontrol/readline.nvim",
event = "VeryLazy",
keys = {
{
"<M-f>",
function()
require("readline").forward_word()
end,
mode = "!",
},
{
"<M-b>",
function()
require("readline").backward_word()
end,
mode = "!",
},
{
"<M-d>",
function()
require("readline").kill_word()
end,
mode = "!",
},
{
"<M-BS>",
function()
require("readline").backward_kill_word()
end,
mode = "!",
},
{
"<C-w>",
function()
require("readline").unix_word_rubout()
end,
mode = "!",
},
{
"<C-k>",
function()
require("readline").kill_line()
end,
mode = "!",
},
{
"<C-u>",
function()
require("readline").backward_kill_line()
end,
mode = "!",
},
{
"<C-a>",
function()
require("readline").beginning_of_line()
end,
mode = "!",
},
{
"<C-e>",
function()
require("readline").end_of_line()
end,
mode = "!",
},
{ "<C-f>", "<Right>", mode = "!" }, -- forward-char
{ "<C-b>", "<Left>", mode = "!" }, -- backward-char
{ "<C-n>", "<Down>", mode = "!" }, -- next-line
{ "<C-p>", "<Up>", mode = "!" }, -- previous-line
{ "<C-d>", "<Delete>", mode = "!" }, -- delete-char
{ "<C-h>", "<BS>", mode = "!" }, -- backward-delete-char
{ "<C-g>", "<Esc>", mode = "!" }, -- abort
},
},
{
"tpope/vim-fugitive",
cmd = { "Git" },
},
{
"theprimeagen/harpoon",
event = "VeryLazy",
keys = {
{
"<leader>ha",
function()
local mark = require("harpoon.mark")
mark.add_file()
vim.print("Added to Harpoon " .. vim.fn.expand("%"))
end,
desc = "Harpoon Add File",
},
{
"<leader>he",
function()
local ui = require("harpoon.ui")
ui.toggle_quick_menu()
end,
desc = "Harpoon UI",
},
{
"<leader>h1",
function()
local ui = require("harpoon.ui")
ui.nav_file(1)
end,
},
{
"<leader>h2",
function()
local ui = require("harpoon.ui")
ui.nav_file(2)
end,
},
{
"<leader>h3",
function()
local ui = require("harpoon.ui")
ui.nav_file(3)
end,
},
{
"<leader>h4",
function()
local ui = require("harpoon.ui")
ui.nav_file(4)
end,
},
{
"<leader>h5",
function()
local ui = require("harpoon.ui")
ui.nav_file(5)
end,
},
},
},
{
"theprimeagen/refactoring.nvim",
},
{
"github/copilot.vim",
init = function()
-- vim.g.copilot_no_tab_map = true
-- vim.g.copilot_assume_mapped = true
-- vim.g.copilot_tab_fallback = ""
vim.g.copilot_filetypes = {
["*"] = true,
["text"] = false,
}
end,
},
{
"eandrju/cellular-automaton.nvim",
},
{
"mbbill/undotree",
},
{
"folke/which-key.nvim",
event = "VeryLazy",
opts = {
plugins = { spelling = true },
defaults = {
mode = { "n", "v" },
["g"] = { name = "+goto" },
["gz"] = { name = "+surround" },
["]"] = { name = "+next" },
["["] = { name = "+prev" },
["<leader><tab>"] = { name = "+tabs" },
["<leader>b"] = { name = "+buffer" },
["<leader>c"] = { name = "+code" },
["<leader>f"] = { name = "+file/find" },
["<leader>g"] = { name = "+git" },
["<leader>n"] = { name = "+note" },
["<leader>gh"] = { name = "+hunks" },
["<leader>q"] = { name = "+quit/session" },
["<leader>s"] = { name = "+search" },
["<leader>u"] = { name = "+ui" },
["<leader>w"] = { name = "+windows" },
["<leader>x"] = { name = "+diagnostics/quickfix" },
},
},
config = function(_, opts)
local wk = require("which-key")
wk.setup(opts)
wk.register(opts.defaults)
end,
},
-- zen
{
"folke/zen-mode.nvim",
opts = {
window = {
width = 100,
},
plugins = {
tmux = {
enabled = true,
},
},
on_open = function()
vim.wo.wrap = false
vim.wo.number = false
vim.wo.rnu = false
vim.wo.signcolumn = "no"
end,
on_close = function()
vim.wo.wrap = true
vim.wo.number = true
vim.wo.rnu = true
vim.wo.signcolumn = "yes"
end,
},
keys = {
{
"<leader>z",
function()
require("zen-mode").toggle()
require("rayandrew.theme").recolor()
end,
},
},
},
-- Tmux
{
"mrjones2014/smart-splits.nvim",
lazy = true,
-- event = "VeryLazy",
dependencies = {
{
"kwkarlwang/bufresize.nvim",
opts = {},
},
},
config = function()
require("smart-splits").setup({
resize_mode = {
hooks = {
on_leave = require("bufresize").register,
},
},
})
end,
},
{
"christoomey/vim-tmux-navigator",
cmd = {
"TmuxNavigateLeft",
"TmuxNavigateDown",
"TmuxNavigateUp",
"TmuxNavigateRight",
},
keys = { "<C-h>", "<C-j>", "<C-k>", "<C-l>" },
config = function()
vim.g.tmux_navigator_no_wrap = 1
end,
},
-- search/replace in multiple files
{
"nvim-pack/nvim-spectre",
cmd = "Spectre",
opts = { open_cmd = "noswapfile vnew" },
keys = {
{
"<leader>sr",
function()
require("spectre").open()
end,
desc = "Replace in files (Spectre)",
},
},
},
-- buffer remove
{
"echasnovski/mini.bufremove",
-- stylua: ignore
keys = {
{ "<leader>bd", function() require("mini.bufremove").delete(0, false) end, desc = "Delete Buffer" },
{ "<leader>bD", function() require("mini.bufremove").delete(0, true) end, desc = "Delete Buffer (Force)" },
},
},
{
"tpope/vim-dispatch",
commands = { "Make", "Dispatch", "Copen" },
keys = {
{
"<leader>cc",
function()
local input = vim.fn.input("Command: ")
vim.cmd("Dispatch " .. input)
end,
desc = "AsyncRun",
},
{ "<leader>ck", desc = "AsyncStop" },
},
},
}

View file

@ -2,7 +2,8 @@ local M = {}
-- M.colorscheme = "rose-pine" -- M.colorscheme = "rose-pine"
-- M.colorscheme = "meh" -- M.colorscheme = "meh"
M.colorscheme = "rasmus" -- M.colorscheme = "rasmus"
M.colorscheme = "everforest"
-- M.colorscheme = "" -- M.colorscheme = ""
function M.setup() function M.setup()