new nvim config WIP

This commit is contained in:
Bryan Ramos 2024-08-20 16:53:12 -04:00
parent 8163e330a0
commit 4c8fadee55
Signed by: bryan
GPG key ID: 6ABDCD144D6643C8
14 changed files with 463 additions and 0 deletions

View file

@ -0,0 +1,35 @@
return {
{
"chriskempson/base16-vim",
config = function()
vim.cmd("colorscheme base16-onedark")
vim.cmd([[
hi Normal guibg=NONE ctermbg=NONE
hi NonText guibg=NONE ctermbg=NONE
hi LineNr guibg=NONE ctermbg=NONE
hi CursorLine guibg=NONE ctermbg=NONE
hi CursorLineNr guibg=NONE ctermbg=NONE guifg=#E5C07B ctermfg=Yellow cterm=bold
hi Search ctermfg=Black guifg=#000000 ctermbg=Gray guibg=#FFCC66
hi Pmenu ctermbg=Gray ctermfg=Black cterm=NONE guibg=Gray guifg=Black gui=NONE
hi PmenuSel ctermbg=Black ctermfg=Green cterm=NONE guibg=Black guifg=Green gui=NONE
hi PmenuThumb ctermbg=Green guibg=Green
hi PmenuSbar ctermbg=Black guibg=Black
hi WinSeparator guibg=NONE ctermbg=NONE
hi GitGutterChange guibg=NONE ctermbg=NONE
hi GitGutterAdd guibg=NONE ctermbg=NONE
hi GitGutterDelete guibg=NONE ctermbg=NONE
hi SignColumn ctermbg=NONE guibg=NONE
hi TelescopeSelection guibg=Gray guifg=Green gui=bold ctermbg=Black ctermfg=Green cterm=bold
hi TelescopePreviewMatch ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black
]])
vim.api.nvim_create_autocmd("TextYankPost", {
callback = function()
vim.highlight.on_yank({ higroup = "IncSearch", timeout = 150 })
end,
})
end,
}
}

View file

@ -0,0 +1,59 @@
return {
{
"lewis6991/gitsigns.nvim",
config = function()
require('gitsigns').setup {
signs = {
add = { text = '+' },
change = { text = '~' },
delete = { text = '-' },
topdelete = { text = '' },
changedelete = { text = '~' },
untracked = { text = '' },
},
signs_staged = {
add = { text = '+' },
change = { text = '~' },
delete = { text = '-' },
topdelete = { text = '' },
changedelete = { text = '~' },
untracked = { text = '' },
},
signs_staged_enable = true,
signcolumn = false, -- Toggle with `:Gitsigns toggle_signs`
numhl = true, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = {
follow_files = true
},
auto_attach = true,
attach_to_untracked = false,
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
delay = 0,
ignore_whitespace = false,
virt_text_priority = 100,
},
current_line_blame_formatter = '<author>, <author_time:%R> - <summary>',
sign_priority = 6,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000, -- Disable if file is longer than this (in lines)
preview_config = {
-- Options passed to nvim_open_win
border = 'single',
style = 'minimal',
relative = 'cursor',
row = 0,
col = 1
},
}
require("which-key").add({
{ "<leader>Gb", ":Gitsigns toggle_current_line_blame<CR>", desc = "Git blame" }
})
end
}
}

View file

@ -0,0 +1,5 @@
return {
{
"lukas-reineke/indent-blankline.nvim",
}
}

106
nvim/lua/plugins/lsp.lua Normal file
View file

@ -0,0 +1,106 @@
return {
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
require('nvim-treesitter.configs').setup {
ensure_installed = {
"lua",
"c",
"cpp",
"python",
"nix",
"rust",
"bash",
"markdown",
"html",
"javascript",
"css",
"vim",
"git_config",
"git_rebase",
"gitattributes",
"gitcommit",
"gitignore"
},
auto_install = true,
sync_install = true,
ignore_install = {},
}
end
},
{
"nvim-treesitter/nvim-treesitter-context",
config = function()
require("treesitter-context").setup({
enable = true, -- Enable this plugin (Can be enabled/disabled later via commands)
max_lines = 3, -- How many lines the window should span. Values <= 0 mean no limit.
min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
line_numbers = false,
multiline_threshold = 20, -- Maximum number of lines to collapse for a single context line
trim_scope = "outer", -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
mode = "cursor", -- Line used to calculate context. Choices: 'cursor', 'topline'
-- Separator between context and content. Should be a single character string, like '-'.
-- When separator is set, the context will only show up when there are at least 2 lines above cursorline.
separator = "=",
zindex = 20, -- The Z-index of the context window
on_attach = nil, -- (fun(buf: integer): boolean) rurn false to disable attaching
})
vim.cmd([[
hi TreesitterContext guibg=NONE ctermbg=NONE
]])
end,
},
{
"neovim/nvim-lspconfig",
config = function()
require("which-key").add({
{ "<leader>cl", ":LspInfo<CR>", desc = "LSP Info" },
})
end
},
{
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
},
{
"hrsh7th/nvim-cmp",
dependencies = {
{
"L3MON4D3/LuaSnip",
version = "v2.*",
build = "make install_jsregexp",
}
},
config = function()
local cmp = require("cmp")
cmp.setup({
enabled = function()
local context = require("cmp.config.context")
if vim.api.nvim_get_mode().mode == "c" then
return true
else
return not context.in_treesitter_capture("comment") and not context.in_syntax_group("comment")
end
end,
mapping = {
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-n>"] = cmp.mapping.select_next_item(),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-e>"] = cmp.mapping.abort(),
["<C-y>"] = cmp.mapping.confirm(),
["<CR>"] = cmp.mapping(function(fallback)
fallback()
end, { "i", "s" }),
}
})
end
},
}

View file

@ -0,0 +1,48 @@
return {
{
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("lualine").setup ({
options = {
icons_enabled = true,
theme = 'iceberg_dark',
component_separators = { left = '>', right = '|'},
section_separators = { left = '', right = ''},
disabled_filetypes = {
statusline = {},
winbar = {},
},
ignore_focus = {},
always_divide_middle = true,
globalstatus = true,
refresh = {
statusline = 1000,
tabline = 1000,
winbar = 1000,
}
},
sections = {
lualine_a = {'mode'},
lualine_b = {'branch', 'diff', 'diagnostics'},
lualine_c = {'filename'},
lualine_x = {'encoding', 'fileformat', 'filetype'},
lualine_y = {'progress'},
lualine_z = {'location'}
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = {'filename'},
lualine_x = {'location'},
lualine_y = {},
lualine_z = {}
},
tabline = {},
winbar = {},
inactive_winbar = {},
extensions = {}
})
end
}
}

View file

@ -0,0 +1,24 @@
return {
{
"nvim-neo-tree/neo-tree.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
"MunifTanjim/nui.nvim",
},
config = function()
require("neo-tree").setup({
window = {
position = "left",
width = 20,
},
--filesystem = {
-- hijack_netrw_behavior = "disabled",
--},
})
require("which-key").add({
{ "<leader>e", ":Neotree<CR>", desc = "Neotree" }
})
end,
},
}

View file

@ -0,0 +1,34 @@
return {
{
"nvim-telescope/telescope.nvim",
brach = '0.1.x',
dependencies = {
{
'nvim-lua/plenary.nvim'
},
{
'nvim-tree/nvim-web-devicons'
}
},
config = function()
require("which-key").add({
{ "<leader>/", ":Telescope live_grep<CR>", desc = "grep" },
{ "<leader>ff", ":Telescope fd<CR>", desc = "Search for Files" },
{ "<leader>fp", ":Telescope oldfiles<CR>", desc = "Oldfiles" },
{ "<leader>?", ":Telescope command_history<CR>", desc = "Command History" },
{ "<leader>cm", ":Telescope man_pages<CR>", desc = "Manpages" },
-- Code
{ "<leader>gd", ":Telescope lsp_definitions<CR>", desc = "Go to Definition" },
{ "<leader>gi", ":Telescope lsp_implementations<CR>", desc = "Go to Implementations" },
{ "<leader>gt", ":Telescope lsp_type_definitions<CR>", desc = "Go to Type Definition" },
{ "<leader>cv", ":Telescope treesitter<CR>", desc = "List function names & variables" },
{ "<leader>ca", ":Telescope diagnostics<CR>", desc = "Code diagnostics" },
-- Git
{ "<leader>Gt", ":Telescope git_branches<CR>", desc = "Git Branches" },
{ "<leader>Gc", ":Telescope git_commits<CR>", desc = "Git Commits" },
})
end
}
}

View file

@ -0,0 +1,29 @@
return {
{
"folke/which-key.nvim",
event = "VeryLazy",
opts = {
spec = {
{ "<leader>l", ":Lazy<CR>", desc = "Lazy" },
{ "<leader>t", "<cmd>:botright new | setlocal nonumber norelativenumber | resize 10 | terminal<CR>", mode = "n", desc = "Open Terminal" },
--{ "<leader>wd", "<cmd>execute 'bd' | execute 'close'<CR>", desc = "Delete window & buffer" },
-- Window & Buffer Management
{ "<leader>w", group = "Windows"},
{ "<leader>wc", ":close<CR>", desc = "Close Window" },
{ "<leader>ws", ":split<CR>", desc = "Horizontal Window Split" },
{ "<leader>wv", ":vsplit<CR>", desc = "Vertial Window Split" },
{ "<leader>wm", "<C-w>_", desc = "Maximize Window" },
{ "<leader>b", group = "Buffers"},
{ "<leader>bd", ":bd<CR>", desc = "Delete Buffer" },
{ "<leader>bD", "execute 'close'<CR> | <cmd>execute 'bd!'", desc = "Delete Window & Buffer" },
{ "<leader>G", group = "Git"},
{ "<leader>f", group = "Files"},
{ "<leader>c", group = "Code"},
{ "<leader>g", group = "Goto"},
},
},
}
}