27 Commits
Author SHA1 Message Date
Legrems 19c17b583b Merge branch 'v2.0' into p53 2024-04-03 16:12:53 +02:00
Legrems 8638342fa9 Add more git shortcut 2024-04-03 15:40:42 +02:00
Legrems a62a601e1f Add noice.lua 2024-03-27 14:39:55 +01:00
siduck 44a24e2fe5 update nvterm repo author 2024-03-19 06:27:33 +05:30
1a98a451ea fix: Better approach to check if the system is Windows before setting PATH (#2690)
* Better approach to check if the system is Windows

Now the check for Windows doesn't depend on luv's os_uname() function, which may have a different result if neovim was built on different compilers (MSVC, MinGW, etc).

* remove un-needed parenthesis

---------

Co-authored-by: Sidhanth Rathod <siduck@tutanota.com>
2024-03-10 20:03:32 +05:30
siduck ccf6bc397f rm reference for example_config in bootstrap 2024-03-10 08:55:15 +05:30
siduck 13cce81d99 disable semantic tokens in on_init & expose on_init 2024-03-05 07:53:19 +05:30
siduck 8fe6a6560e rm treesitter tag & fix #2697 2024-02-29 08:47:12 +05:30
Legrems fe912ab5fb Add nvim-treesitter-textobjects 2024-02-26 18:27:42 +01:00
Eduardo BrayandGitHub 0dcd8a91b6 Remove Telescope unsupported layout_config key results_width (#2694) 2024-02-26 13:26:38 +05:30
siduck e9f6957b99 add some vim* tsparsers in treesitter config 2024-02-26 05:35:58 +05:30
siduck 8aec881517 reload editorconfig on User FilePost event only if enabled #2672 2024-02-17 06:31:11 +05:30
siduck f17e83010f fix editorConfig indent opts not applying on certain fts #2633 2024-01-28 21:40:04 +05:30
siduck 282a23f446 lock nvim-treesitter to stable version
there has been a breaking change with nvimtreesitter https://github.com/nvim-treesitter/nvim-treesitter/pull/5895 which needs renaming many of the hlgroups,its already done in the v3.0 branch of base46, cant directly merge to v2.0 so for a while you all will have to use the 0.9.2 version
2024-01-19 22:25:26 +05:30
siduck c80f3f0501 Avoid disabling lsp formatting capabilities
this was used so we could use null-ls as default formatter but as its dead i have replaced it with conform in the example_config. check https://github.com/NvChad/example_config/commit/a321ba986da839dc82eec52d072f1c16737d63b8
2024-01-06 21:00:58 +05:30
Zohir BenghalemandGitHub c2ec317b1b remove unnecessary lines (#2586) 2024-01-02 21:15:03 +05:30
2fedda14ed Add support for non-interactive bootstrapping (#2528)
https://github.com/NvChad/NvChad/pull/2528#issuecomment-1834599074

---------

Co-authored-by: Sidhanth Rathod <siduck@tutanota.com>
2024-01-02 17:12:34 +05:30
siduck e121bde8d8 check for empty/nil mason ensure_installed table #2580 2023-12-27 19:49:31 +05:30
siduck 9bb7dcbaf4 remove telescope fzf extension #2571 2023-12-24 16:31:08 +05:30
c8777040fb [feat] Make gitsigns init function async (#2538)
* [feat] Make gitsigns init function async

This function is running git and also initializing a shell, which can be
a relatively slow operation. By leveraging the jobs api, we run the
command in background, reducing the time it takes for the buffer to be
available to the user. It also uses the list format for the job, which
allow us to bypass the shell entirely.

* performance: use uv.cwd() instead of fn.expand 

benchmarked luv's cwd and it seems to be 20x faster than the expand function

---------

Co-authored-by: Sidhanth Rathod <siduck@tutanota.com>
2023-12-08 20:51:09 +05:30
Legrems 86ccf3bb2d New plugins 2023-11-30 14:28:09 +01:00
Legrems 8d2bf49223 Ruff LSP 2023-11-07 17:46:58 +01:00
Legrems 8d535ad186 More mappings, fix multi select with telescope 2023-10-05 23:12:38 +02:00
Legrems 25bc8e05c4 Update 21.07.23 2023-07-21 22:29:43 +02:00
Legrems 29a0d2ee30 Add C-d to use diffview, C-A-d for close diffview 2023-06-06 11:30:26 +02:00
Legrems 722044c88a Update 05.06.23 2023-06-05 01:39:31 +02:00
Legrems b933fbe1d9 WIP 2023-05-24 05:22:31 +02:00
25 changed files with 1079 additions and 104 deletions
-2
View File
@@ -1,5 +1,3 @@
plugin
custom
spell
ftplugin
syntax
+11
View File
@@ -0,0 +1,11 @@
" hi DiffAdd gui=none guifg=NONE guibg=#bada9f
" hi DiffChange gui=none guifg=NONE guibg=#e5d5ac
" hi DiffDelete gui=bold guifg=#ff8080 guibg=#ffb0b0
" hi DiffText gui=none guifg=NONE guibg=#8cbee2
hi DiffAdd gui=none guifg=NONE guibg=#003200
hi DiffChange gui=none guifg=NONE guibg=#000032
hi DiffDelete gui=bold guifg=#ff8080 guibg=#602020
hi DiffText gui=bold guifg=NONE guibg=#102040
hi link @text.diff.add DiffAdd
hi link @text.diff.delete DiffDelete
hi link @text.diff.change DiffChange
+2
View File
@@ -18,4 +18,6 @@ end
dofile(vim.g.base46_cache .. "defaults")
vim.opt.rtp:prepend(lazypath)
vim.api.nvim_command "packadd cfilter"
vim.api.nvim_command "packadd justify"
require "plugins"
-8
View File
@@ -40,13 +40,6 @@ M.gen_chadrc_template = function()
local path = fn.stdpath "config" .. "/lua/custom"
if fn.isdirectory(path) ~= 1 then
local input = fn.input "Do you want to install example custom config? (y/N): "
if input:lower() == "y" then
M.echo "Cloning example custom config repo..."
shell_call { "git", "clone", "--depth", "1", "https://github.com/NvChad/example_config", path }
fn.delete(path .. "/.git", "rf")
else
-- use very minimal chadrc
fn.mkdir(path, "p")
@@ -57,6 +50,5 @@ M.gen_chadrc_template = function()
end
end
end
end
return M
+7 -4
View File
@@ -10,9 +10,9 @@ M.ui = {
hl_add = {},
hl_override = {},
changed_themes = {},
theme_toggle = { "onedark", "one_light" },
theme = "onedark", -- default theme
transparency = false,
theme_toggle = { "gatekeeper", "one_light" },
theme = "gatekeeper", -- default theme
transparency = true,
lsp_semantic_tokens = false, -- needs nvim v0.9, just adds highlight groups for lsp semantic tokens
-- https://github.com/NvChad/base46/tree/v2.0/lua/base46/extended_integrations
@@ -36,6 +36,9 @@ M.ui = {
-- round and block will work for minimal theme only
separator_style = "default",
overriden_modules = nil,
fileInfo = function()
return require("nvchad_ui.statusline.default.fileInfo").run()
end
},
-- lazyload it when there are 1+ buffers
@@ -65,7 +68,7 @@ M.ui = {
buttons = {
{ " Find File", "Spc f f", "Telescope find_files" },
{ "󰈚 Recent Files", "Spc f o", "Telescope oldfiles" },
{ "󰈭 Find Word", "Spc f w", "Telescope live_grep" },
{ "󰈭 Find Word", "Spc f w", "Telescope find_grep" },
{ " Bookmarks", "Spc m a", "Telescope marks" },
{ " Themes", "Spc t h", "Telescope themes" },
{ " Mappings", "Spc c h", "NvCheatsheet" },
+34 -5
View File
@@ -6,7 +6,7 @@ local config = require("core.utils").load_config()
g.nvchad_theme = config.ui.theme
g.base46_cache = vim.fn.stdpath "data" .. "/nvchad/base46/"
g.toggle_theme_icon = ""
g.transparency = config.ui.transparency
g.transparency = true
-------------------------------------- options ------------------------------------------
opt.laststatus = 3 -- global statusline
@@ -17,10 +17,10 @@ opt.cursorline = true
-- Indenting
opt.expandtab = true
opt.shiftwidth = 2
opt.shiftwidth = 4
opt.smartindent = true
opt.tabstop = 2
opt.softtabstop = 2
opt.tabstop = 4
opt.softtabstop = 4
opt.fillchars = { eob = " " }
opt.ignorecase = true
@@ -31,6 +31,7 @@ opt.mouse = "a"
opt.number = true
opt.numberwidth = 2
opt.ruler = false
opt.relativenumber = true
-- disable nvim intro
opt.shortmess:append "sI"
@@ -41,6 +42,7 @@ opt.splitright = true
opt.termguicolors = true
opt.timeoutlen = 400
opt.undofile = true
opt.scrolloff = 15
-- interval for writing swap file to disk, also used by gitsigns
opt.updatetime = 250
@@ -57,7 +59,7 @@ for _, provider in ipairs { "node", "perl", "python3", "ruby" } do
end
-- add binaries installed by mason.nvim to path
local is_windows = vim.loop.os_uname().sysname == "Windows_NT"
local is_windows = vim.fn.has("win32") ~= 0
vim.env.PATH = vim.fn.stdpath "data" .. "/mason/bin" .. (is_windows and ";" or ":") .. vim.env.PATH
-------------------------------------- autocmds ------------------------------------------
@@ -91,6 +93,7 @@ autocmd("BufWritePost", {
vim.g.nvchad_theme = config.ui.theme
vim.g.transparency = config.ui.transparency
vim.g.transparency = true
-- statusline
require("plenary.reload").reload_module("nvchad.statusline." .. config.ui.statusline.theme)
@@ -107,6 +110,32 @@ autocmd("BufWritePost", {
end,
})
-- user event that loads after UIEnter + only if file buf is there
vim.api.nvim_create_autocmd({ "UIEnter", "BufReadPost", "BufNewFile" }, {
group = vim.api.nvim_create_augroup("NvFilePost", { clear = true }),
callback = function(args)
local file = vim.api.nvim_buf_get_name(args.buf)
local buftype = vim.api.nvim_buf_get_option(args.buf, "buftype")
if not vim.g.ui_entered and args.event == "UIEnter" then
vim.g.ui_entered = true
end
if file ~= "" and buftype ~= "nofile" and vim.g.ui_entered then
vim.api.nvim_exec_autocmds("User", { pattern = "FilePost", modeline = false })
vim.api.nvim_del_augroup_by_name "NvFilePost"
vim.schedule(function()
vim.api.nvim_exec_autocmds("FileType", {})
if vim.g.editorconfig then
require("editorconfig").config(args.buf)
end
end, 0)
end
end,
})
-------------------------------------- commands ------------------------------------------
local new_cmd = vim.api.nvim_create_user_command
+151 -38
View File
@@ -16,6 +16,8 @@ M.general = {
},
n = {
["<leader>n"] = { ":noh <CR>", "Clear highlights" },
["<leader>rr"] = { ":source $MYVIMRC<CR>", "Reload config file" },
["<Esc>"] = { "<cmd> noh <CR>", "Clear highlights" },
-- switch between windows
["<C-h>"] = { "<C-w>h", "Window left" },
@@ -23,28 +25,43 @@ M.general = {
["<C-j>"] = { "<C-w>j", "Window down" },
["<C-k>"] = { "<C-w>k", "Window up" },
-- ["<C-d>"] = { "<cmd> tab Git diff %<CR>", "Git diff this file" },
["<C-d>"] = { "<cmd> DiffviewOpen -- %<CR>", "Git diff this file" },
["<C-o>"] = { "<cmd> DiffviewFileHistory %<CR>", "Git history diff this file" },
["<C-a-d>"] = { "<cmd> DiffviewClose<CR>", "Close git diff" },
-- ["<C-p>"] = { "<cmd> tab Git diff<CR>", "Git diff global" },
["<C-p>"] = { "<cmd> DiffviewOpen<CR>", "Git diff global" },
["<a-p>"] = { ":DiffviewOpen HEAD~", "Show last N commits" },
["<leader>gd"] = { "<cmd> DiffviewClose<CR>", "Git diff close" },
-- save
["<C-s>"] = { "<cmd> w <CR>", "Save file" },
-- Copy all
["<C-c>"] = { "<cmd> %y+ <CR>", "Copy whole file" },
-- ["<C-c>"] = { "<cmd> %y+ <CR>", "Copy whole file" },
-- Quit
["<C-q>"] = { "<cmd> q! <CR>", "Force quit window" },
-- line numbers
["<leader>n"] = { "<cmd> set nu! <CR>", "Toggle line number" },
["<leader>rn"] = { "<cmd> set rnu! <CR>", "Toggle relative number" },
-- ["<leader>n"] = { "<cmd> set nu! <CR>", "Toggle line number" },
-- ["<leader>rn"] = { "<cmd> set rnu! <CR>", "Toggle relative number" },
-- Allow moving the cursor through wrapped lines with j, k, <Up> and <Down>
-- allow moving the cursor through wrapped lines with j, k, <Up> and <Down>
-- http://www.reddit.com/r/vim/comments/2k4cbr/problem_with_gj_and_gk/
-- empty mode is same as using <cmd> :map
-- also don't use g[j|k] when in operator pending mode, so it doesn't alter d, y or c behaviour
["j"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } },
["k"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move up", opts = { expr = true } },
["<Up>"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move up", opts = { expr = true } },
["<Down>"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } },
-- ["j"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } },
-- ["k"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move up", opts = { expr = true } },
-- ["<Up>"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move up", opts = { expr = true } },
-- ["<Down>"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } },
["<leader>y"] = {"<cmd> :w! /tmp/vimtmp<CR>", "Save into a global tmp file"},
["<leader>p"] = {"<cmd> :r! cat /tmp/vimtmp<CR>", "Restore from the global tmp file"},
-- new buffer
["<leader>b"] = { "<cmd> enew <CR>", "New buffer" },
["<leader>ch"] = { "<cmd> NvCheatsheet <CR>", "Mapping cheatsheet" },
-- ["<leader>b"] = { "<cmd> enew <CR>", "New buffer" },
-- ["<leader>ch"] = { "<cmd> NvCheatsheet <CR>", "Mapping cheatsheet" },
["<leader>fm"] = {
function()
@@ -59,21 +76,80 @@ M.general = {
},
v = {
["<Up>"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move up", opts = { expr = true } },
["<Down>"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } },
-- ["<Up>"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move up", opts = { expr = true } },
-- ["<Down>"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } },
["<"] = { "<gv", "Indent line" },
[">"] = { ">gv", "Indent line" },
},
x = {
["j"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } },
["k"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move up", opts = { expr = true } },
-- ["j"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } },
-- ["k"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move up", opts = { expr = true } },
-- Don't copy the replaced text after pasting in visual mode
-- https://vim.fandom.com/wiki/Replace_a_word_with_yanked_text#Alternative_mapping_for_paste
-- https://vim.fandom.com/wiki/Replace_a_word_with_yanked_text#alternative_mapping_for_paste
["p"] = { 'p:let @+=@0<CR>:let @"=@0<CR>', "Dont copy replaced text", opts = { silent = true } },
},
}
M.customstuffs = {
n = {
["<Return>"] = { "o<ESC>", "Insert new line below" },
["<BS>"] = { "O<ESC>", "Insert new line above" },
["<C-c>"] = { "<cmd> vertical topleft Git <bar> vertical resize 50<CR>", "Show Git status on a left pane" },
["<F1>"] = { "<cmd> tabprevious<CR>", "Previous tab" },
["<F2>"] = { "<cmd> tabnext<CR>", "Next tab" },
["<F3>"] = { "<cmd> Flog -all<CR>", "Show git tree" },
["<F4>"] = { "<cmd> tab Git show -", "Git show N last commits" },
["<C-t>"] = { "<cmd> TagbarToggle<CR>", "Show tagbar" },
["<leader>ra"] = { "<cmd> call VrcQuery()<CR>", "Call REST endpoint" },
["<leader>dl"] = { "0d$", "Delete line from start" },
["<leader>gpu"] = { "<cmd> Git pull<CR>", "Git pull" },
["<leader>gpf"] = { ":Git push ", "Git push with option" },
["<leader>gmm"] = { "<cmd> Git merge master<CR>", "Git merge master" },
["<leader>gmi"] = { ":Git merge ", "Git merge ..." },
["<leader>ga"] = { ":Git commit -a --amend --no-edit --no-verify", "Git commit -a --amend --no-edit --no-verify" },
["<leader>gnb"] = { ":Git checkout -b ", "Checkout to a new branch" },
["<leader>gri"] = { ":Git rebase -i HEAD~", "Git rebase interactive from HEAD" },
["<leader>grm"] = { ":Git rebase -i master", "Git rebase interactive from master" },
["<leader>grr"] = { ":Git rebase -i ", "Git rebase interactive from <select>" },
-- ["<leader>mkd"] = { "<cmd>lua vim.api.nvim_create_user_command('PeekOpen', require('peek').open, {})<CR>", "Open markdown preview" },
-- ["<leader>mkc"] = { "<cmd>lua vim.api.nvim_create_user_command('PeekClose', require('peek').close, {})<CR>", "Open markdown preview" },
["n"] = { "nzz", "Next + auto center" },
["N"] = { "Nzz", "Previous + auto center" },
["("] = { "(zz", "Previous + auto center" },
[")"] = { ")zz", "Previous + auto center" },
["{"] = { "{zz", "Previous + auto center" },
["}"] = { "}zz", "Previous + auto center" },
["[["] = { "[[zz", "Previous + auto center" },
["]]"] = { "]]zz", "Previous + auto center" },
-- Mappings: TODO
-- "trim(system('git branch --show-current 2>/dev/null'))"
-- ["<leader>ct"] = { ":call append(line('.') - 1, repeat(' ', indent('.')) . '# TODO-' . trim(system('git branch --show-current 2>/dev/null')) . ': ' . input('Comment >'))<CR>", "Add TODO comment + add to quickfix list" },
["<leader>ct"] = { ":call append(line('.') - 1, repeat(' ', indent('.')) . '# TODO: ' . input('Comment >'))<CR>", "Add TODO comment + add to quickfix list" },
["<leader>ww"] = { ":lua require('nvim-window').pick()<CR>", "Pick window to goto" },
["<leader>wm"] = { ":WinShift<CR>", "Enter move window mode" },
["<leader>ws"] = { ":WinShift swap<CR>", "Swap window, with selection" },
["<leader>gg"] = { ":LazyGit<CR>", "Open lazygit" },
},
v = {
["n"] = { "nzz", "Next + auto center" },
["N"] = { "Nzz", "Previous + auto center" },
["("] = { "(zz", "Previous + auto center" },
[")"] = { ")zz", "Previous + auto center" },
["{"] = { "{zz", "Previous + auto center" },
["}"] = { "}zz", "Previous + auto center" },
["[["] = { "[[zz", "Previous + auto center" },
["]]"] = { "]]zz", "Previous + auto center" },
},
}
M.tabufline = {
plugin = true,
@@ -108,7 +184,7 @@ M.comment = {
-- toggle comment in both modes
n = {
["<leader>/"] = {
["<leader>ci"] = {
function()
require("Comment.api").toggle.linewise.current()
end,
@@ -117,7 +193,7 @@ M.comment = {
},
v = {
["<leader>/"] = {
["<leader>ci"] = {
"<ESC><cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR>",
"Toggle comment",
},
@@ -214,18 +290,18 @@ M.lspconfig = {
"Goto next",
},
["<leader>q"] = {
function()
vim.diagnostic.setloclist()
end,
"Diagnostic setloclist",
},
-- ["<leader>q"] = {
-- function()
-- vim.diagnostic.setloclist()
-- end,
-- "Diagnostic setloclist",
-- },
["<leader>wa"] = {
function()
vim.lsp.buf.add_workspace_folder()
end,
"Add workspace folder",
"add workspace folder",
},
["<leader>wr"] = {
@@ -269,18 +345,45 @@ M.telescope = {
plugin = true,
n = {
-- Resume
["<a-f>"] = { "<cmd> Telescope resume <CR>", "Resume" },
-- find
["<leader>ff"] = { "<cmd> Telescope find_files <CR>", "Find files" },
["<leader>fa"] = { "<cmd> Telescope find_files follow=true no_ignore=true hidden=true <CR>", "Find all" },
["<leader>fw"] = { "<cmd> Telescope live_grep <CR>", "Live grep" },
["<leader>fb"] = { "<cmd> Telescope buffers <CR>", "Find buffers" },
["<C-g>"] = { "<cmd> Telescope find_files <CR>", "Find files" },
["<C-x>"] = { "<cmd> Telescope find_files follow=true no_ignore=true hidden=true <CR>", "Find all" },
["<C-f>"] = { "<cmd> Telescope live_grep <CR>", "Live grep" },
["<C-b>"] = { "<cmd> Telescope buffers <CR>", "Find buffers" },
["<leader>fg"] = { "<cmd> lua require('telescope.builtin').live_grep({default_text=vim.fn.getreg('/')}) <CR>", "Live grep with actual search value as prefix" },
["<leader>gf"] = { "<cmd> lua require('telescope.builtin').find_files({default_text=vim.fn.getreg('/')}) <CR>", "Live grep with actual search value as prefix" },
["<leader>ac"] = { ":execute 'vimgrep' input('Pattern >', getreg('/')) '**/*' <CR>", "add search term files in quickfix list" },
-- ["<leader>qr"] = { ":execute 'cdo' '%s/' . input('Search term >', getreg('/')) . '/' . input('Replace by >', getreg('')) . '/g | update' <CR>", "Replace pattern in all quickfix list" },
["<leader>qr"] = { ":cdo '%s/' . input('Search term >', getreg('/')) . '/' . input('Replace by >', '') . '/g | update' <CR>", "Replace pattern in all quickfix list" },
["<leader>br"] = { ":execute '%s/' . input('Search term >', getreg('/')) . '/' . input('Replace by >', '') . '/g | update' <CR>", "Replace pattern in current buffer" },
["<leader>ql"] = { "<cmd> Telescope quickfix <CR>", "Show quickfix list" },
["<leader>qn"] = { ":cnext<CR>", "Jump to next in quickfix list" },
["<leader>qp"] = { ":cprevious<CR>", "Jump to previous in quickfix list" },
["<leader>ll"] = { "<cmd> Telescope loclist <CR>", "Show loclist list" },
["<leader>ln"] = { ":lnext<CR>", "Jump to next in loclist" },
["<leader>lp"] = { ":lprevious<CR>", "Jump to previous in loclist" },
["<leader>fh"] = { "<cmd> Telescope help_tags <CR>", "Help page" },
["<leader>fo"] = { "<cmd> Telescope oldfiles <CR>", "Find oldfiles" },
["<leader>fz"] = { "<cmd> Telescope current_buffer_fuzzy_find <CR>", "Find in current buffer" },
["<leader>wl"] = { "<cmd> Telescope workspaces <CR>", "Find workspaces" },
-- git
["<leader>cm"] = { "<cmd> Telescope git_commits <CR>", "Git commits" },
["<leader>gt"] = { "<cmd> Telescope git_status <CR>", "Git status" },
--- Commits
["<leader>gc"] = { "<cmd> lua require('custom.telescope').my_git_commits()<CR>", "Custom Git commits" },
--- Status
["<leader>gss"] = { "<cmd> lua require('custom.telescope').my_git_status()<CR>", "Custom Git status" },
--- Stash
["<leader>gsh"] = { "<cmd> Telescope git_stash<CR>", "Git stash" },
--- Branches
["<leader>gbb"] = { "<cmd> Telescope git_branches<CR>", "Git branches" },
["<leader>gbc"] = { "<cmd> lua require('custom.telescope').my_git_bcommits()<CR>", "Custom Git branchs commits" },
-- pick a hidden term
["<leader>pt"] = { "<cmd> Telescope terms <CR>", "Pick hidden term" },
@@ -289,6 +392,16 @@ M.telescope = {
["<leader>th"] = { "<cmd> Telescope themes <CR>", "Nvchad themes" },
["<leader>ma"] = { "<cmd> Telescope marks <CR>", "telescope bookmarks" },
-- History
["<leader>ch"] = { "<cmd> Telescope command_history <CR>", "telescope commands history" },
["<leader>/"] = { "<cmd> Telescope search_history <CR>", "telescope search history" },
-- Diaglist: LSP diagnostics in quick/loc list
["<leader>dw"] = { "<cmd>lua require('diaglist').open_all_diagnostics()<CR>", "Open all open buffers diagnostics in quickfix list" },
["<leader>d0"] = { "<cmd>lua require('diaglist').open_buffer_diagnostics()<CR>", "Open current buffer diagnostics in loclist list" },
["<leader>;"] = { "<cmd> Telescope <CR>", "Open Telescope" },
},
}
@@ -297,21 +410,21 @@ M.nvterm = {
t = {
-- toggle in terminal mode
["<A-i>"] = {
["<a-i>"] = {
function()
require("nvterm.terminal").toggle "float"
end,
"Toggle floating term",
},
["<A-h>"] = {
["<a-h>"] = {
function()
require("nvterm.terminal").toggle "horizontal"
end,
"Toggle horizontal term",
},
["<A-v>"] = {
["<a-v>"] = {
function()
require("nvterm.terminal").toggle "vertical"
end,
@@ -321,21 +434,21 @@ M.nvterm = {
n = {
-- toggle in normal mode
["<A-i>"] = {
["<a-i>"] = {
function()
require("nvterm.terminal").toggle "float"
end,
"Toggle floating term",
},
["<A-h>"] = {
["<a-h>"] = {
function()
require("nvterm.terminal").toggle "horizontal"
end,
"Toggle horizontal term",
},
["<A-v>"] = {
["<a-v>"] = {
function()
require("nvterm.terminal").toggle "vertical"
end,
@@ -434,7 +547,7 @@ M.gitsigns = {
opts = { expr = true },
},
-- Actions
-- actions
["<leader>rh"] = {
function()
require("gitsigns").reset_hunk()
@@ -449,7 +562,7 @@ M.gitsigns = {
"Preview hunk",
},
["<leader>gb"] = {
["<leader>bb"] = {
function()
package.loaded.gitsigns.blame_line()
end,
+20
View File
@@ -0,0 +1,20 @@
---@type ChadrcConfig
local M = {}
-- Path to overriding theme and highlights files
local highlights = require "custom.highlights"
M.ui = {
theme = "onedark",
theme_toggle = { "onedark", "monekai" },
hl_override = highlights.override,
hl_add = highlights.add,
}
M.plugins = "custom.plugins"
-- check core.mappings for table structure
M.mappings = require "custom.mappings"
return M
+17
View File
@@ -0,0 +1,17 @@
local on_attach = require("plugins.configs.lspconfig").on_attach
local capabilities = require("plugins.configs.lspconfig").capabilities
local lspconfig = require "lspconfig"
-- if you just want default config for the servers then put them in a table
local servers = { "html", "cssls", "tsserver", "clangd", "salt_ls" }
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup {
on_attach = on_attach,
capabilities = capabilities,
}
end
--
-- lspconfig.pyright.setup { blabla}
+25
View File
@@ -0,0 +1,25 @@
local present, null_ls = pcall(require, "null-ls")
if not present then
return
end
local b = null_ls.builtins
local sources = {
-- webdev stuff
b.formatting.deno_fmt, -- choosed deno for ts/js files cuz its very fast!
b.formatting.prettier.with { filetypes = { "html", "markdown", "css" } }, -- so prettier works only on these filetypes
-- Lua
b.formatting.stylua,
-- cpp
b.formatting.clang_format,
}
null_ls.setup {
debug = true,
sources = sources,
}
+68
View File
@@ -0,0 +1,68 @@
local M = {}
M.treesitter = {
ensure_installed = {
"vim",
"lua",
"html",
"css",
"javascript",
"typescript",
"tsx",
"c",
"markdown",
"markdown_inline",
},
indent = {
enable = true,
-- disable = {
-- "python"
-- },
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<C-space>",
node_incremental = "<C-space>",
scope_incremental = false,
node_decremental = "<bs>",
},
},
}
M.mason = {
ensure_installed = {
-- lua stuff
"lua-language-server",
"stylua",
-- web dev stuff
"css-lsp",
"html-lsp",
"typescript-language-server",
"deno",
"prettier",
-- c/cpp stuff
"clangd",
"clang-format",
},
}
-- git support in nvimtree
M.nvimtree = {
git = {
enable = true,
},
renderer = {
highlight_git = true,
icons = {
show = {
git = true,
},
},
},
}
return M
+19
View File
@@ -0,0 +1,19 @@
-- To find any highlight groups: "<cmd> Telescope highlights"
-- Each highlight group can take a table with variables fg, bg, bold, italic, etc
-- base30 variable names can also be used as colors
local M = {}
---@type Base46HLGroupsList
M.override = {
Comment = {
italic = true,
},
}
---@type HLTable
M.add = {
NvimTreeOpenedFolderName = { fg = "green", bold = true },
}
return M
+7
View File
@@ -0,0 +1,7 @@
-- local autocmd = vim.api.nvim_create_autocmd
-- Auto resize panes when resizing nvim window
-- autocmd("VimResized", {
-- pattern = "*",
-- command = "tabdo wincmd =",
-- })
+12
View File
@@ -0,0 +1,12 @@
---@type MappingsTable
local M = {}
M.general = {
n = {
[";"] = { ":", "enter command mode", opts = { nowait = true } },
},
}
-- more keybinds!
--
return M
+65
View File
@@ -0,0 +1,65 @@
local overrides = require("custom.configs.overrides")
---@type NvPluginSpec[]
local plugins = {
-- Override plugin definition options
{
"neovim/nvim-lspconfig",
dependencies = {
-- format & linting
{
"jose-elias-alvarez/null-ls.nvim",
config = function()
require "custom.configs.null-ls"
end,
},
},
config = function()
require "plugins.configs.lspconfig"
require "custom.configs.lspconfig"
end, -- Override to setup mason-lspconfig
},
-- override plugin configs
{
"williamboman/mason.nvim",
opts = overrides.mason
},
{
"nvim-treesitter/nvim-treesitter",
opts = overrides.treesitter,
},
{
"nvim-tree/nvim-tree.lua",
opts = overrides.nvimtree,
},
-- Install a plugin
{
"max397574/better-escape.nvim",
event = "InsertEnter",
config = function()
require("better_escape").setup()
end,
},
-- To make a plugin not be loaded
-- {
-- "NvChad/nvim-colorizer.lua",
-- enabled = false
-- },
-- All NvChad plugins are lazy-loaded by default
-- For a plugin to be loaded, you will need to set either `ft`, `cmd`, `keys`, `event`, or set `lazy = false`
-- If you want a plugin to load on startup, add `lazy = false` to a plugin spec, for example
-- {
-- "mg979/vim-visual-multi",
-- lazy = false,
-- }
}
return plugins
+62
View File
@@ -0,0 +1,62 @@
-- Implement delta as previewer for diffs
local previewers = require('telescope.previewers')
local builtin = require('telescope.builtin')
local E = {}
local delta = previewers.new_termopen_previewer {
get_command = function(entry)
-- this is for status
-- You can get the AM things in entry.status. So we are displaying file if entry.status == '??' or 'A '
-- just do an if and return a different command
if entry.status == '??' or 'A ' then
return { 'git', '-c', 'core.pager=delta', '-c', 'delta.side-by-side=false', 'diff', entry.value }
end
-- note we can't use pipes
-- this command is for git_commits and git_bcommits
return { 'git', '-c', 'core.pager=delta', '-c', 'delta.side-by-side=false', 'diff', entry.value .. '^!' }
end
}
E.my_git_commits = function(opts)
opts = opts or {}
opts.previewer = delta
builtin.git_commits(opts)
end
E.my_git_bcommits = function(opts)
opts = opts or {}
opts.previewer = delta
builtin.git_bcommits(opts)
end
E.my_git_status = function(opts)
opts = opts or {}
opts.previewer = delta
builtin.git_status(opts)
end
E.my_git_branches = function(opts)
opts = opts or {}
opts.previewer = delta
builtin.git_branches(opts)
end
E.project_files = function()
local opts = {} -- define here if you want to define something
vim.fn.system('git rev-parse --is-inside-work-tree')
if vim.v.shell_error == 0 then
require"telescope.builtin".git_files(opts)
else
require"telescope.builtin".find_files(opts)
end
end
return E
+5
View File
@@ -0,0 +1,5 @@
local actions = require("diffview.actions")
local options = {}
return options
+35
View File
@@ -0,0 +1,35 @@
local Hydra = require("hydra")
Hydra({
name = "Change / Resize Window",
mode = { "n" },
body = "<leader>t",
config = {
-- color = "pink",
},
heads = {
-- move between windows
{ "<C-h>", "<C-w>h", { desc="Noot nooty" } },
{ "<C-j>", "<C-w>j" },
{ "<C-k>", "<C-w>k" },
{ "<C-l>", "<C-w>l" },
-- resizing window
{ "H", "<C-w>3<" },
{ "L", "<C-w>3>" },
{ "K", "<C-w>2+" },
{ "J", "<C-w>2-" },
-- equalize window sizes
{ "e", "<C-w>=" },
-- close active window
{ "Q", ":q<cr>" },
{ "<C-q>", ":q<cr>" },
-- exit this Hydra
{ "q", nil, { exit = true, nowait = true } },
{ ";", nil, { exit = true, nowait = true } },
{ "<Esc>", nil, { exit = true, nowait = true } },
},
})
+4 -4
View File
@@ -5,17 +5,16 @@ local M = {}
local utils = require "core.utils"
-- export on_attach & capabilities for custom lspconfigs
M.on_attach = function(client, bufnr)
client.server_capabilities.documentFormattingProvider = false
client.server_capabilities.documentRangeFormattingProvider = false
utils.load_mappings("lspconfig", { buffer = bufnr })
if client.server_capabilities.signatureHelpProvider then
require("nvchad.signature").setup(client)
end
end
-- disable semantic tokens
M.on_init = function(client, _)
if not utils.load_config().ui.lsp_semantic_tokens and client.supports_method "textDocument/semanticTokens" then
client.server_capabilities.semanticTokensProvider = nil
end
@@ -42,6 +41,7 @@ M.capabilities.textDocument.completion.completionItem = {
}
require("lspconfig").lua_ls.setup {
on_init = M.on_init,
on_attach = M.on_attach,
capabilities = M.capabilities,
+46
View File
@@ -0,0 +1,46 @@
local M = {
lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
},
},
-- you can enable a preset for easier configuration
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = false, -- add a border to hover docs and signature help
},
views = {
cmdline_popup = {
-- border = {
-- style = "none",
-- padding = { 2, 3 },
-- },
-- position = {
-- row = "85%",
-- col = "50%",
-- },
size = {
width = 120,
height = "auto",
},
},
popupmenu = {
-- relative = "editor",
-- position = {
-- row = 25,
-- col = "50%",
-- },
size = {
width = 120,
-- height = 10,
}
}
},
}
return M
+47
View File
@@ -0,0 +1,47 @@
-- See: https://github.com/neovim/nvim-lspconfig/tree/54eb2a070a4f389b1be0f98070f81d23e2b1a715#suggested-configuration
local opts = { noremap=true, silent=true }
vim.keymap.set('n', '<space>k', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
local on_attach = function(client, bufnr)
-- Enable completion triggered by <c-x><c-o>
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
-- Mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local bufopts = { noremap=true, silent=true, buffer=bufnr }
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
vim.keymap.set('n', '<space>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, bufopts)
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
vim.keymap.set('n', '<space>f', function() vim.lsp.buf.format { async = true } end, bufopts)
end
-- Configure `ruff-lsp`.
-- See: https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#ruff_lsp
-- For the default config, along with instructions on how to customize the settings
require('lspconfig').ruff_lsp.setup {
on_attach = on_attach,
init_options = {
settings = {
-- Any extra CLI arguments for `ruff` go here.
args = {"--ignore", "E741"},
}
}
}
+127 -8
View File
@@ -1,3 +1,96 @@
local custom_actions = {}
local actions = require("telescope.actions")
local action_state = require("telescope.actions.state")
local from_entry = require("telescope.from_entry")
local entry_to_qf = function(entry)
local text = entry.text
if not text then
if type(entry.value) == "table" then
text = entry.value.text
else
text = entry.value
end
end
return {
bufnr = entry.bufnr,
filename = from_entry.path(entry, false, false),
lnum = vim.F.if_nil(entry.lnum, 1),
col = vim.F.if_nil(entry.col, 1),
text = text,
}
end
local send_selected_to_list_without_closing_prompt = function(prompt_bufnr, mode, target)
local picker = action_state.get_current_picker(prompt_bufnr)
local qf_entries = {}
for _, entry in ipairs(picker:get_multi_selection()) do
table.insert(qf_entries, entry_to_qf(entry))
end
local prompt = picker:_get_prompt()
-- actions.close(prompt_bufnr)
vim.api.nvim_exec_autocmds("QuickFixCmdPre", {})
if target == "loclist" then
vim.fn.setloclist(picker.original_win_id, qf_entries, mode)
else
local qf_title = string.format([[%s (%s)]], picker.prompt_title, prompt)
vim.fn.setqflist(qf_entries, mode)
vim.fn.setqflist({}, "a", { title = qf_title })
end
vim.api.nvim_exec_autocmds("QuickFixCmdPost", {})
end
function custom_actions._multiopen(prompt_bufnr, cmd, cmd2, mode, list)
-- actions.send_selected_to_loclist(prompt_bufnr)
local picker = action_state.get_current_picker(prompt_bufnr)
local multi = picker:get_multi_selection()
local single = picker:get_selection()
local str = ""
if #multi > 0 then
send_selected_to_list_without_closing_prompt(prompt_bufnr, mode, list)
for i, j in ipairs(multi) do
if i % 2 == 1 then
str = str..cmd.." "..j[1].." | "
else
str = str..cmd2.." "..j[1].." | "
end
end
else
str = cmd.." "..single[1]
end
-- To avoid populating qf or doing ":edit! file", close the prompt first
actions.close(prompt_bufnr)
vim.api.nvim_command(str)
end
function custom_actions.multi_selection_open(prompt_bufnr)
return custom_actions._multiopen(prompt_bufnr, "edit", "edit", "a", "loclist")
end
function custom_actions.multi_selection_vsplit(prompt_bufnr)
return custom_actions._multiopen(prompt_bufnr, "vsplit", "split", "a", "loclist")
end
function custom_actions.multi_selection_split(prompt_bufnr)
return custom_actions._multiopen(prompt_bufnr, "split", "vsplit", "a", "loclist")
end
function custom_actions.multi_selection_vtab(prompt_bufnr)
return custom_actions._multiopen(prompt_bufnr, "tabe", "tabe", "a", "loclist")
end
local options = {
defaults = {
vimgrep_arguments = {
@@ -20,15 +113,15 @@ local options = {
layout_config = {
horizontal = {
prompt_position = "top",
preview_width = 0.55,
preview_width = 0.60,
results_width = 0.8,
},
vertical = {
mirror = false,
},
width = 0.87,
height = 0.80,
preview_cutoff = 120,
width = 0.90,
height = 0.92,
preview_cutoff = 200,
},
file_sorter = require("telescope.sorters").get_fuzzy_file,
file_ignore_patterns = { "node_modules" },
@@ -45,19 +138,45 @@ local options = {
-- Developer configurations: Not meant for general override
buffer_previewer_maker = require("telescope.previewers").buffer_previewer_maker,
mappings = {
n = { ["q"] = require("telescope.actions").close },
n = { ["q"] = actions.close },
},
},
pickers = {
buffers = {
show_all_buffers = true,
sort_lastused = true,
mappings = {
n = {
["d"] = "delete_buffer",
},
i = {
["<C-d>"] = "delete_buffer",
}
}
},
find_files = {
mappings = {
i = {
["<CR>"] = custom_actions.multi_selection_open,
["<C-V>"] = custom_actions.multi_selection_vsplit,
["<C-X>"] = custom_actions.multi_selection_split,
["<C-T>"] = custom_actions.multi_selection_tab,
["<C-SPACE>"] = actions.send_selected_to_qflist,
},
n = i,
}
}
},
extensions_list = { "themes", "terms", "fzf" },
extensions_list = { "themes", "terms", "fzf", "macrothis" },
extensions = {
fzf = {
fuzzy = true,
override_generic_sorter = true,
override_file_sorter = true,
case_mode = "smart_case",
},
},
}
}
}
return options
+1 -1
View File
@@ -1,5 +1,5 @@
local options = {
ensure_installed = { "lua" },
ensure_installed = { "lua", "vim", "vimdoc" },
highlight = {
enable = true,
@@ -0,0 +1,133 @@
local M = {}
M.textobjects = {
select = {
enable = true,
-- Automatically jump forward to textobj, similar to targets.vim
lookahead = true,
keymaps = {
-- You can use the capture groups defined in textobjects.scm
["a="] = { query = "@assignment.outer", desc = "Select outer part of an assignment" },
["i="] = { query = "@assignment.inner", desc = "Select inner part of an assignment" },
["l="] = { query = "@assignment.lhs", desc = "Select left hand side of an assignment" },
["r="] = { query = "@assignment.rhs", desc = "Select right hand side of an assignment" },
["aa"] = { query = "@parameter.outer", desc = "Select outer part of a parameter/argument" },
["ia"] = { query = "@parameter.inner", desc = "Select inner part of a parameter/argument" },
["ai"] = { query = "@conditional.outer", desc = "Select outer part of a conditional" },
["ii"] = { query = "@conditional.inner", desc = "Select inner part of a conditional" },
["al"] = { query = "@loop.outer", desc = "Select outer part of a loop" },
["il"] = { query = "@loop.inner", desc = "Select inner part of a loop" },
["af"] = { query = "@call.outer", desc = "Select outer part of a function call" },
["if"] = { query = "@call.inner", desc = "Select inner part of a function call" },
["am"] = { query = "@function.outer", desc = "Select outer part of a function def" },
["im"] = { query = "@function.inner", desc = "Select inner part of a function def" },
["ak"] = { query = "@class.outer", desc = "Select outer part of a class" },
["ik"] = { query = "@class.inner", desc = "Select inner part of a class" },
["ac"] = { query = "@comment.outer", desc = "Select outer part of a comment" },
["ic"] = { query = "@comment.inner", desc = "Select inner part of a comment" },
},
},
move = {
enable = true,
-- Whether to set jumps in the jumplist
set_jumps = true,
goto_next_start = {
["]a"] = { query = "@parameter.outer", desc = "Goto next start outer parameter" },
["]i"] = { query = "@conditional.outer", desc = "Goto next start outer conditional" },
["]l"] = { query = "@loop.outer", desc = "Goto next start outer loop" },
["]f"] = { query = "@call.outer", desc = "Goto next start outer call" },
["]m"] = { query = "@function.outer", desc = "Goto next start outer function" },
["]k"] = { query = "@class.outer", desc = "Goto next start outer class" },
["]c"] = { query = "@comment.outer", desc = "Goto next start outer comment" },
},
goto_next_end = {
["]A"] = { query = "@parameter.outer", desc = "Goto next end outer parameter" },
["]I"] = { query = "@conditional.outer", desc = "Goto next end outer conditional" },
["]L"] = { query = "@loop.outer", desc = "Goto next end outer loop" },
["]F"] = { query = "@call.outer", desc = "Goto next end outer call" },
["]M"] = { query = "@function.outer", desc = "Goto next end outer function" },
["]K"] = { query = "@class.outer", desc = "Goto next end outer class" },
["]C"] = { query = "@comment.outer", desc = "Goto next end outer comment" },
},
goto_previous_start = {
["[a"] = { query = "@parameter.outer", desc = "Goto previous start outer parameter" },
["[i"] = { query = "@conditional.outer", desc = "Goto previous start outer conditional" },
["[l"] = { query = "@loop.outer", desc = "Goto previous start outer loop" },
["[f"] = { query = "@call.outer", desc = "Goto previous start outer call" },
["[m"] = { query = "@function.outer", desc = "Goto previous start outer function" },
["[k"] = { query = "@class.outer", desc = "Goto previous start outer class" },
["[c"] = { query = "@comment.outer", desc = "Goto previous start outer comment" },
},
goto_previous_end = {
["[A"] = { query = "@parameter.outer", desc = "Goto previous end outer parameter" },
["[I"] = { query = "@conditional.outer", desc = "Goto previous end outer conditional" },
["[L"] = { query = "@loop.outer", desc = "Goto previous end outer loop" },
["[F"] = { query = "@call.outer", desc = "Goto previous end outer call" },
["[M"] = { query = "@function.outer", desc = "Goto previous end outer function" },
["[K"] = { query = "@class.outer", desc = "Goto previous end outer class" },
["[C"] = { query = "@comment.outer", desc = "Goto previous end outer comment" },
},
},
swap = {
enable = true,
swap_next = {
["<leader>na"] = { query = "@parameter.inner", desc = "Swap with next inner parameter" },
["<leader>ni"] = { query = "@conditional.outer", desc = "Swap with next outer conditional" },
["<leader>nl"] = { query = "@loop.outer", desc = "Swap with next outer loop" },
["<leader>nf"] = { query = "@call.outer", desc = "Swap with next outer call" },
["<leader>nm"] = { query = "@function.outer", desc = "Swap with next outer function" },
["<leader>nk"] = { query = "@class.outer", desc = "Swap with next outer class" },
["<leader>nc"] = { query = "@comment.outer", desc = "Swap with next outer comment" },
["<leader>nA"] = { query = "@parameter.outer", desc = "Swap with next outer parameter" },
["<leader>nI"] = { query = "@conditional.inner", desc = "Swap with next inner conditional" },
["<leader>nL"] = { query = "@loop.inner", desc = "Swap with next inner loop" },
["<leader>nF"] = { query = "@call.inner", desc = "Swap with next inner call" },
["<leader>nM"] = { query = "@function.inner", desc = "Swap with next inner function" },
["<leader>nK"] = { query = "@class.inner", desc = "Swap with next inner class" },
["<leader>nC"] = { query = "@comment.inner", desc = "Swap with next inner comment" },
},
swap_previous = {
["<leader>pa"] = { query = "@parameter.inner", desc = "Swap with previous inner parameter" },
["<leader>pi"] = { query = "@conditional.outer", desc = "Swap with previous outer conditional" },
["<leader>pl"] = { query = "@loop.outer", desc = "Swap with previous outer loop" },
["<leader>pf"] = { query = "@call.outer", desc = "Swap with previous outer call" },
["<leader>pm"] = { query = "@function.outer", desc = "Swap with previous outer function" },
["<leader>pk"] = { query = "@class.outer", desc = "Swap with previous outer class" },
["<leader>pc"] = { query = "@comment.outer", desc = "Swap with previous outer comment" },
["<leader>pA"] = { query = "@parameter.outer", desc = "Swap with previous outer parameter" },
["<leader>pI"] = { query = "@conditional.inner", desc = "Swap with previous inner conditional" },
["<leader>pL"] = { query = "@loop.inner", desc = "Swap with previous inner loop" },
["<leader>pF"] = { query = "@call.inner", desc = "Swap with previous inner call" },
["<leader>pM"] = { query = "@function.inner", desc = "Swap with previous inner function" },
["<leader>pK"] = { query = "@class.inner", desc = "Swap with previous inner class" },
["<leader>pC"] = { query = "@comment.inner", desc = "Swap with previous inner comment" },
},
}
}
-- local ts_repeat_move = require "nvim-treesitter.textobjects.repeatable_move"
-- Repeat movement with ; and ,
-- vim.keymap.set({"n", "x", "o"}, ",", ts_repeat_move.repeat_last_move_next)
-- vim.keymap.set({"n", "x", "o"}, ",", ts_repeat_move.repeat_last_move_previous)
-- Optionnally, make builtin f, F, t, T also repeatable with ; and ,
-- vim.keymap.set({"n", "x", "o"}, "f", ts_repeat_move.builtin_f)
-- vim.keymap.set({"n", "x", "o"}, "F", ts_repeat_move.builtin_F)
-- vim.keymap.set({"n", "x", "o"}, "t", ts_repeat_move.builtin_t)
-- vim.keymap.set({"n", "x", "o"}, "T", ts_repeat_move.builtin_T)
return M
+174 -27
View File
@@ -3,6 +3,32 @@
local default_plugins = {
"nvim-lua/plenary.nvim",
"rebelot/kanagawa.nvim",
{
"iamcco/markdown-preview.nvim",
run = "cd app && npm install",
lazy = false,
setup = function()
vim.g.mkdp_filetypes = { "markdown" }
end,
ft = { "markdown" },
},
{"tpope/vim-fugitive", lazy=false},
{"rbong/vim-flog", lazy=false},
{"tpope/vim-surround", lazy=false},
{"tpope/vim-obsession", lazy=false},
{"preservim/tagbar", lazy=false},
{"ludovicchabant/vim-gutentags", lazy=false},
{"emaniacs/vim-rest-console", lazy=false},
{
"sindrets/diffview.nvim",
lazy=false,
opts = function()
return require "plugins.configs.diffview"
end,
},
{"nvim-telescope/telescope-fzf-native.nvim", build="make"},
{
"NvChad/base46",
@@ -19,7 +45,7 @@ local default_plugins = {
},
{
"NvChad/nvterm",
"zbirenbaum/nvterm",
init = function()
require("core.utils").load_mappings "nvterm"
end,
@@ -31,9 +57,7 @@ local default_plugins = {
{
"NvChad/nvim-colorizer.lua",
init = function()
require("core.utils").lazy_load "nvim-colorizer.lua"
end,
event = "User FilePost",
config = function(_, opts)
require("colorizer").setup(opts)
@@ -61,6 +85,7 @@ local default_plugins = {
init = function()
require("core.utils").lazy_load "indent-blankline.nvim"
end,
event = "User FilePost",
opts = function()
return require("plugins.configs.others").blankline
end,
@@ -73,9 +98,7 @@ local default_plugins = {
{
"nvim-treesitter/nvim-treesitter",
init = function()
require("core.utils").lazy_load "nvim-treesitter"
end,
event = { "BufReadPost", "BufNewFile" },
cmd = { "TSInstall", "TSBufEnable", "TSBufDisable", "TSModuleInfo" },
build = ":TSUpdate",
opts = function()
@@ -87,25 +110,20 @@ local default_plugins = {
end,
},
{
"nvim-treesitter/nvim-treesitter-textobjects",
lazy = false,
config = function()
require("nvim-treesitter.configs").setup(
require("plugins.configs.treesitter_textobjects")
)
end,
},
-- git stuff
{
"lewis6991/gitsigns.nvim",
ft = { "gitcommit", "diff" },
init = function()
-- load gitsigns only when a git file is opened
vim.api.nvim_create_autocmd({ "BufRead" }, {
group = vim.api.nvim_create_augroup("GitSignsLazyLoad", { clear = true }),
callback = function()
vim.fn.system("git -C " .. '"' .. vim.fn.expand "%:p:h" .. '"' .. " rev-parse")
if vim.v.shell_error == 0 then
vim.api.nvim_del_augroup_by_name "GitSignsLazyLoad"
vim.schedule(function()
require("lazy").load { plugins = { "gitsigns.nvim" } }
end)
end
end,
})
end,
event = "User FilePost",
opts = function()
return require("plugins.configs.others").gitsigns
end,
@@ -128,7 +146,9 @@ local default_plugins = {
-- custom nvchad cmd to install all mason binaries listed
vim.api.nvim_create_user_command("MasonInstallAll", function()
if opts.ensure_installed and #opts.ensure_installed > 0 then
vim.cmd("MasonInstall " .. table.concat(opts.ensure_installed, " "))
end
end, {})
vim.g.mason_binaries_list = opts.ensure_installed
@@ -137,9 +157,7 @@ local default_plugins = {
{
"neovim/nvim-lspconfig",
init = function()
require("core.utils").lazy_load "nvim-lspconfig"
end,
event = "User FilePost",
config = function()
require "plugins.configs.lspconfig"
end,
@@ -211,6 +229,107 @@ local default_plugins = {
end,
},
-- Save and load macro / register
{
"desdic/macrothis.nvim",
opts = {},
keys = {
{ "<Leader>kkd", function() require('macrothis').delete() end, desc = "Delete" },
{ "<Leader>kke", function() require('macrothis').edit() end, desc = "Edit" },
{ "<Leader>kkl", function() require('macrothis').load() end, desc = "Load" },
{ "<Leader>kkn", function() require('macrothis').rename() end, desc = "Rename" },
{ "<Leader>kkq", function() require('macrothis').quickfix() end, desc = "Run macro on all files in quickfix" },
{ "<Leader>kkr", function() require('macrothis').run() end, desc = "Run macro" },
{ "<Leader>kks", function() require('macrothis').save() end, desc = "Save" },
{ "<Leader>kkx", function() require('macrothis').register() end, desc = "Edit register" },
{ "<Leader>kkp", function() require('macrothis').copy_register_printable() end, desc = "Copy register as printable" },
{ "<Leader>kkm", function() require('macrothis').copy_macro_printable() end, desc = "Copy macro as printable" },
}
},
{
"onsails/diaglist.nvim",
lazy=false,
debug=false,
},
{
"anuvyklack/hydra.nvim",
lazy=false,
},
{
"gioele/vim-autoswap",
lazy=false,
},
{
"natecraddock/workspaces.nvim",
lazy=false,
config = function()
require("workspaces").setup({
hooks = {
open = {"Telescope find_files"},
}
})
end,
},
{
"mangelozzi/rgflow.nvim",
lazy=false,
config = function()
require("rgflow").setup({
-- Set the default rip grep flags and options for when running a search via
-- RgFlow. Once changed via the UI, the previous search flags are used for
-- each subsequent search (until Neovim restarts).
cmd_flags = "--smart-case --fixed-strings --ignore --max-columns 200",
-- Mappings to trigger RgFlow functions
default_trigger_mappings = true,
-- These mappings are only active when the RgFlow UI (panel) is open
default_ui_mappings = true,
-- QuickFix window only mapping
default_quickfix_mappings = true,
})
end,
},
{
"yorickpeterse/nvim-window",
lazy=false,
config = function()
require('nvim-window').setup({
normal_hl = 'Normal',
hint_hl = 'Bold',
border = 'single'
})
end,
},
{
"sindrets/winshift.nvim",
lazy=false,
},
{
"kdheepak/lazygit.nvim",
lazy=false,
config = function()
require("lazy").setup({
{
"kdheepak/lazygit.nvim",
-- optional for floating window border decoration
dependencies = {
"nvim-lua/plenary.nvim",
},
},
})
end,
},
-- file managing , picker etc
{
"nvim-tree/nvim-tree.lua",
@@ -229,7 +348,7 @@ local default_plugins = {
{
"nvim-telescope/telescope.nvim",
dependencies = { "nvim-treesitter/nvim-treesitter", { "nvim-telescope/telescope-fzf-native.nvim", build = "make" } },
dependencies = { "nvim-treesitter/nvim-treesitter" },
cmd = "Telescope",
init = function()
require("core.utils").load_mappings "telescope"
@@ -252,6 +371,7 @@ local default_plugins = {
-- Only load whichkey after all the gui
{
"folke/which-key.nvim",
lazy=false,
keys = { "<leader>", "<c-r>", "<c-w>", '"', "'", "`", "c", "v", "g" },
init = function()
require("core.utils").load_mappings "whichkey"
@@ -262,6 +382,32 @@ local default_plugins = {
require("which-key").setup(opts)
end,
},
{
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = { "nvim-lua/plenary.nvim" }
},
{
"folke/noice.nvim",
event = "VeryLazy",
opts = function()
return require "plugins.configs.noice"
end,
dependencies = {
"MunifTanjim/nui.nvim",
-- "rcarriga/nvim-notify",
},
},
{
"folke/todo-comments.nvim",
lazy=false,
dependencies = { "nvim-lua/plenary.nvim" },
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
}
}
}
local config = require("core.utils").load_config()
@@ -271,3 +417,4 @@ if #config.plugins > 0 then
end
require("lazy").setup(default_plugins, config.lazy_nvim)
require "plugins.configs.ruff_lsp"