diff --git a/.config/nvim/.gitignore b/.config/nvim/.gitignore deleted file mode 100644 index fca6e4f..0000000 --- a/.config/nvim/.gitignore +++ /dev/null @@ -1,44 +0,0 @@ -# Compiled Lua sources -luac.out - - -# luarocks build files -*.src.rock -*.zip -*.tar.gz - -# Object files -*.o -*.os -*.ko -*.obj -*.elf - -# Precompiled Headers -*.gch -*.pch - -# Libraries -*.lib -*.a -*.la -*.lo -*.def -*.exp - -# Shared objects (inc. Windows DLLs) -*.dll -*.so -*.so.* -*.dylib - -# Executables -*.exe -*.out -*.app -*.i*86 -*.x86_64 -*.hex - - -plugin/packer_compiled.lua diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json index 61134fe..38f8dcf 100644 --- a/.config/nvim/lazy-lock.json +++ b/.config/nvim/lazy-lock.json @@ -1,43 +1,46 @@ { "Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" }, - "LuaSnip": { "branch": "master", "commit": "480b032f6708573334f4437d3f83307d143f1a72" }, - "alpha-nvim": { "branch": "main", "commit": "234822140b265ec4ba3203e3e0be0e0bb826dff5" }, - "auto-session": { "branch": "main", "commit": "3eb26b949e1b90798e84926848551046e2eb0721" }, - "bufferline.nvim": { "branch": "main", "commit": "6ecd37e0fa8b156099daedd2191130e083fb1490" }, + "LuaSnip": { "branch": "master", "commit": "8ae1dedd988eb56441b7858bd1e8554dfadaa46d" }, + "alpha-nvim": { "branch": "main", "commit": "41283fb402713fc8b327e60907f74e46166f4cfd" }, + "auto-session": { "branch": "main", "commit": "64dc86e43c85f0062baafb0b607a6162efc99c91" }, + "bufferline.nvim": { "branch": "main", "commit": "64e2c5def50dfd6b6f14d96a45fa3d815a4a1eef" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" }, - "conform.nvim": { "branch": "master", "commit": "3f8927532bc8ce4fc4b5b75eab1bf8f1fc83f6b9" }, - "dressing.nvim": { "branch": "master", "commit": "73a7d54b5289000108c7f52402a36cf380fced67" }, - "friendly-snippets": { "branch": "main", "commit": "0368bee1cecaf3c58d436524234baad4c0e0b8cb" }, - "gitsigns.nvim": { "branch": "main", "commit": "bdeba1cec3faddd89146690c10b9a87949c0ee66" }, - "harpoon": { "branch": "master", "commit": "21f4c47c6803d64ddb934a5b314dcb1b8e7365dc" }, - "lazy.nvim": { "branch": "main", "commit": "6a2c47e6424a3f1e373bfeb714b716f6be13501c" }, - "lspkind.nvim": { "branch": "master", "commit": "57610d5ab560c073c465d6faf0c19f200cb67e6e" }, - "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "81e30dd629de24cbb26d08073ee938ab40006695" }, - "mason-tool-installer.nvim": { "branch": "main", "commit": "83dcddb6477f9ba5db98971ef27bd18bdca921b4" }, - "mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" }, - "nvim-autopairs": { "branch": "master", "commit": "de4f7138a68d5d5063170f2182fd27faf06b0b54" }, - "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" }, - "nvim-colorizer.lua": { "branch": "master", "commit": "dde3084106a70b9a79d48f426f6d6fec6fd203f7" }, - "nvim-lint": { "branch": "master", "commit": "67f74e630a84ecfa73a82783c487bdedd8cecdc3" }, - "nvim-lsp-file-operations": { "branch": "master", "commit": "0ae13ac58136c6175638b6e1ba04cb487dd22272" }, - "nvim-lspconfig": { "branch": "master", "commit": "50fcf96ec5a6e7bfdcbbea4f905c33e85408f170" }, - "nvim-surround": { "branch": "main", "commit": "0d6882635817a2677749a330127d12ac30a4f3c8" }, - "nvim-tree.lua": { "branch": "master", "commit": "934469b9b6df369e198fb3016969e56393b0dc07" }, - "nvim-treesitter": { "branch": "master", "commit": "dd4e2dbc002dfce109d621e8bdcd9d89438b0a32" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" }, - "nvim-ts-autotag": { "branch": "main", "commit": "6be1192965df35f94b8ea6d323354f7dc7a557e4" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "95e9ba9de4289d221666b66fd930d157c7ca08c6" }, - "nvim-web-devicons": { "branch": "master", "commit": "45d0237c427baba8cd05e0ab26d30e2ee58c2c82" }, - "plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" }, - "telescope.nvim": { "branch": "0.1.x", "commit": "54930e1abfc94409e1bb9266e752ef8379008592" }, - "tokyonight.nvim": { "branch": "main", "commit": "e89caa3ad6d8da9d0dd981ec74a82c55adc61ffd" }, - "vim-ReplaceWithRegister": { "branch": "master", "commit": "aad1e8fa31cb4722f20fe40679caa56e25120032" }, + "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, + "conform.nvim": { "branch": "master", "commit": "9d5ba06d6ee7418c674f498634617416d15b6239" }, + "dressing.nvim": { "branch": "master", "commit": "18e5beb3845f085b6a33c24112b37988f3f93c06" }, + "friendly-snippets": { "branch": "main", "commit": "ea068f1becd91bcd4591fceb6420d4335e2e14d3" }, + "gitsigns.nvim": { "branch": "main", "commit": "a4db718c78bff65198e3b63f1043f1e7bb5e05c8" }, + "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" }, + "lazy.nvim": { "branch": "main", "commit": "bef521ac89c8d423f9d092e37b58e8af0c099309" }, + "lazygit.nvim": { "branch": "main", "commit": "0ada6c6e7e138df92f5009b6952f4ac41248305a" }, + "lspkind.nvim": { "branch": "master", "commit": "1735dd5a5054c1fb7feaf8e8658dbab925f4f0cf" }, + "lualine.nvim": { "branch": "master", "commit": "b5e8bb642138f787a2c1c5aedc2a78cb2cebbd67" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "9dfcf2036c223920826140f0151d929a43f9eceb" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "1212fb6082b7177dde17ea65e429e027835aeb40" }, + "mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" }, + "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" }, + "nvim-autopairs": { "branch": "master", "commit": "dbfc1c34bed415906395db8303c71039b3a3ffb4" }, + "nvim-cmp": { "branch": "main", "commit": "ce16de5665c766f39c271705b17fff06f7bcb84f" }, + "nvim-lint": { "branch": "master", "commit": "6670b3ac73fa4caf720f017b91c619e9424d955e" }, + "nvim-lsp-file-operations": { "branch": "master", "commit": "223aca86b737dc66e9c51ebcda8788a8d9cc6cf2" }, + "nvim-lspconfig": { "branch": "master", "commit": "f4619ab31fc4676001ea05ae8200846e6e7700c7" }, + "nvim-surround": { "branch": "main", "commit": "d47001f8ddf9646c24f16d2732d4d0255acd2121" }, + "nvim-tree.lua": { "branch": "master", "commit": "d8d3a1590a05b2d8b5eb26e2ed1c6052b1b47a77" }, + "nvim-treesitter": { "branch": "master", "commit": "54cf9180a36299265e217858e6e531245074c3f4" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "45f90966a53a4e1bac374fe9aac530b7b5925c76" }, + "nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" }, + "nvim-ts-context-commentstring": { "branch": "main", "commit": "734ebad31c81c6198dfe102aa23280937c937c42" }, + "nvim-web-devicons": { "branch": "master", "commit": "3ee60deaa539360518eaab93a6c701fe9f4d82ef" }, + "plenary.nvim": { "branch": "master", "commit": "8aad4396840be7fc42896e3011751b7609ca4119" }, + "substitute.nvim": { "branch": "main", "commit": "17ffaeb5a1dc2dbef39cf0865d8a4b6000836714" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" }, + "telescope.nvim": { "branch": "0.1.x", "commit": "6312868392331c9c0f22725041f1ec2bef57c751" }, + "todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" }, + "tokyonight.nvim": { "branch": "main", "commit": "9bf9ec53d5e87b025e2404069b71e7ebdc3a13e5" }, + "trouble.nvim": { "branch": "main", "commit": "b9cf677f20bb2faa2dacfa870b084e568dca9572" }, "vim-maximizer": { "branch": "master", "commit": "2e54952fe91e140a2e69f35f22131219fcd9c5f1" }, - "vim-tmux-navigator": { "branch": "master", "commit": "7db70e08ea03b3e4d91f63713d76134512e28d7e" }, - "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" } + "vim-tmux-navigator": { "branch": "master", "commit": "38b1d0402c4600543281dc85b3f51884205674b6" }, + "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" } } \ No newline at end of file diff --git a/.config/nvim/lua/josean/core/init.lua b/.config/nvim/lua/josean/core/init.lua index 93c91cd..e05b1aa 100644 --- a/.config/nvim/lua/josean/core/init.lua +++ b/.config/nvim/lua/josean/core/init.lua @@ -1,2 +1,2 @@ -require("josean.core.keymaps") require("josean.core.options") +require("josean.core.keymaps") diff --git a/.config/nvim/lua/josean/core/keymaps.lua b/.config/nvim/lua/josean/core/keymaps.lua index a77a946..b539291 100644 --- a/.config/nvim/lua/josean/core/keymaps.lua +++ b/.config/nvim/lua/josean/core/keymaps.lua @@ -1,20 +1,11 @@ --- set leader key to space vim.g.mapleader = " " local keymap = vim.keymap -- for conciseness ---------------------- --- General Keymaps ------------------- - --- use jk to exit insert mode keymap.set("i", "jk", "", { desc = "Exit insert mode with jk" }) --- clear search highlights keymap.set("n", "nh", ":nohl", { desc = "Clear search highlights" }) --- delete single character without copying into register --- keymap.set("n", "x", '"_x') - -- increment/decrement numbers keymap.set("n", "+", "", { desc = "Increment number" }) -- increment keymap.set("n", "-", "", { desc = "Decrement number" }) -- decrement diff --git a/.config/nvim/lua/josean/core/options.lua b/.config/nvim/lua/josean/core/options.lua index 1a0ea20..277db72 100644 --- a/.config/nvim/lua/josean/core/options.lua +++ b/.config/nvim/lua/josean/core/options.lua @@ -1,8 +1,9 @@ -local opt = vim.opt -- for conciseness +vim.cmd("let g:netrw_liststyle = 3") --- line numbers -opt.relativenumber = true -- show relative line numbers -opt.number = true -- shows absolute line number on cursor line (when relative number is on) +local opt = vim.opt + +opt.relativenumber = true +opt.number = true -- tabs & indentation opt.tabstop = 2 -- 2 spaces for tabs (prettier default) @@ -10,19 +11,15 @@ opt.shiftwidth = 2 -- 2 spaces for indent width opt.expandtab = true -- expand tab to spaces opt.autoindent = true -- copy indent from current line when starting new one --- line wrapping -opt.wrap = false -- disable line wrapping +opt.wrap = false -- search settings opt.ignorecase = true -- ignore case when searching opt.smartcase = true -- if you include mixed case in your search, assumes you want case-sensitive --- cursor line -opt.cursorline = true -- highlight the current cursor line +opt.cursorline = true --- appearance - --- turn on termguicolors for nightfly colorscheme to work +-- turn on termguicolors for tokyonight colorscheme to work -- (have to use iterm2 or any other true color terminal) opt.termguicolors = true opt.background = "dark" -- colorschemes that can be light or dark will be made dark diff --git a/.config/nvim/lua/josean/lazy.lua b/.config/nvim/lua/josean/lazy.lua index 8ee7057..1dc520f 100644 --- a/.config/nvim/lua/josean/lazy.lua +++ b/.config/nvim/lua/josean/lazy.lua @@ -12,9 +12,6 @@ end vim.opt.rtp:prepend(lazypath) require("lazy").setup({ { import = "josean.plugins" }, { import = "josean.plugins.lsp" } }, { - install = { - colorscheme = { "nightfly" }, - }, checker = { enabled = true, notify = false, diff --git a/.config/nvim/lua/josean/plugins/alpha-nvim.lua b/.config/nvim/lua/josean/plugins/alpha.lua similarity index 97% rename from .config/nvim/lua/josean/plugins/alpha-nvim.lua rename to .config/nvim/lua/josean/plugins/alpha.lua index 209b776..c912f49 100644 --- a/.config/nvim/lua/josean/plugins/alpha-nvim.lua +++ b/.config/nvim/lua/josean/plugins/alpha.lua @@ -1,7 +1,6 @@ return { "goolord/alpha-nvim", event = "VimEnter", - dependencies = { "nvim-tree/nvim-web-devicons" }, config = function() local alpha = require("alpha") local dashboard = require("alpha.themes.dashboard") diff --git a/.config/nvim/lua/josean/plugins/nvim-autopairs.lua b/.config/nvim/lua/josean/plugins/autopairs.lua similarity index 99% rename from .config/nvim/lua/josean/plugins/nvim-autopairs.lua rename to .config/nvim/lua/josean/plugins/autopairs.lua index 8ee54b3..e22b7db 100644 --- a/.config/nvim/lua/josean/plugins/nvim-autopairs.lua +++ b/.config/nvim/lua/josean/plugins/autopairs.lua @@ -28,3 +28,4 @@ return { cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) end, } + diff --git a/.config/nvim/lua/josean/plugins/colorizer.lua b/.config/nvim/lua/josean/plugins/colorizer.lua deleted file mode 100644 index a65b5cc..0000000 --- a/.config/nvim/lua/josean/plugins/colorizer.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - "NvChad/nvim-colorizer.lua", - event = { "BufReadPre", "BufNewFile" }, - config = true, -} diff --git a/.config/nvim/lua/josean/plugins/colorscheme.lua b/.config/nvim/lua/josean/plugins/colorscheme.lua index 3b0204c..a9446cd 100644 --- a/.config/nvim/lua/josean/plugins/colorscheme.lua +++ b/.config/nvim/lua/josean/plugins/colorscheme.lua @@ -1,48 +1,38 @@ return { - { - "bluz71/vim-nightfly-guicolors", - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme nightfly]]) - end, - }, - -- { - -- "folke/tokyonight.nvim", - -- priority = 1000, -- make sure to load this before all the other start plugins - -- config = function() - -- local bg = "#011628" - -- local bg_dark = "#011423" - -- local bg_highlight = "#143652" - -- local bg_search = "#0A64AC" - -- local bg_visual = "#275378" - -- local fg = "#CBE0F0" - -- local fg_dark = "#B4D0E9" - -- local fg_gutter = "#627E97" - -- local border = "#547998" - -- - -- require("tokyonight").setup({ - -- style = "night", - -- on_colors = function(colors) - -- colors.bg = bg - -- colors.bg_dark = bg_dark - -- colors.bg_float = bg_dark - -- colors.bg_highlight = bg_highlight - -- colors.bg_popup = bg_dark - -- colors.bg_search = bg_search - -- colors.bg_sidebar = bg_dark - -- colors.bg_statusline = bg_dark - -- colors.bg_visual = bg_visual - -- colors.border = border - -- colors.fg = fg - -- colors.fg_dark = fg_dark - -- colors.fg_float = fg - -- colors.fg_gutter = fg_gutter - -- colors.fg_sidebar = fg_dark - -- end, - -- }) - -- -- load the colorscheme here - -- vim.cmd([[colorscheme tokyonight]]) - -- end, - -- }, + "folke/tokyonight.nvim", + priority = 1000, + config = function() + local bg = "#011628" + local bg_dark = "#011423" + local bg_highlight = "#143652" + local bg_search = "#0A64AC" + local bg_visual = "#275378" + local fg = "#CBE0F0" + local fg_dark = "#B4D0E9" + local fg_gutter = "#627E97" + local border = "#547998" + + require("tokyonight").setup({ + style = "night", + on_colors = function(colors) + colors.bg = bg + colors.bg_dark = bg_dark + colors.bg_float = bg_dark + colors.bg_highlight = bg_highlight + colors.bg_popup = bg_dark + colors.bg_search = bg_search + colors.bg_sidebar = bg_dark + colors.bg_statusline = bg_dark + colors.bg_visual = bg_visual + colors.border = border + colors.fg = fg + colors.fg_dark = fg_dark + colors.fg_float = fg + colors.fg_gutter = fg_gutter + colors.fg_sidebar = fg_dark + end + }) + + vim.cmd("colorscheme tokyonight") + end } diff --git a/.config/nvim/lua/josean/plugins/comment.lua b/.config/nvim/lua/josean/plugins/comment.lua index 8f5f9fc..ecc93c4 100644 --- a/.config/nvim/lua/josean/plugins/comment.lua +++ b/.config/nvim/lua/josean/plugins/comment.lua @@ -12,7 +12,7 @@ return { -- enable comment comment.setup({ - -- for commenting tsx and jsx files + -- for commenting tsx, jsx, svelte, html files pre_hook = ts_context_commentstring.create_pre_hook(), }) end, diff --git a/.config/nvim/lua/josean/plugins/formatting.lua b/.config/nvim/lua/josean/plugins/formatting.lua index 05a9a81..074c931 100644 --- a/.config/nvim/lua/josean/plugins/formatting.lua +++ b/.config/nvim/lua/josean/plugins/formatting.lua @@ -1,7 +1,6 @@ return { "stevearc/conform.nvim", - lazy = true, - event = { "BufReadPre", "BufNewFile" }, -- to disable, comment this out + event = { "BufReadPre", "BufNewFile" }, config = function() local conform = require("conform") @@ -18,6 +17,7 @@ return { yaml = { "prettier" }, markdown = { "prettier" }, graphql = { "prettier" }, + liquid = { "prettier" }, lua = { "stylua" }, python = { "isort", "black" }, }, diff --git a/.config/nvim/lua/josean/plugins/gitsigns.lua b/.config/nvim/lua/josean/plugins/gitsigns.lua index eaf7ae7..7daca01 100644 --- a/.config/nvim/lua/josean/plugins/gitsigns.lua +++ b/.config/nvim/lua/josean/plugins/gitsigns.lua @@ -1,5 +1,47 @@ return { "lewis6991/gitsigns.nvim", event = { "BufReadPre", "BufNewFile" }, - config = true, + opts = { + on_attach = function(bufnr) + local gs = package.loaded.gitsigns + + local function map(mode, l, r, desc) + vim.keymap.set(mode, l, r, { buffer = bufnr, desc = desc }) + end + + -- Navigation + map("n", "]h", gs.next_hunk, "Next Hunk") + map("n", "[h", gs.prev_hunk, "Prev Hunk") + + -- Actions + map("n", "hs", gs.stage_hunk, "Stage hunk") + map("n", "hr", gs.reset_hunk, "Reset hunk") + map("v", "hs", function() + gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) + end, "Stage hunk") + map("v", "hr", function() + gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) + end, "Reset hunk") + + map("n", "hS", gs.stage_buffer, "Stage buffer") + map("n", "hR", gs.reset_buffer, "Reset buffer") + + map("n", "hu", gs.undo_stage_hunk, "Undo stage hunk") + + map("n", "hp", gs.preview_hunk, "Preview hunk") + + map("n", "hb", function() + gs.blame_line({ full = true }) + end, "Blame line") + map("n", "hB", gs.toggle_current_line_blame, "Toggle line blame") + + map("n", "hd", gs.diffthis, "Diff this") + map("n", "hD", function() + gs.diffthis("~") + end, "Diff this ~") + + -- Text object + map({ "o", "x" }, "ih", ":Gitsigns select_hunk", "Gitsigns select hunk") + end, + }, } diff --git a/.config/nvim/lua/josean/plugins/harpoon.lua b/.config/nvim/lua/josean/plugins/harpoon.lua deleted file mode 100644 index 1b2d467..0000000 --- a/.config/nvim/lua/josean/plugins/harpoon.lua +++ /dev/null @@ -1,24 +0,0 @@ -return { - "ThePrimeagen/harpoon", - dependencies = { - "nvim-lua/plenary.nvim", - }, - config = function() - -- set keymaps - local keymap = vim.keymap -- for conciseness - - keymap.set( - "n", - "hm", - "lua require('harpoon.mark').add_file()", - { desc = "Mark file with harpoon" } - ) - keymap.set("n", "hn", "lua require('harpoon.ui').nav_next()", { desc = "Go to next harpoon mark" }) - keymap.set( - "n", - "hp", - "lua require('harpoon.ui').nav_prev()", - { desc = "Go to previous harpoon mark" } - ) - end, -} diff --git a/.config/nvim/lua/josean/plugins/indent-blankline.lua b/.config/nvim/lua/josean/plugins/indent-blankline.lua new file mode 100644 index 0000000..572e0bd --- /dev/null +++ b/.config/nvim/lua/josean/plugins/indent-blankline.lua @@ -0,0 +1,8 @@ +return { + "lukas-reineke/indent-blankline.nvim", + event = { "BufReadPre", "BufNewFile" }, + main = "ibl", + opts = { + indent = { char = "┊" }, + }, +} diff --git a/.config/nvim/lua/josean/plugins/init.lua b/.config/nvim/lua/josean/plugins/init.lua index eb9e525..a885d95 100644 --- a/.config/nvim/lua/josean/plugins/init.lua +++ b/.config/nvim/lua/josean/plugins/init.lua @@ -1,7 +1,4 @@ return { "nvim-lua/plenary.nvim", -- lua functions that many plugins use - "christoomey/vim-tmux-navigator", -- tmux & split window navigation - - "inkarkat/vim-ReplaceWithRegister", -- replace with register contents using motion (gr + motion) } diff --git a/.config/nvim/lua/josean/plugins/lazygit.lua b/.config/nvim/lua/josean/plugins/lazygit.lua new file mode 100644 index 0000000..5d3f334 --- /dev/null +++ b/.config/nvim/lua/josean/plugins/lazygit.lua @@ -0,0 +1,19 @@ +return { + "kdheepak/lazygit.nvim", + cmd = { + "LazyGit", + "LazyGitConfig", + "LazyGitCurrentFile", + "LazyGitFilter", + "LazyGitFilterCurrentFile", + }, + -- optional for floating window border decoration + dependencies = { + "nvim-lua/plenary.nvim", + }, + -- setting the keybinding for LazyGit with 'keys' is recommended in + -- order to load the plugin when the command is run for the first time + keys = { + { "lg", "LazyGit", desc = "Open lazy git" }, + }, +} diff --git a/.config/nvim/lua/josean/plugins/linting.lua b/.config/nvim/lua/josean/plugins/linting.lua index 782b3c5..e9fea9b 100644 --- a/.config/nvim/lua/josean/plugins/linting.lua +++ b/.config/nvim/lua/josean/plugins/linting.lua @@ -1,7 +1,6 @@ return { "mfussenegger/nvim-lint", - lazy = true, - event = { "BufReadPre", "BufNewFile" }, -- to disable, comment this out + event = { "BufReadPre", "BufNewFile" }, config = function() local lint = require("lint") diff --git a/.config/nvim/lua/josean/plugins/lsp/lspconfig.lua b/.config/nvim/lua/josean/plugins/lsp/lspconfig.lua index 618a0ab..00da4bf 100644 --- a/.config/nvim/lua/josean/plugins/lsp/lspconfig.lua +++ b/.config/nvim/lua/josean/plugins/lsp/lspconfig.lua @@ -4,60 +4,68 @@ return { dependencies = { "hrsh7th/cmp-nvim-lsp", { "antosha417/nvim-lsp-file-operations", config = true }, + { "folke/neodev.nvim", opts = {} }, }, config = function() -- import lspconfig plugin local lspconfig = require("lspconfig") + -- import mason_lspconfig plugin + local mason_lspconfig = require("mason-lspconfig") + -- import cmp-nvim-lsp plugin local cmp_nvim_lsp = require("cmp_nvim_lsp") local keymap = vim.keymap -- for conciseness - local opts = { noremap = true, silent = true } - local on_attach = function(client, bufnr) - opts.buffer = bufnr + vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("UserLspConfig", {}), + callback = function(ev) + -- Buffer local mappings. + -- See `:help vim.lsp.*` for documentation on any of the below functions + local opts = { buffer = ev.buf, silent = true } - -- set keybinds - opts.desc = "Show LSP references" - keymap.set("n", "gR", "Telescope lsp_references", opts) -- show definition, references + -- set keybinds + opts.desc = "Show LSP references" + keymap.set("n", "gR", "Telescope lsp_references", opts) -- show definition, references - opts.desc = "Go to declaration" - keymap.set("n", "gD", vim.lsp.buf.declaration, opts) -- go to declaration + opts.desc = "Go to declaration" + keymap.set("n", "gD", vim.lsp.buf.declaration, opts) -- go to declaration - opts.desc = "Show LSP definitions" - keymap.set("n", "gd", "Telescope lsp_definitions", opts) -- show lsp definitions + opts.desc = "Show LSP definitions" + keymap.set("n", "gd", "Telescope lsp_definitions", opts) -- show lsp definitions - opts.desc = "Show LSP implementations" - keymap.set("n", "gi", "Telescope lsp_implementations", opts) -- show lsp implementations + opts.desc = "Show LSP implementations" + keymap.set("n", "gi", "Telescope lsp_implementations", opts) -- show lsp implementations - opts.desc = "Show LSP type definitions" - keymap.set("n", "gt", "Telescope lsp_type_definitions", opts) -- show lsp type definitions + opts.desc = "Show LSP type definitions" + keymap.set("n", "gt", "Telescope lsp_type_definitions", opts) -- show lsp type definitions - opts.desc = "See available code actions" - keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection + opts.desc = "See available code actions" + keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection - opts.desc = "Smart rename" - keymap.set("n", "rn", vim.lsp.buf.rename, opts) -- smart rename + opts.desc = "Smart rename" + keymap.set("n", "rn", vim.lsp.buf.rename, opts) -- smart rename - opts.desc = "Show buffer diagnostics" - keymap.set("n", "D", "Telescope diagnostics bufnr=0", opts) -- show diagnostics for file + opts.desc = "Show buffer diagnostics" + keymap.set("n", "D", "Telescope diagnostics bufnr=0", opts) -- show diagnostics for file - opts.desc = "Show line diagnostics" - keymap.set("n", "d", vim.diagnostic.open_float, opts) -- show diagnostics for line + opts.desc = "Show line diagnostics" + keymap.set("n", "d", vim.diagnostic.open_float, opts) -- show diagnostics for line - opts.desc = "Go to previous diagnostic" - keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) -- jump to previous diagnostic in buffer + opts.desc = "Go to previous diagnostic" + keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) -- jump to previous diagnostic in buffer - opts.desc = "Go to next diagnostic" - keymap.set("n", "]d", vim.diagnostic.goto_next, opts) -- jump to next diagnostic in buffer + opts.desc = "Go to next diagnostic" + keymap.set("n", "]d", vim.diagnostic.goto_next, opts) -- jump to next diagnostic in buffer - opts.desc = "Show documentation for what is under cursor" - keymap.set("n", "K", vim.lsp.buf.hover, opts) -- show documentation for what is under cursor + opts.desc = "Show documentation for what is under cursor" + keymap.set("n", "K", vim.lsp.buf.hover, opts) -- show documentation for what is under cursor - opts.desc = "Restart LSP" - keymap.set("n", "rs", ":LspRestart", opts) -- mapping to restart lsp if necessary - end + opts.desc = "Restart LSP" + keymap.set("n", "rs", ":LspRestart", opts) -- mapping to restart lsp if necessary + end, + }) -- used to enable autocompletion (assign to every lsp server config) local capabilities = cmp_nvim_lsp.default_capabilities() @@ -70,92 +78,60 @@ return { vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) end - -- configure html server - lspconfig["html"].setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - -- configure typescript server with plugin - lspconfig["tsserver"].setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - -- configure css server - lspconfig["cssls"].setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - -- configure tailwindcss server - lspconfig["tailwindcss"].setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - -- configure svelte server - lspconfig["svelte"].setup({ - capabilities = capabilities, - on_attach = function(client, bufnr) - on_attach(client, bufnr) - - vim.api.nvim_create_autocmd("BufWritePost", { - pattern = { "*.js", "*.ts" }, - callback = function(ctx) - if client.name == "svelte" then - client.notify("$/onDidChangeTsOrJsFile", { uri = ctx.file }) - end + mason_lspconfig.setup_handlers({ + -- default handler for installed servers + function(server_name) + lspconfig[server_name].setup({ + capabilities = capabilities, + }) + end, + ["svelte"] = function() + -- configure svelte server + lspconfig["svelte"].setup({ + capabilities = capabilities, + on_attach = function(client, bufnr) + vim.api.nvim_create_autocmd("BufWritePost", { + pattern = { "*.js", "*.ts" }, + callback = function(ctx) + -- Here use ctx.match instead of ctx.file + client.notify("$/onDidChangeTsOrJsFile", { uri = ctx.match }) + end, + }) end, }) end, - }) - - -- configure prisma orm server - lspconfig["prismals"].setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - -- configure graphql language server - lspconfig["graphql"].setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { "graphql", "gql", "svelte", "typescriptreact", "javascriptreact" }, - }) - - -- configure emmet language server - lspconfig["emmet_ls"].setup({ - capabilities = capabilities, - on_attach = on_attach, - filetypes = { "html", "typescriptreact", "javascriptreact", "css", "sass", "scss", "less", "svelte" }, - }) - - -- configure python server - lspconfig["pyright"].setup({ - capabilities = capabilities, - on_attach = on_attach, - }) - - -- configure lua server (with special settings) - lspconfig["lua_ls"].setup({ - capabilities = capabilities, - on_attach = on_attach, - settings = { -- custom settings for lua - Lua = { - -- make the language server recognize "vim" global - diagnostics = { - globals = { "vim" }, - }, - workspace = { - -- make language server aware of runtime files - library = { - [vim.fn.expand("$VIMRUNTIME/lua")] = true, - [vim.fn.stdpath("config") .. "/lua"] = true, + ["graphql"] = function() + -- configure graphql language server + lspconfig["graphql"].setup({ + capabilities = capabilities, + filetypes = { "graphql", "gql", "svelte", "typescriptreact", "javascriptreact" }, + }) + end, + ["emmet_ls"] = function() + -- configure emmet language server + lspconfig["emmet_ls"].setup({ + capabilities = capabilities, + filetypes = { "html", "typescriptreact", "javascriptreact", "css", "sass", "scss", "less", "svelte" }, + }) + end, + ["lua_ls"] = function() + -- configure lua server (with special settings) + lspconfig["lua_ls"].setup({ + capabilities = capabilities, + settings = { + Lua = { + -- make the language server recognize "vim" global + diagnostics = { + globals = { "vim" }, + }, + completion = { + callSnippet = "Replace", + }, }, }, - }, - }, + }) + end, }) end, } + diff --git a/.config/nvim/lua/josean/plugins/lsp/mason.lua b/.config/nvim/lua/josean/plugins/lsp/mason.lua index cfe0d46..748229c 100644 --- a/.config/nvim/lua/josean/plugins/lsp/mason.lua +++ b/.config/nvim/lua/josean/plugins/lsp/mason.lua @@ -38,8 +38,6 @@ return { "prismals", "pyright", }, - -- auto-install configured servers (with lspconfig) - automatic_installation = true, -- not the same as ensure_installed }) mason_tool_installer.setup({ @@ -48,8 +46,8 @@ return { "stylua", -- lua formatter "isort", -- python formatter "black", -- python formatter - "pylint", -- python linter - "eslint_d", -- js linter + "pylint", + "eslint_d", }, }) end, diff --git a/.config/nvim/lua/josean/plugins/lsp/none-ls.lua b/.config/nvim/lua/josean/plugins/lsp/none-ls.lua deleted file mode 100644 index c4833f1..0000000 --- a/.config/nvim/lua/josean/plugins/lsp/none-ls.lua +++ /dev/null @@ -1,74 +0,0 @@ -return { - "nvimtools/none-ls.nvim", -- configure formatters & linters - lazy = true, - -- event = { "BufReadPre", "BufNewFile" }, -- to enable uncomment this - dependencies = { - "jay-babu/mason-null-ls.nvim", - }, - config = function() - local mason_null_ls = require("mason-null-ls") - - local null_ls = require("null-ls") - - local null_ls_utils = require("null-ls.utils") - - mason_null_ls.setup({ - ensure_installed = { - "prettier", -- prettier formatter - "stylua", -- lua formatter - "black", -- python formatter - "pylint", -- python linter - "eslint_d", -- js linter - }, - }) - - -- for conciseness - local formatting = null_ls.builtins.formatting -- to setup formatters - local diagnostics = null_ls.builtins.diagnostics -- to setup linters - - -- to setup format on save - local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) - - -- configure null_ls - null_ls.setup({ - -- add package.json as identifier for root (for typescript monorepos) - root_dir = null_ls_utils.root_pattern(".null-ls-root", "Makefile", ".git", "package.json"), - -- setup formatters & linters - sources = { - -- to disable file types use - -- "formatting.prettier.with({disabled_filetypes: {}})" (see null-ls docs) - formatting.prettier.with({ - extra_filetypes = { "svelte" }, - }), -- js/ts formatter - formatting.stylua, -- lua formatter - formatting.isort, - formatting.black, - diagnostics.pylint, - diagnostics.eslint_d.with({ -- js/ts linter - condition = function(utils) - return utils.root_has_file({ ".eslintrc.js", ".eslintrc.cjs" }) -- only enable if root has .eslintrc.js or .eslintrc.cjs - end, - }), - }, - -- configure format on save - on_attach = function(current_client, bufnr) - if current_client.supports_method("textDocument/formatting") then - vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) - vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup, - buffer = bufnr, - callback = function() - vim.lsp.buf.format({ - filter = function(client) - -- only use null-ls for formatting instead of lsp server - return client.name == "null-ls" - end, - bufnr = bufnr, - }) - end, - }) - end - end, - }) - end, -} diff --git a/.config/nvim/lua/josean/plugins/nvim-cmp.lua b/.config/nvim/lua/josean/plugins/nvim-cmp.lua index 35fe5bc..0947011 100644 --- a/.config/nvim/lua/josean/plugins/nvim-cmp.lua +++ b/.config/nvim/lua/josean/plugins/nvim-cmp.lua @@ -4,7 +4,13 @@ return { dependencies = { "hrsh7th/cmp-buffer", -- source for text in buffer "hrsh7th/cmp-path", -- source for file system paths - "L3MON4D3/LuaSnip", -- snippet engine + { + "L3MON4D3/LuaSnip", + -- follow latest release. + version = "v2.*", -- Replace by the latest released major (first number of latest release) + -- install jsregexp (optional!). + build = "make install_jsregexp", + }, "saadparwaiz1/cmp_luasnip", -- for autocompletion "rafamadriz/friendly-snippets", -- useful snippets "onsails/lspkind.nvim", -- vs-code like pictograms @@ -39,11 +45,12 @@ return { }), -- sources for autocompletion sources = cmp.config.sources({ - { name = "nvim_lsp" }, + { name = "nvim_lsp"}, { name = "luasnip" }, -- snippets { name = "buffer" }, -- text within current buffer { name = "path" }, -- file system paths }), + -- configure lspkind for vs-code like pictograms in completion menu formatting = { format = lspkind.cmp_format({ diff --git a/.config/nvim/lua/josean/plugins/nvim-tree.lua b/.config/nvim/lua/josean/plugins/nvim-tree.lua index d8c3cc8..9bc7864 100644 --- a/.config/nvim/lua/josean/plugins/nvim-tree.lua +++ b/.config/nvim/lua/josean/plugins/nvim-tree.lua @@ -1,6 +1,6 @@ return { "nvim-tree/nvim-tree.lua", - dependencies = { "nvim-tree/nvim-web-devicons" }, + dependencies = "nvim-tree/nvim-web-devicons", config = function() local nvimtree = require("nvim-tree") @@ -8,11 +8,6 @@ return { vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 - -- change color for arrows in tree to light blue - vim.cmd([[ highlight NvimTreeFolderArrowClosed guifg=#3FC5FF ]]) - vim.cmd([[ highlight NvimTreeFolderArrowOpen guifg=#3FC5FF ]]) - - -- configure nvim-tree nvimtree.setup({ view = { width = 35, @@ -57,5 +52,5 @@ return { keymap.set("n", "ef", "NvimTreeFindFileToggle", { desc = "Toggle file explorer on current file" }) -- toggle file explorer on current file keymap.set("n", "ec", "NvimTreeCollapse", { desc = "Collapse file explorer" }) -- collapse file explorer keymap.set("n", "er", "NvimTreeRefresh", { desc = "Refresh file explorer" }) -- refresh file explorer - end, + end } diff --git a/.config/nvim/lua/josean/plugins/nvim-treesitter.lua b/.config/nvim/lua/josean/plugins/nvim-treesitter.lua deleted file mode 100644 index cf02c6c..0000000 --- a/.config/nvim/lua/josean/plugins/nvim-treesitter.lua +++ /dev/null @@ -1,61 +0,0 @@ -return { - { - "nvim-treesitter/nvim-treesitter", - event = { "BufReadPre", "BufNewFile" }, - build = ":TSUpdate", - dependencies = { - "nvim-treesitter/nvim-treesitter-textobjects", - "windwp/nvim-ts-autotag", - }, - config = function() - -- import nvim-treesitter plugin - local treesitter = require("nvim-treesitter.configs") - - -- configure treesitter - treesitter.setup({ -- enable syntax highlighting - highlight = { - enable = true, - }, - -- enable indentation - indent = { enable = true }, - -- enable autotagging (w/ nvim-ts-autotag plugin) - autotag = { - enable = true, - }, - -- ensure these language parsers are installed - ensure_installed = { - "json", - "javascript", - "typescript", - "tsx", - "yaml", - "html", - "css", - "prisma", - "markdown", - "markdown_inline", - "svelte", - "graphql", - "bash", - "lua", - "vim", - "dockerfile", - "gitignore", - "query", - }, - incremental_selection = { - enable = true, - keymaps = { - init_selection = "", - node_incremental = "", - scope_incremental = false, - node_decremental = "", - }, - }, - }) - - -- enable nvim-ts-context-commentstring plugin for commenting tsx and jsx - require('ts_context_commentstring').setup {} - end, - }, -} diff --git a/.config/nvim/lua/josean/plugins/nvim-web-devicons.lua b/.config/nvim/lua/josean/plugins/nvim-web-devicons.lua deleted file mode 100644 index b214a59..0000000 --- a/.config/nvim/lua/josean/plugins/nvim-web-devicons.lua +++ /dev/null @@ -1,13 +0,0 @@ -return { - "nvim-tree/nvim-web-devicons", - config = function() - require("nvim-web-devicons").set_icon({ - gql = { - icon = "", - color = "#e535ab", - cterm_color = "199", - name = "GraphQL", - }, - }) - end, -} diff --git a/.config/nvim/lua/josean/plugins/substitute.lua b/.config/nvim/lua/josean/plugins/substitute.lua new file mode 100644 index 0000000..e952b65 --- /dev/null +++ b/.config/nvim/lua/josean/plugins/substitute.lua @@ -0,0 +1,17 @@ +return { + "gbprod/substitute.nvim", + event = { "BufReadPre", "BufNewFile" }, + config = function() + local substitute = require("substitute") + + substitute.setup() + + -- set keymaps + local keymap = vim.keymap -- for conciseness + + vim.keymap.set("n", "s", substitute.operator, { desc = "Substitute with motion" }) + vim.keymap.set("n", "ss", substitute.line, { desc = "Substitute line" }) + vim.keymap.set("n", "S", substitute.eol, { desc = "Substitute to end of line" }) + vim.keymap.set("x", "s", substitute.visual, { desc = "Substitute in visual mode" }) + end, +} diff --git a/.config/nvim/lua/josean/plugins/nvim-surround.lua b/.config/nvim/lua/josean/plugins/surround.lua similarity index 100% rename from .config/nvim/lua/josean/plugins/nvim-surround.lua rename to .config/nvim/lua/josean/plugins/surround.lua diff --git a/.config/nvim/lua/josean/plugins/telescope.lua b/.config/nvim/lua/josean/plugins/telescope.lua index c96b272..8970bcd 100644 --- a/.config/nvim/lua/josean/plugins/telescope.lua +++ b/.config/nvim/lua/josean/plugins/telescope.lua @@ -5,6 +5,7 @@ return { "nvim-lua/plenary.nvim", { "nvim-telescope/telescope-fzf-native.nvim", build = "make" }, "nvim-tree/nvim-web-devicons", + "folke/todo-comments.nvim", }, config = function() local telescope = require("telescope") @@ -12,7 +13,7 @@ return { telescope.setup({ defaults = { - path_display = { "truncate " }, + path_display = { "smart" }, mappings = { i = { [""] = actions.move_selection_previous, -- move to prev result @@ -32,5 +33,6 @@ return { keymap.set("n", "fr", "Telescope oldfiles", { desc = "Fuzzy find recent files" }) keymap.set("n", "fs", "Telescope live_grep", { desc = "Find string in cwd" }) keymap.set("n", "fc", "Telescope grep_string", { desc = "Find string under cursor in cwd" }) + keymap.set("n", "ft", "TodoTelescope", { desc = "Find todos" }) end, } diff --git a/.config/nvim/lua/josean/plugins/todo-comments.lua b/.config/nvim/lua/josean/plugins/todo-comments.lua new file mode 100644 index 0000000..f74baa9 --- /dev/null +++ b/.config/nvim/lua/josean/plugins/todo-comments.lua @@ -0,0 +1,21 @@ +return { + "folke/todo-comments.nvim", + event = { "BufReadPre", "BufNewFile" }, + dependencies = { "nvim-lua/plenary.nvim" }, + config = function() + local todo_comments = require("todo-comments") + + -- set keymaps + local keymap = vim.keymap -- for conciseness + + keymap.set("n", "]t", function() + todo_comments.jump_next() + end, { desc = "Next todo comment" }) + + keymap.set("n", "[t", function() + todo_comments.jump_prev() + end, { desc = "Previous todo comment" }) + + todo_comments.setup() + end, +} diff --git a/.config/nvim/lua/josean/plugins/treesitter.lua b/.config/nvim/lua/josean/plugins/treesitter.lua new file mode 100644 index 0000000..af5943b --- /dev/null +++ b/.config/nvim/lua/josean/plugins/treesitter.lua @@ -0,0 +1,57 @@ +return { + "nvim-treesitter/nvim-treesitter", + event = { "BufReadPre", "BufNewFile" }, + build = ":TSUpdate", + dependencies = { + "windwp/nvim-ts-autotag", + }, + config = function() + -- import nvim-treesitter plugin + local treesitter = require("nvim-treesitter.configs") + + -- configure treesitter + treesitter.setup({ -- enable syntax highlighting + highlight = { + enable = true, + }, + -- enable indentation + indent = { enable = true }, + -- enable autotagging (w/ nvim-ts-autotag plugin) + autotag = { + enable = true, + }, + -- ensure these language parsers are installed + ensure_installed = { + "json", + "javascript", + "typescript", + "tsx", + "yaml", + "html", + "css", + "prisma", + "markdown", + "markdown_inline", + "svelte", + "graphql", + "bash", + "lua", + "vim", + "dockerfile", + "gitignore", + "query", + "vimdoc", + "c", + }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = "", + node_incremental = "", + scope_incremental = false, + node_decremental = "", + }, + }, + }) + end, +} diff --git a/.config/nvim/lua/josean/plugins/trouble.lua b/.config/nvim/lua/josean/plugins/trouble.lua new file mode 100644 index 0000000..62e1527 --- /dev/null +++ b/.config/nvim/lua/josean/plugins/trouble.lua @@ -0,0 +1,12 @@ +return { + "folke/trouble.nvim", + dependencies = { "nvim-tree/nvim-web-devicons", "folke/todo-comments.nvim" }, + keys = { + { "xx", "TroubleToggle", desc = "Open/close trouble list" }, + { "xw", "TroubleToggle workspace_diagnostics", desc = "Open trouble workspace diagnostics" }, + { "xd", "TroubleToggle document_diagnostics", desc = "Open trouble document diagnostics" }, + { "xq", "TroubleToggle quickfix", desc = "Open trouble quickfix list" }, + { "xl", "TroubleToggle loclist", desc = "Open trouble location list" }, + { "xt", "TodoTrouble", desc = "Open todos in trouble" }, + }, +}