summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/user
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/user')
-rw-r--r--.config/nvim/lua/user/autocmds.lua22
-rw-r--r--.config/nvim/lua/user/init.lua0
-rw-r--r--.config/nvim/lua/user/keymaps.lua32
-rw-r--r--.config/nvim/lua/user/options.lua14
-rw-r--r--.config/nvim/lua/user/plugins/cmp.lua24
-rw-r--r--.config/nvim/lua/user/plugins/colorscheme.lua6
-rw-r--r--.config/nvim/lua/user/plugins/find-file.lua10
-rw-r--r--.config/nvim/lua/user/plugins/init.lua1
-rw-r--r--.config/nvim/lua/user/plugins/lspconfig.lua73
-rw-r--r--.config/nvim/lua/user/plugins/luadev.lua5
-rw-r--r--.config/nvim/lua/user/plugins/mini.lua7
-rw-r--r--.config/nvim/lua/user/plugins/trouble.lua5
12 files changed, 199 insertions, 0 deletions
diff --git a/.config/nvim/lua/user/autocmds.lua b/.config/nvim/lua/user/autocmds.lua
new file mode 100644
index 0000000..bff808a
--- /dev/null
+++ b/.config/nvim/lua/user/autocmds.lua
@@ -0,0 +1,22 @@
+-- Wrap and check for spell in text filetypes.
+vim.api.nvim_create_autocmd('FileType', {
+ group = vim.api.nvim_create_augroup('wrap_spell', { clear = true }),
+ pattern = { 'gitcommit', 'markdown' },
+ callback = function()
+ vim.opt_local.wrap = true
+ vim.opt_local.spell = true
+ end,
+})
+
+-- Go to last loc when opening a buffer.
+vim.api.nvim_create_autocmd('BufReadPost', {
+ group = vim.api.nvim_create_augroup('last_loc', { clear = true }),
+ callback = function()
+ local mark = vim.api.nvim_buf_get_mark(0, '"')
+ local lcount = vim.api.nvim_buf_line_count(0)
+ if mark[1] > 0 and mark[1] <= lcount then
+ -- Protected call to catch errors.
+ pcall(vim.api.nvim_win_set_cursor, 0, mark)
+ end
+ end,
+})
diff --git a/.config/nvim/lua/user/init.lua b/.config/nvim/lua/user/init.lua
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.config/nvim/lua/user/init.lua
diff --git a/.config/nvim/lua/user/keymaps.lua b/.config/nvim/lua/user/keymaps.lua
new file mode 100644
index 0000000..0a6d7f7
--- /dev/null
+++ b/.config/nvim/lua/user/keymaps.lua
@@ -0,0 +1,32 @@
+-- Remap for dealing with word wrap
+vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
+vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
+
+-- Move to window using the <C-hjkl> keys
+vim.keymap.set('n', '<C-h>', '<C-w>h', { desc = 'Switch to left window' })
+vim.keymap.set('n', '<C-j>', '<C-w>j', { desc = 'Switch to lower window' })
+vim.keymap.set('n', '<C-k>', '<C-w>k', { desc = 'Switch to upper window' })
+vim.keymap.set('n', '<C-l>', '<C-w>l', { desc = 'Switch to right window' })
+
+-- Quickfix list
+vim.keymap.set('n', '[q', vim.cmd.cprev, { desc = 'Previous quickfix item' })
+vim.keymap.set('n', ']q', vim.cmd.cnext, { desc = 'Next quickfix item' })
+
+-- Diagnostics
+vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to prev diagnostic message' })
+vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
+vim.keymap.set('n', 'gl', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
+vim.keymap.set('n', '<leader>q', vim.diagnostic.setqflist, { desc = 'Open diagnostic quickfix list' })
+
+-- Nagivation in insert
+vim.keymap.set('i', '<C-h>', '<Left>', { desc = "Forward char" })
+vim.keymap.set('i', '<C-j>', '<C-o>gj', { desc = "Up char" })
+vim.keymap.set('i', '<C-k>', '<C-o>gk', { desc = "Forward char" })
+vim.keymap.set('i', '<C-l>', '<Right>', { desc = "Forward char" })
+
+-- <C-g> to exit
+vim.keymap.set({'i', 'n', 'v', 'c'}, '<C-g>', '<Esc>', { desc = "Exit mode" })
+vim.cmd('cmap <C-g> <C-c>')
+
+-- C-d to delete
+vim.keymap.set('i', '<C-d>', '<Del>', { desc = "Delete forward char"})
diff --git a/.config/nvim/lua/user/options.lua b/.config/nvim/lua/user/options.lua
new file mode 100644
index 0000000..ef987ff
--- /dev/null
+++ b/.config/nvim/lua/user/options.lua
@@ -0,0 +1,14 @@
+vim.opt.tabstop = 4
+vim.opt.shiftwidth = 0
+vim.opt.expandtab = false
+
+vim.opt.shortmess:append { s = true, I = true }
+
+vim.g.mapleader = ' '
+vim.g.maplocalleader = '\\'
+
+vim.opt.signcolumn="yes"
+
+vim.diagnostic.config({
+ virtual_text = true
+})
diff --git a/.config/nvim/lua/user/plugins/cmp.lua b/.config/nvim/lua/user/plugins/cmp.lua
new file mode 100644
index 0000000..8776310
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/cmp.lua
@@ -0,0 +1,24 @@
+return {
+ 'hrsh7th/nvim-cmp',
+ event = { 'InsertEnter', 'CmdlineEnter' },
+ dependencies = {
+ 'hrsh7th/cmp-buffer',
+ 'hrsh7th/cmp-cmdline',
+ 'hrsh7th/cmp-path',
+ },
+ opts = function()
+ local cmp = require('cmp')
+
+ return {
+ mapping = cmp.mapping.preset.insert(),
+ sources = cmp.config.sources({
+ { name = 'nvim_lsp' },
+ }, {
+ { name = 'buffer' },
+ }, {
+ { name = 'path' },
+ })
+ }
+ end,
+}
+
diff --git a/.config/nvim/lua/user/plugins/colorscheme.lua b/.config/nvim/lua/user/plugins/colorscheme.lua
new file mode 100644
index 0000000..7862f25
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/colorscheme.lua
@@ -0,0 +1,6 @@
+return {
+ "Mofiqul/dracula.nvim",
+ config = function ()
+ vim.cmd[[colorscheme dracula]]
+ end
+}
diff --git a/.config/nvim/lua/user/plugins/find-file.lua b/.config/nvim/lua/user/plugins/find-file.lua
new file mode 100644
index 0000000..b547d10
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/find-file.lua
@@ -0,0 +1,10 @@
+return {
+ "NAHTAIV3L/vertico.nvim",
+ dependencies = {
+ 'nvim-lua/plenary.nvim',
+ },
+ config = function ()
+ vim.keymap.set("n", "<leader>f", require("vertico").find_file)
+ vim.keymap.set("n", "<C-g>", require("vertico").close)
+ end
+}
diff --git a/.config/nvim/lua/user/plugins/init.lua b/.config/nvim/lua/user/plugins/init.lua
new file mode 100644
index 0000000..a564707
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/init.lua
@@ -0,0 +1 @@
+return {}
diff --git a/.config/nvim/lua/user/plugins/lspconfig.lua b/.config/nvim/lua/user/plugins/lspconfig.lua
new file mode 100644
index 0000000..371fdec
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/lspconfig.lua
@@ -0,0 +1,73 @@
+local on_attach = function(client, bufnr)
+ local keymap = function(mode, keys, func, opts)
+ opts.buffer = bufnr
+ vim.keymap.set(mode, keys, func, opts)
+ end
+
+ keymap('n', 'gd', vim.lsp.buf.definition, { desc = 'Go to definition' })
+ keymap('n', 'gD', vim.lsp.buf.declaration, { desc = 'Go to declaration' })
+ keymap('n', 'gI', vim.lsp.buf.implementation, { desc = 'Go to implementation' })
+ keymap('n', 'gy', vim.lsp.buf.type_definition, { desc = 'Go to type definition' })
+ keymap('n', 'gr', vim.lsp.buf.references, { desc = 'List references' })
+
+ keymap('n', '<leader>ds', vim.lsp.buf.document_symbol, { desc = 'List document symbols' })
+ keymap('n', '<leader>ws', vim.lsp.buf.workspace_symbol, { desc = 'List workspace symbols' })
+
+ keymap('n', 'K', vim.lsp.buf.hover, { desc = 'Show documentation' })
+ keymap('n', 'gK', vim.lsp.buf.signature_help, { desc = 'Show signature' })
+ keymap('i', '<C-k>', vim.lsp.buf.signature_help, { desc = 'Show signature' })
+
+ keymap('n', '<leader>rn', vim.lsp.buf.rename, { desc = 'Rename symbol' })
+ keymap('n', '<leader>ca', vim.lsp.buf.code_action, { desc = 'Code action' })
+
+ keymap('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, { desc = 'Add workspace folder' })
+ keymap('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, { desc = 'Remove workspace folder' })
+ keymap(
+ 'n',
+ '<leader>wl',
+ function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end,
+ { desc = 'List workspace folders' }
+ )
+end
+
+return {
+ 'neovim/nvim-lspconfig',
+ dependencies = {
+ "hrsh7th/cmp-nvim-lsp",
+ },
+ ft = { 'lua', 'zig' },
+ opts = {
+ servers = {
+ lua_ls = {
+ settings = {
+ Lua = {
+ workspace = { checkThirdParty = false },
+ telemetry = { enable = false },
+ },
+ },
+ },
+ zls = {
+ settings = {},
+ },
+ },
+ },
+ config = function(_, opts)
+ local lspconfig = require('lspconfig');
+ local capabilities = require('cmp_nvim_lsp').default_capabilities()
+
+ for name, conf in pairs(opts.servers) do
+ lspconfig[name].setup {
+ capabilities = capabilities,
+ settings = conf.settings,
+ on_attach = function(client, bufnr)
+ local _, err = pcall(on_attach, client, bufnr)
+ if err then
+ vim.notify('[on_attach] error: ' .. err, vim.log.levels.ERROR)
+ else
+ vim.notify('[on_attach] ' .. client.name .. ' attached to buffer ' .. bufnr, vim.log.levels.INFO)
+ end
+ end,
+ }
+ end
+ end
+}
diff --git a/.config/nvim/lua/user/plugins/luadev.lua b/.config/nvim/lua/user/plugins/luadev.lua
new file mode 100644
index 0000000..7011f66
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/luadev.lua
@@ -0,0 +1,5 @@
+return {
+ "folke/lazydev.nvim",
+ ft = "lua",
+ config = true,
+}
diff --git a/.config/nvim/lua/user/plugins/mini.lua b/.config/nvim/lua/user/plugins/mini.lua
new file mode 100644
index 0000000..879c14d
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/mini.lua
@@ -0,0 +1,7 @@
+return {
+ {
+ 'echasnovski/mini.pairs',
+ event = 'InsertEnter',
+ config = true,
+ },
+}
diff --git a/.config/nvim/lua/user/plugins/trouble.lua b/.config/nvim/lua/user/plugins/trouble.lua
new file mode 100644
index 0000000..1e81a92
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/trouble.lua
@@ -0,0 +1,5 @@
+return {
+ "folke/trouble.nvim",
+ config = true,
+ cmd = "Trouble"
+}