add config folder
This commit is contained in:
25
.config/nvim/lua/config/gruvbox.lua
Normal file
25
.config/nvim/lua/config/gruvbox.lua
Normal 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")
|
||||
4
.config/nvim/lua/config/init.lua
Normal file
4
.config/nvim/lua/config/init.lua
Normal file
@@ -0,0 +1,4 @@
|
||||
require("config.remap")
|
||||
require("config.options")
|
||||
require("config.gruvbox")
|
||||
|
||||
85
.config/nvim/lua/config/options.lua
Normal file
85
.config/nvim/lua/config/options.lua
Normal 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,
|
||||
})
|
||||
|
||||
59
.config/nvim/lua/config/packer.lua
Normal file
59
.config/nvim/lua/config/packer.lua
Normal 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)
|
||||
133
.config/nvim/lua/config/remap.lua
Normal file
133
.config/nvim/lua/config/remap.lua
Normal 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
|
||||
21
.config/nvim/lua/config/remap_utils.lua
Normal file
21
.config/nvim/lua/config/remap_utils.lua
Normal 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
|
||||
Reference in New Issue
Block a user