add config folder

This commit is contained in:
Tibeuleu
2024-02-27 11:54:00 +01:00
commit 738538d51b
33 changed files with 1776 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
-- setup must be called before loading the colorscheme
-- Default options:
require("gruvbox").setup({
undercurl = true,
underline = true,
bold = true,
italic = {
strings = false,
comments = true,
operators = false,
folds = true,
},
strikethrough = true,
invert_selection = false,
invert_signs = false,
invert_tabline = false,
invert_intend_guides = false,
inverse = true, -- invert background for search, diffs, statuslines and errors
contrast = "", -- can be "hard", "soft" or empty string
palette_overrides = {},
overrides = {},
dim_inactive = false,
transparent_mode = true,
})
vim.cmd.colorscheme("gruvbox")

View File

@@ -0,0 +1,4 @@
require("config.remap")
require("config.options")
require("config.gruvbox")

View File

@@ -0,0 +1,85 @@
-- Square cursor
vim.opt.guicursor = ""
-- Enable relative line number
vim.opt.nu = true
vim.opt.relativenumber = true
-- Set tabs to 4 spaces
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.expandtab = true
-- Enable auto indent and set it to 4 spaces
vim.opt.smartindent = true
vim.opt.shiftwidth = 4
-- Disable text wrap
vim.opt.wrap = true
-- Enable persistent undo history
vim.opt.swapfile = false
vim.opt.backup = false
vim.opt.undodir = os.getenv("HOME") .. "/.config/nvim/undodir"
vim.opt.undofile = true
-- Set better splitting
vim.opt.splitright = true
vim.opt.splitbelow = true
-- Better search options
vim.opt.hlsearch = false
vim.opt.incsearch = true
-- Enable 24-bit color
vim.opt.termguicolors = true
-- Always keep 8 lines above/below cursor unless at start/end of file
vim.opt.scrolloff = 8
-- Decrease uptade time
vim.opt.updatetime = 50
-- Remove trailing white spaces
vim.api.nvim_create_autocmd({"BufWritePre"}, {
group = vim.api.nvim_create_augroup("remove_trailing_spaces", { clear = true }),
pattern = "*",
desc = "Remove trailing white spaces",
command = [[%s/\s\+$//e]],
})
-- Restore cursor position
vim.api.nvim_create_autocmd({"BufReadPost"}, {
group = vim.api.nvim_create_augroup("restore_cursor_pos", { clear = true}),
pattern = "*",
desc = "Restore cursor position",
callback = function()
vim.cmd('silent! normal! g`"zv')
end,
})
-- Open help panel in a vsplit to the left
vim.api.nvim_create_autocmd("FileType", {
group = vim.api.nvim_create_augroup("vertical_help", { clear = true }),
pattern = "help",
callback = function()
vim.bo.bufhidden = "unload"
vim.cmd.wincmd("L")
vim.cmd.wincmd("=")
end,
})
-- Highlight yankzone
vim.api.nvim_create_autocmd('TextYankPost', {
group = vim.api.nvim_create_augroup("highlight_yank", { clear = true}),
pattern = '*',
desc = "Highlight selection on yank",
callback = function()
vim.highlight.on_yank({
higroup = 'IncSearch',
timeout = 200,
visual = true,
})
end,
})

View File

@@ -0,0 +1,59 @@
return require('packer').startup(function(use)
-- Packer can manage itself
use 'wbthomason/packer.nvim'
use {
'nvim-telescope/telescope.nvim',
tag = '0.1.1',
-- or branch = '0.1.x',
requires = { {'nvim-lua/plenary.nvim'} }
}
use "ellisonleao/gruvbox.nvim"
use {
'nvim-treesitter/nvim-treesitter',
run = function()
local ts_update = require('nvim-treesitter.install').update({ with_sync = true })
ts_update()
end,
}
use 'nvim-treesitter/playground'
use {
'ThePrimeagen/harpoon',
requires = { {'nvim-lua/plenary.nvim'} }
}
use 'mbbill/undotree'
use 'tpope/vim-fugitive'
use 'airblade/vim-gitgutter'
use 'lukas-reineke/indent-blankline.nvim'
use 'JoosepAlviste/nvim-ts-context-commentstring'
use 'numToStr/Comment.nvim'
use 'lervag/vimtex'
use {
'neovim/nvim-lspconfig',
requires = {
-- LSP Support
{'williamboman/mason.nvim'},
{'williamboman/mason-lspconfig.nvim'},
-- Autocompletion
{'hrsh7th/nvim-cmp'},
{'hrsh7th/cmp-nvim-lsp'},
{'hrsh7th/cmp-buffer'},
{'hrsh7th/cmp-path'},
{'hrsh7th/cmp-cmdline'},
-- Snippets
{'L3MON4D3/LuaSnip'},
{'saadparwaiz1/cmp_luasnip'},
{'rafamadriz/friendly-snippets'},
{'onsails/lspkind.nvim'},
-- Utils
{'j-hui/fidget.nvim'},
{'folke/neodev.nvim'}
}
}
end)

View File

@@ -0,0 +1,133 @@
local nnoremap = require("config.remap_utils").nnoremap
local vnoremap = require("config.remap_utils").vnoremap
local inoremap = require("config.remap_utils").inoremap
local tnoremap = require("config.remap_utils").tnoremap
local xnoremap = require("config.remap_utils").xnoremap
local M = {}
-- Set leader key to space
vim.g.mapleader = " "
-- Set Explorer keybind to leader-"e"
vim.keymap.set("n","<leader>e", vim.cmd.Ex)
-- Disable Space bar since it'll be used as the leader key
nnoremap("<space>", "<nop>")
vnoremap("<space>", "<nop>")
-- Remap <C-c> to esc to avoid weird interaction
inoremap("<C-c>", "<Esc>")
-- <leader>s for quick find/replace for the word under the cursor
nnoremap("<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
-- Paste without deleting what's in the yank
xnoremap("<leader>p", [["_dP]])
-- <leader>f to format
nnoremap("<leader>f", ":Format<cr>")
-- Characters/Words/Lines count
nnoremap("<leader>cc", "<cmd>!wc -m %<cr>")
nnoremap("<leader>cw", "<cmd>!wc -w %<cr>")
nnoremap("<leader>cl", "<cmd>!wc -l %<cr>")
-- LSP Keybinds (exports a function to be used in ../../after/plugin/lsp.lua b/c we need a reference to the current buffer) --
M.map_lsp_keybinds = function(buffer_number)
-- Rename variable
nnoremap("<leader>rn", vim.lsp.buf.rename, { desc = "LSP: [R]e[n]ame", buffer = buffer_number })
-- LSP code action
nnoremap("<leader>ca", vim.lsp.buf.code_action, { desc = "LSP: [C]ode [A]ction", buffer = buffer_number })
-- Goto definition
nnoremap("gd", vim.lsp.buf.definition, { desc = "LSP: [G]oto [D]efinition", buffer = buffer_number })
-- Telescope LSP keybinds --
-- Goto reference
nnoremap(
"gr",
require("telescope.builtin").lsp_references,
{ desc = "LSP: [G]oto [R]eferences", buffer = buffer_number }
)
-- Goto implementation
nnoremap(
"gi",
require("telescope.builtin").lsp_implementations,
{ desc = "LSP: [G]oto [I]mplementation", buffer = buffer_number }
)
-- List of symbols in the current buffer
nnoremap(
"<leader>bs",
require("telescope.builtin").lsp_document_symbols,
{ desc = "LSP: [B]uffer [S]ymbols", buffer = buffer_number }
)
-- List of symbols in the workspace
nnoremap(
"<leader>ps",
require("telescope.builtin").lsp_workspace_symbols,
{ desc = "LSP: [P]roject [S]ymbols", buffer = buffer_number }
)
-- Hover documentation
nnoremap("K", vim.lsp.buf.hover, { desc = "LSP: Hover Documentation", buffer = buffer_number })
-- Signature documentation
nnoremap("<leader>k", vim.lsp.buf.signature_help, { desc = "LSP: Signature Documentation", buffer = buffer_number })
inoremap("<C-k>", vim.lsp.buf.signature_help, { desc = "LSP: Signature Documentation", buffer = buffer_number })
-- Goto declaration
nnoremap("gD", vim.lsp.buf.declaration, { desc = "LSP: [G]oto [D]eclaration", buffer = buffer_number })
-- Type definition
nnoremap("td", vim.lsp.buf.type_definition, { desc = "LSP: [T]ype [D]efinition", buffer = buffer_number })
end
-- Goto next diagnostic of any severity
nnoremap("]d", function()
vim.diagnostic.goto_next({})
vim.api.nvim_feedkeys("zz", "n", false)
end)
-- Goto prev diagnostic of any severity
nnoremap("[d", function()
vim.diagnostic.goto_prev({})
vim.api.nvim_feedkeys("zz", "n", false)
end)
-- Goto next error diagnostic
nnoremap("]e", function()
vim.diagnostic.goto_next({ severity = vim.diagnostic.severity.ERROR })
vim.api.nvim_feedkeys("zz", "n", false)
end)
-- Goto previous error diagnostic
nnoremap("[e", function()
vim.diagnostic.goto_prev({ severity = vim.diagnostic.severity.ERROR })
vim.api.nvim_feedkeys("zz", "n", false)
end)
-- Goto next warning diagnostic
nnoremap("]w", function()
vim.diagnostic.goto_next({ severity = vim.diagnostic.severity.WARN })
vim.api.nvim_feedkeys("zz", "n", false)
end)
-- Goto previous warning diagnostic
nnoremap("[w", function()
vim.diagnostic.goto_prev({ severity = vim.diagnostic.severity.WARN })
vim.api.nvim_feedkeys("zz", "n", false)
end)
-- Open diagnostic window
nnoremap("<leader>d", function()
vim.diagnostic.open_float({
border = "rounded",
})
end)
return M

View File

@@ -0,0 +1,21 @@
local M = {}
-- Remap bindkey functions
local function bind(op, outer_opts)
outer_opts = vim.tbl_extend("force", { noremap = true, silent = true }, outer_opts or {})
return function(lhs, rhs, opts)
opts = vim.tbl_extend("force", outer_opts, opts or {})
vim.keymap.set(op, lhs, rhs, opts)
end
end
M.map = bind("")
M.nmap = bind("n", { noremap = false })
M.nnoremap = bind("n")
M.vnoremap = bind("v")
M.xnoremap = bind("x")
M.inoremap = bind("i")
M.tnoremap = bind("t")
return M