aboutsummaryrefslogtreecommitdiffstats
path: root/.config/nvim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.config/nvim/init.lua131
1 files changed, 95 insertions, 36 deletions
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
index a20e035..fccb903 100644
--- a/.config/nvim/init.lua
+++ b/.config/nvim/init.lua
@@ -10,19 +10,27 @@ vim.cmd [[
Plug 'junegunn/fzf'
Plug 'nvim-lua/plenary.nvim'
Plug 'nvim-telescope/telescope.nvim', { 'branch': '0.1.x' }
- Plug 'Pocco81/true-zen.nvim'
Plug 'neovim/nvim-lspconfig'
Plug 'williamboman/mason.nvim'
Plug 'williamboman/mason-lspconfig.nvim'
Plug 'WhoIsSethDaniel/mason-tool-installer.nvim'
Plug 'j-hui/fidget.nvim'
+ Plug 'hrsh7th/nvim-cmp'
+ Plug 'hrsh7th/cmp-nvim-lsp'
+ Plug 'hrsh7th/cmp-buffer'
+ Plug 'hrsh7th/cmp-path'
+ Plug 'github/copilot.vim'
call plug#end()
]]
+vim.g.NERDTreeShowHidden = 1
+vim.g.pear_tree_ft_disabled = { "TelescopePrompt", "TelescopeResults" }
+
-- options
local opts = {
autochdir = true,
autoindent = true,
+ autoread = true,
backup = false,
cursorline = true,
expandtab = true,
@@ -64,6 +72,29 @@ if vim.env.TERM == "alacritty" then
vim.opt.ttymouse = "sgr"
end
+-- custom functions for keymaps
+local term_buf = nil
+local toggle_terminal
+toggle_terminal = function()
+ if term_buf and vim.fn.bufexists(term_buf) == 1 then
+ local win = vim.fn.bufwinnr(term_buf)
+ if win ~= -1 then
+ vim.cmd(win .. "close")
+ return
+ end
+ vim.cmd("belowright split")
+ vim.cmd("resize " .. math.floor(vim.o.lines / 3))
+ vim.cmd("buffer " .. term_buf)
+ vim.cmd("startinsert")
+ return
+ end
+ vim.cmd("belowright split")
+ vim.cmd("resize " .. math.floor(vim.o.lines / 3))
+ vim.cmd("terminal")
+ vim.cmd("startinsert")
+ term_buf = vim.api.nvim_get_current_buf()
+end
+
-- custom keymaps
local keymap = vim.keymap.set
@@ -71,35 +102,35 @@ keymap("v", "<C-c>", '"+y', { noremap = true })
keymap("v", "<C-x>", '"+x', { noremap = true })
keymap({ "n", "v" }, "<C-p>", '"+p', { noremap = true })
keymap({ "n", "v" }, "<leader>p", '"+P', { noremap = true })
-
keymap("n", "<C-d>", "<C-d>zz", { noremap = true })
keymap("n", "<C-u>", "<C-u>zz", { noremap = true })
keymap("n", "n", "nzzzv", { noremap = true })
keymap("n", "N", "Nzzzv", { noremap = true })
-keymap("n", "<leader>n", ":NERDTreeFocus<CR>", { noremap = true })
-keymap("n", "<C-n>", ":NERDTree<CR>", { noremap = true })
+keymap("n", "<S-A-b>h", ":NERDTreeToggle<CR>", { noremap = true })
+keymap("n", "<S-A-b><S-A-h>", ":NERDTreeToggle<CR>", { noremap = true })
keymap("n", "<A-n>", ":NERDTreeToggle<CR>", { noremap = true })
-keymap("n", "<leader>/", ":NERDTreeFind<CR>", { noremap = true })
-
+keymap("n", "<S-A-n>", ":NERDTree<CR>", { noremap = true })
+keymap("n", "<S-A-j>", "<C-W>w", { noremap = true })
+keymap("n", "<S-A-k>", "<C-W>W", { noremap = true })
+keymap({"n", "t"}, "<S-A-b>j", function() toggle_terminal() end, { noremap = true })
+keymap({"n", "t"}, "<S-A-b><S-A-j>", function() toggle_terminal() end, { noremap = true })
keymap("n", "<leader>sc", ":set spell!<CR>", { noremap = true, silent = true })
-keymap("n", "<A-s>", "<C-W>v", { noremap = true })
-keymap("n", "<A-d>", "<C-W>s", { noremap = true })
+keymap("n", "<A-j>", ":bnext<CR>", { noremap = true, silent = true })
+keymap("n", "<A-k>", ":bprev<CR>", { noremap = true, silent = true })
+
keymap("n", "<A-q>", "ZQ", { noremap = true })
keymap("n", "<A-z>", "ZZ", { noremap = true })
-keymap("n", "<A-j>", "<C-W>j", { noremap = true })
-keymap("n", "<A-k>", "<C-W>k", { noremap = true })
-keymap("n", "<A-l>", "<C-W>l", { noremap = true })
-keymap("n", "<A-h>", "<C-W>h", { noremap = true })
-keymap("n", "<A-e>", "<C-W>w", { noremap = true })
-keymap("n", "<A-w>", "<C-W>W", { noremap = true })
keymap("n", "<A-,>", "<C-W>5<", { noremap = true })
keymap("n", "<A-.>", "<C-W>5>", { noremap = true })
keymap("n", "<A-->", "<C-W>5-", { noremap = true })
keymap("n", "<A-=>", "<C-W>5+", { noremap = true })
+keymap("n", "<A-s>", ":vsplit<CR>", { noremap = true })
+keymap("n", "<A-d>", ":split<CR>", { noremap = true })
+
keymap("n", "<A-t>", ":tabnew<CR>", { noremap = true })
keymap("n", "<A-[>", ":tabprev<CR>", { noremap = true })
keymap("n", "<A-]>", ":tabnext<CR>", { noremap = true })
@@ -107,6 +138,9 @@ keymap("n", "<A-;>", ":tabmove -<CR>", { noremap = true })
keymap("n", "<A-'>", ":tabmove +<CR>", { noremap = true })
keymap("n", "<leader>ft", ":set filetype=", { noremap = true })
+-- copilot
+keymap("i", "<C-l>", 'copilot#Accept("<CR>")', { expr = true, silent = true, replace_keycodes = false })
+
-- ui and colors
vim.cmd("colorscheme tender")
@@ -126,6 +160,12 @@ vim.api.nvim_create_autocmd("BufWritePre", {
command = [[%s/\s\+$//e]],
})
+local autoread_group = vim.api.nvim_create_augroup("autoread", { clear = true })
+vim.api.nvim_create_autocmd({ "FocusGained", "BufEnter", "CursorHold", "CursorHoldI" }, {
+ group = autoread_group,
+ command = "if mode() !~ '\''[cCeEsS]'\'' | checktime | endif",
+})
+
vim.cmd("filetype plugin on")
vim.cmd("filetype indent on")
vim.cmd("syntax on")
@@ -193,26 +233,6 @@ if tele_ok then
end, {})
end
--- truezen
-local zen_ok, truezen = pcall(require, "true-zen")
-if zen_ok then
- keymap("n", "<leader>zn", function()
- local first = 0
- local last = vim.api.nvim_buf_line_count(0)
- truezen.narrow(first, last)
- end, { noremap = true })
-
- keymap("v", "<leader>zn", function()
- local first = vim.fn.line("v")
- local last = vim.fn.line(".")
- truezen.narrow(first, last)
- end, { noremap = true })
-
- keymap("n", "<leader>zf", truezen.focus, { noremap = true })
- keymap("n", "<leader>zm", truezen.minimalist, { noremap = true })
- keymap("n", "<leader>za", truezen.ataraxis, { noremap = true })
-end
-
-- lsp
vim.diagnostic.config({
update_in_insert = false,
@@ -222,10 +242,13 @@ vim.diagnostic.config({
virtual_text = true,
})
-keymap("n", "[d", vim.diagnostic.goto_prev, { desc = "diagnostic prev" })
-keymap("n", "]d", vim.diagnostic.goto_next, { desc = "diagnostic next" })
+keymap("n", "[d", function() vim.diagnostic.jump({ count = -1 }) end, { desc = "diagnostic prev" })
+keymap("n", "]d", function() vim.diagnostic.jump({ count = 1 }) end, { desc = "diagnostic next" })
keymap("n", "<leader>e", vim.diagnostic.open_float, { desc = "diagnostic float" })
+keymap("n", "<C-k><C-i>", vim.diagnostic.open_float, { desc = "diagnostic float" })
keymap("n", "<leader>q", vim.diagnostic.setloclist, { desc = "diagnostic list" })
+keymap("n", "<S-A-m>", vim.diagnostic.setloclist, { desc = "diagnostic list" })
+
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("user-lsp-attach", { clear = true }),
@@ -243,6 +266,7 @@ vim.api.nvim_create_autocmd("LspAttach", {
map("grd", vim.lsp.buf.definition, "definition")
map("grt", vim.lsp.buf.type_definition, "type definition")
map("K", vim.lsp.buf.hover, "hover")
+ map("<leader>F", function() vim.lsp.buf.format({ async = true }) end, "format", { "n", "x" })
local client = vim.lsp.get_client_by_id(event.data.client_id)
if client and client:supports_method("textDocument/documentHighlight", event.buf) then
@@ -279,6 +303,7 @@ local ok_tools, mason_tool_installer = pcall(require, "mason-tool-installer")
-- put lsp servers here to ensure they are installed and configured
local servers = {
bashls = {},
+ clangd = {},
dockerls = {},
docker_compose_language_service = {},
html = {},
@@ -320,3 +345,37 @@ for server_name, server_config in pairs(servers) do
vim.lsp.config(server_name, server_config)
vim.lsp.enable(server_name)
end
+
+-- completion
+vim.opt.completeopt = { "menu", "menuone", "noinsert" }
+
+local ok_cmp, cmp = pcall(require, "cmp")
+if ok_cmp then
+ cmp.setup({
+ mapping = cmp.mapping.preset.insert({
+ ["<Tab>"] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_next_item()
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+ ["<S-Tab>"] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_prev_item()
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+ ["<C-Space>"] = cmp.mapping.complete(),
+ ["<C-e>"] = cmp.mapping.abort(),
+ ["<CR>"] = cmp.mapping.confirm({ select = true }),
+ }),
+ sources = cmp.config.sources({
+ { name = "nvim_lsp" },
+ }, {
+ { name = "buffer" },
+ { name = "path" },
+ }),
+ })
+end