summaryrefslogtreecommitdiff
path: root/nvim/lua/config
diff options
context:
space:
mode:
Diffstat (limited to 'nvim/lua/config')
-rw-r--r--nvim/lua/config/keymaps.lua27
-rw-r--r--nvim/lua/config/lsp.lua6
-rw-r--r--nvim/lua/config/plugins/tree-sitter.lua40
-rw-r--r--nvim/lua/config/trailing-spaces.lua16
4 files changed, 71 insertions, 18 deletions
diff --git a/nvim/lua/config/keymaps.lua b/nvim/lua/config/keymaps.lua
new file mode 100644
index 0000000..de2c737
--- /dev/null
+++ b/nvim/lua/config/keymaps.lua
@@ -0,0 +1,27 @@
+
+vim.keymap.set('n', '<leader>c', '<C-w>c', { noremap = true, silent = true, desc = 'Close window' })
+vim.keymap.set('n', '<leader>o', '<C-w>o', { noremap = true, silent = true, desc = 'Close other windows' })
+
+-- z means laZy (plugin manager)
+vim.keymap.set('n', '<leader>z', ':Lazy<CR>', { noremap = true, silent = true, desc = 'Open Lazy.nvim' })
+
+-- LSP binds
+-- default gd searches only in current buffer as a keyword
+vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { noremap = true, silent = true, desc = 'Open definition' })
+
+-- Fugitive shortcuts
+vim.keymap.set('n', '<leader>gd', ':Gvdiffsplit<CR>', { noremap = true, silent = true, desc = 'Git diff (unstaged changes)' })
+vim.keymap.set('n', '<leader>gD', ':Gvdiffsplit HEAD<CR>', { noremap = true, silent = true, desc = 'Git diff (all changes after HEAD)' })
+vim.keymap.set('n', '<leader>gs', ':Git<CR>', { noremap = true, silent = true, desc = 'Git status' })
+vim.keymap.set('n', '<leader>gb', ':Git blame<CR>', { noremap = true, silent = true, desc = 'Git blame' })
+vim.keymap.set('n', '<leader>gl', ':Git log<CR>', { noremap = true, silent = true, desc = 'Git log' })
+vim.keymap.set('n', '<leader>gL', ':0Gclog<CR>', { noremap = true, silent = true, desc = 'Git log: this file' })
+vim.keymap.set('n', '<leader>ge', ':Gedit<CR>', { noremap = true, silent = true, desc = 'Git: return to worktree' })
+
+vim.keymap.set('n', '<leader>e', ':lua MiniFiles.open(vim.api.nvim_buf_get_name(0), false)<CR>', { noremap = true, silent = true, desc = 'File Explorer' })
+vim.keymap.set('n', '<leader>aa', ':argadd<CR>:argdedupe<CR>', { noremap = true, silent = true, desc = 'Add to args' })
+vim.keymap.set('n', '<leader>ad', ':argdelete %<CR>', { noremap = true, silent = true, desc = 'Delete from args' })
+vim.keymap.set('n', '<leader>lr', ':LspRestart<CR>', { noremap = true, silent = true, desc = 'LSP: restart' })
+vim.keymap.set('n', '<leader>lx', ':LspStop<CR>', { noremap = true, silent = true, desc = 'LSP: stop' })
+vim.keymap.set('n', '<leader>ll', ':LspStart<CR>', { noremap = true, silent = true, desc = 'LSP: start' })
+vim.keymap.set('n', '<leader>li', ':LspInfo<CR>', { noremap = true, silent = true, desc = 'LSP: info' })
diff --git a/nvim/lua/config/lsp.lua b/nvim/lua/config/lsp.lua
index b12b10d..6507c67 100644
--- a/nvim/lua/config/lsp.lua
+++ b/nvim/lua/config/lsp.lua
@@ -1,3 +1,9 @@
+-- LSP diagnostic info config (erorrs, warnings, etc.)
+vim.diagnostic.config({
+ -- use virtual text to show diagnostic messages
+ virtual_text = true,
+})
+
-- requires json language service - npm i -g vscode-langservers-extracted
vim.lsp.enable('jsonls')
vim.lsp.config('jsonls', {
diff --git a/nvim/lua/config/plugins/tree-sitter.lua b/nvim/lua/config/plugins/tree-sitter.lua
index d37f98b..a692c37 100644
--- a/nvim/lua/config/plugins/tree-sitter.lua
+++ b/nvim/lua/config/plugins/tree-sitter.lua
@@ -1,27 +1,31 @@
return {
{
"nvim-treesitter/nvim-treesitter",
- branch = 'master',
+ branch = 'main',
lazy = false,
build = ":TSUpdate",
config = function()
- require'nvim-treesitter.configs'.setup {
- -- A list of parser names, or "all" (the listed parsers MUST always be installed)
- ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "markdown", "markdown_inline" },
-
- -- Automatically install missing parsers when entering buffer
- -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
- auto_install = true,
-
- highlight = {
- enable = true,
- -- Setting this to true will run `:h syntax` and tree-sitter at the same time.
- -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
- -- Using this option may slow down your editor, and you may see some duplicate highlights.
- -- Instead of true it can also be a list of languages
- additional_vim_regex_highlighting = false,
- },
- }
+ require('nvim-treesitter').install {
+ "bash",
+ "c",
+ "css",
+ "gitignore",
+ "html",
+ "ini", -- .npmrc
+ "javascript",
+ "json",
+ "lua",
+ "lua",
+ "markdown",
+ "markdown_inline", -- code blocks inside .md
+ "query",
+ "scss",
+ "tsx",
+ "typescript",
+ "vim",
+ "vimdoc",
+ "yaml",
+ }
end
}
}
diff --git a/nvim/lua/config/trailing-spaces.lua b/nvim/lua/config/trailing-spaces.lua
new file mode 100644
index 0000000..2bb4cbf
--- /dev/null
+++ b/nvim/lua/config/trailing-spaces.lua
@@ -0,0 +1,16 @@
+-- highlights trailing spaces
+vim.cmd('match Search /\\s\\+$/')
+
+-- disable highlight when going into insert mode
+vim.api.nvim_create_autocmd({'ModeChanged'}, {
+ pattern = {'*:i'},
+ command = 'match none',
+})
+
+-- highlights trailing spaces when going back to normal mode
+vim.api.nvim_create_autocmd({'ModeChanged'}, {
+ pattern = {'*:n'},
+ command = 'match Search /\\s\\+$/',
+})
+
+vim.keymap.set('n', '<leader>t', ':%s/\\s\\+$//g<CR>', { noremap = true, silent = true, desc = 'Remove Trailing Whitespaces' })