Compare commits

...

10 Commits

Author SHA1 Message Date
siduck
bb731ccbbb rm termguicolors opt as its loaded in base46 2024-03-05 21:37:22 +05:30
siduck
440ef81bc4 misc 2024-03-05 08:35:52 +05:30
siduck
d0af27648a disable semantic tokens in on_init, in lspconfig.lua 2024-03-05 08:01:37 +05:30
siduck
2eac8906fc add tabufline order syntax 2024-03-03 22:12:12 +05:30
siduck
16fadf9e0d add stl order/modules opts 2024-03-02 16:50:55 +05:30
Gabriels
960509e585
FIX: lsp_signature_help() mapping (#2698)
* fix: change lsp_signature_help() mapping

* imp: change mapping
2024-03-01 06:34:31 +05:30
siduck
db95e7e1fd change branch for ui 2024-02-29 22:39:01 +05:30
Sidhanth Rathod
3fa6e3bade
Clean Mapping syntax & some modules (#2695)
* clean mapping syntax

* rm useless util function

* add some vim* tsparsers in treesitter config

* misc clean

* misc clean 2

* add mason bootstrap in main bootstrap file only

* misc

* rm un-needed dofile call
2024-02-29 21:57:31 +05:30
Jhon Vidal
9414658e35
fix: mapping update for new version of indent-blankline plugin (#2683)
* fix: mapping update for new version of indent-blankline plugin

obsolete function, correcting for the new version of said indent-blankline plugin

* improve blankline mapping
---------

Co-authored-by: Sidhanth Rathod <siduck@tutanota.com>
2024-02-23 07:58:59 +05:30
siduck
ddef3aa172 add default hlgroup for term wins 2024-02-19 20:39:38 +05:30
14 changed files with 377 additions and 782 deletions

View File

@ -1,12 +1,6 @@
require "core" require "core"
local custom_init_path = vim.api.nvim_get_runtime_file("lua/custom/init.lua", false)[1] pcall(require, 'custom')
if custom_init_path then
dofile(custom_init_path)
end
require("core.utils").load_mappings()
local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim" local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
@ -19,3 +13,7 @@ end
dofile(vim.g.base46_cache .. "defaults") dofile(vim.g.base46_cache .. "defaults")
vim.opt.rtp:prepend(lazypath) vim.opt.rtp:prepend(lazypath)
require "plugins" require "plugins"
vim.schedule(function()
require "core.mappings"
end, 0)

View File

@ -33,7 +33,15 @@ M.lazy = function(install_path)
require "plugins" require "plugins"
-- mason packages & show post_bootstrap screen -- mason packages & show post_bootstrap screen
require "nvchad.post_install"() vim.cmd "MasonInstallAll"
local lastpkg = vim.g.mason_binaries_list[#vim.g.mason_binaries_list]
-- Keep track of which mason pkgs get installed
require("mason-registry"):on("package:install:success", function(pkg)
if tostring(pkg) == "Package(name=" .. lastpkg .. ")" then
print "All done! Now read nvchad.com "
end
end)
end end
M.gen_chadrc_template = function() M.gen_chadrc_template = function()

View File

@ -1,122 +0,0 @@
local M = {}
M.options = {
nvchad_branch = "v3.0",
}
M.ui = {
------------------------------- base46 -------------------------------------
-- hl = highlights
hl_add = {},
hl_override = {},
changed_themes = {},
theme_toggle = { "onedark", "one_light" },
theme = "onedark", -- default theme
transparency = false,
-- cmp themeing
cmp = {
icons = true,
lspkind_text = true,
style = "default", -- default/flat_light/flat_dark/atom/atom_colored
border_color = "grey_fg", -- only applicable for "default" style, use color names from base30 variables
selected_item_bg = "colored", -- colored / simple
},
telescope = { style = "borderless" }, -- borderless / bordered
------------------------------- nvchad_ui modules -----------------------------
statusline = {
theme = "default", -- default/vscode/vscode_colored/minimal
-- default/round/block/arrow separators work only for default statusline theme
-- round and block will work for minimal theme only
separator_style = "default",
overriden_modules = nil,
},
-- lazyload it when there are 1+ buffers
tabufline = {
show_numbers = false,
enabled = true,
lazyload = true,
overriden_modules = nil,
},
-- nvdash (dashboard)
nvdash = {
load_on_startup = false,
header = {
" ▄ ▄ ",
" ▄ ▄▄▄ ▄ ▄▄▄ ▄ ▄ ",
" █ ▄ █▄█ ▄▄▄ █ █▄█ █ █ ",
" ▄▄ █▄█▄▄▄█ █▄█▄█▄▄█▄▄█ █ ",
" ▄ █▄▄█ ▄ ▄▄ ▄█ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ",
" █▄▄▄▄ ▄▄▄ █ ▄ ▄▄▄ ▄ ▄▄▄ ▄ ▄ █ ▄",
"▄ █ █▄█ █▄█ █ █ █▄█ █ █▄█ ▄▄▄ █ █",
"█▄█ ▄ █▄▄█▄▄█ █ ▄▄█ █ ▄ █ █▄█▄█ █",
" █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ █▄█▄▄▄█ ",
},
buttons = {
{ " Find File", "Spc f f", "Telescope find_files" },
{ "󰈚 Recent Files", "Spc f o", "Telescope oldfiles" },
{ "󰈭 Find Word", "Spc f w", "Telescope live_grep" },
{ " Bookmarks", "Spc m a", "Telescope marks" },
{ " Themes", "Spc t h", "Telescope themes" },
{ " Mappings", "Spc c h", "NvCheatsheet" },
},
},
cheatsheet = { theme = "grid" }, -- simple/grid
lsp = {
signature = true,
semantic_tokens = false,
},
term = {
sizes = { sp = 0.3, vsp = 0.2 },
float = {
relative = "editor",
row = 0.3,
col = 0.25,
width = 0.5,
height = 0.4,
border = "single",
},
behavior = {
auto_insert = true,
},
},
}
M.plugins = "" -- path i.e "custom.plugins", so make custom/plugins.lua file
M.lazy_nvim = require "plugins.configs.lazy_nvim" -- config for lazy.nvim startup options
M.mappings = require "core.mappings"
M.base46 = {
integrations = {
"blankline",
"cmp",
"defaults",
"devicons",
"git",
"lsp",
"mason",
"nvchad_updater",
"nvcheatsheet",
"nvdash",
"nvimtree",
"statusline",
"syntax",
"treesitter",
"tbline",
"telescope",
"whichkey",
},
}
return M

View File

@ -36,7 +36,6 @@ opt.shortmess:append "sI"
opt.signcolumn = "yes" opt.signcolumn = "yes"
opt.splitbelow = true opt.splitbelow = true
opt.splitright = true opt.splitright = true
opt.termguicolors = true
opt.timeoutlen = 400 opt.timeoutlen = 400
opt.undofile = true opt.undofile = true
@ -89,14 +88,15 @@ autocmd("BufWritePost", {
-- statusline -- statusline
if config.ui.statusline.theme ~= "custom" then if config.ui.statusline.theme ~= "custom" then
require("plenary.reload").reload_module("nvchad.statusline." .. config.ui.statusline.theme) require("plenary.reload").reload_module "nvchad.stl.utils"
vim.opt.statusline = "%!v:lua.require('nvchad.statusline." .. config.ui.statusline.theme .. "').run()" require("plenary.reload").reload_module("nvchad.stl." .. config.ui.statusline.theme)
vim.opt.statusline = "%!v:lua.require('nvchad.stl." .. config.ui.statusline.theme .. "')()"
end end
-- tabufline -- tabufline
if config.ui.tabufline.enabled then if config.ui.tabufline.enabled then
require("plenary.reload").reload_module "nvchad.tabufline.modules" require("plenary.reload").reload_module "nvchad.tabufline.modules"
vim.opt.tabline = "%!v:lua.require('nvchad.tabufline.modules').run()" vim.opt.tabline = "%!v:lua.require('nvchad.tabufline.modules')()"
end end
require("base46").load_all_highlights() require("base46").load_all_highlights()

View File

@ -1,474 +1,135 @@
-- n, v, i, t = mode names local map = vim.keymap.set
local M = {} map("i", "<C-b>", "<ESC>^i", { desc = "Move Beginning of line" })
map("i", "<C-e>", "<End>", { desc = "Move End of line" })
M.general = { map("i", "<C-h>", "<Left>", { desc = "Move Left" })
i = { map("i", "<C-l>", "<Right>", { desc = "Move Right" })
-- go to beginning and end map("i", "<C-j>", "<Down>", { desc = "Move Down" })
["<C-b>"] = { "<ESC>^i", "Beginning of line" }, map("i", "<C-k>", "<Up>", { desc = "Move Up" })
["<C-e>"] = { "<End>", "End of line" },
map("n", "<Esc>", "<cmd>noh<CR>", { desc = "General Clear highlights" })
-- navigate within insert mode
["<C-h>"] = { "<Left>", "Move left" }, map("n", "<C-h>", "<C-w>h", { desc = "Switch Window left" })
["<C-l>"] = { "<Right>", "Move right" }, map("n", "<C-l>", "<C-w>l", { desc = "Switch Window right" })
["<C-j>"] = { "<Down>", "Move down" }, map("n", "<C-j>", "<C-w>j", { desc = "Switch Window down" })
["<C-k>"] = { "<Up>", "Move up" }, map("n", "<C-k>", "<C-w>k", { desc = "Switch Window up" })
},
map("n", "<C-s>", "<cmd>w<CR>", { desc = "File Save" })
n = { map("n", "<C-c>", "<cmd>%y+<CR>", { desc = "File Copy whole" })
["<Esc>"] = { "<cmd> noh <CR>", "Clear highlights" },
-- switch between windows map("n", "<leader>n", "<cmd>set nu!<CR>", { desc = "Toggle Line number" })
["<C-h>"] = { "<C-w>h", "Window left" }, map("n", "<leader>rn", "<cmd>set rnu!<CR>", { desc = "Toggle Relative number" })
["<C-l>"] = { "<C-w>l", "Window right" }, map("n", "<leader>ch", "<cmd>NvCheatsheet<CR>", { desc = "Toggle NvCheatsheet" })
["<C-j>"] = { "<C-w>j", "Window down" },
["<C-k>"] = { "<C-w>k", "Window up" }, -- global lsp mappings
map("n", "<leader>fm", function()
-- save vim.lsp.buf.format { async = true }
["<C-s>"] = { "<cmd> w <CR>", "Save file" }, end, { desc = "Lsp formatting" })
-- Copy all map("n", "<leader>lf", vim.diagnostic.open_float, { desc = "Lsp floating diagnostics" })
["<C-c>"] = { "<cmd> %y+ <CR>", "Copy whole file" }, map("n", "[d", vim.diagnostic.goto_prev, { desc = "Lsp prev diagnostic" })
map("n", "]d", vim.diagnostic.goto_next, { desc = "Lsp next diagnostic" })
-- line numbers map("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Lsp diagnostic loclist" })
["<leader>n"] = { "<cmd> set nu! <CR>", "Toggle line number" },
["<leader>rn"] = { "<cmd> set rnu! <CR>", "Toggle relative number" }, -- tabufline
map("n", "<leader>b", "<cmd>enew<CR>", { desc = "Buffer New" })
-- 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/ map("n", "<tab>", function()
-- empty mode is same as using <cmd> :map require("nvchad.tabufline").next()
-- also don't use g[j|k] when in operator pending mode, so it doesn't alter d, y or c behaviour end, { desc = "Buffer Goto next" })
["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 } }, map("n", "<S-tab>", function()
["<Up>"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move up", opts = { expr = true } }, require("nvchad.tabufline").prev()
["<Down>"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } }, end, { desc = "Buffer Goto prev" })
-- new buffer map("n", "<leader>x", function()
["<leader>b"] = { "<cmd> enew <CR>", "New buffer" }, require("nvchad.tabufline").close_buffer()
["<leader>ch"] = { "<cmd> NvCheatsheet <CR>", "Mapping cheatsheet" }, end, { desc = "Buffer Close" })
["<leader>fm"] = { -- Comment
function() map("n", "<leader>/", function()
vim.lsp.buf.format { async = true } require("Comment.api").toggle.linewise.current()
end, end, { desc = "Comment Toggle" })
"LSP formatting",
}, map(
}, "v",
"<leader>/",
t = { "<ESC><cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR>",
["<C-x>"] = { vim.api.nvim_replace_termcodes("<C-\\><C-N>", true, true, true), "Escape terminal mode" }, { desc = "Comment Toggle" }
}, )
v = { -- nvimtree
["<Up>"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move up", opts = { expr = true } }, map("n", "<C-n>", "<cmd>NvimTreeToggle<CR>", { desc = "Nvimtree Toggle window" })
["<Down>"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } }, map("n", "<leader>e", "<cmd>NvimTreeFocus<CR>", { desc = "Nvimtree Focus window" })
["<"] = { "<gv", "Indent line" },
[">"] = { ">gv", "Indent line" }, -- telescope
}, map("n", "<leader>fw", "<cmd>Telescope live_grep<CR>", { desc = "Telescope Live grep" })
map("n", "<leader>fb", "<cmd>Telescope buffers<CR>", { desc = "Telescope Find buffers" })
x = { map("n", "<leader>fh", "<cmd>Telescope help_tags<CR>", { desc = "Telescope Help page" })
["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 } }, map("n", "<leader>fo", "<cmd>Telescope oldfiles<CR>", { desc = "Telescope Find oldfiles" })
-- Don't copy the replaced text after pasting in visual mode map("n", "<leader>fz", "<cmd>Telescope current_buffer_fuzzy_find<CR>", { desc = "Telescope Find in current buffer" })
-- https://vim.fandom.com/wiki/Replace_a_word_with_yanked_text#Alternative_mapping_for_paste map("n", "<leader>cm", "<cmd>Telescope git_commits<CR>", { desc = "Telescope Git commits" })
["p"] = { 'p:let @+=@0<CR>:let @"=@0<CR>', "Dont copy replaced text", opts = { silent = true } }, map("n", "<leader>gt", "<cmd>Telescope git_status<CR>", { desc = "Telescope Git status" })
}, map("n", "<leader>pt", "<cmd>Telescope terms<CR>", { desc = "Telescope Pick hidden term" })
} map("n", "<leader>th", "<cmd>Telescope themes<CR>", { desc = "Telescope Nvchad themes" })
map("n", "<leader>ff", "<cmd>Telescope find_files<cr>", { desc = "Telescope Find files" })
M.tabufline = { map(
plugin = true, "n",
"<leader>fa",
n = { "<cmd>Telescope find_files follow=true no_ignore=true hidden=true<CR>",
-- cycle through buffers { desc = "Telescope Find all files" }
["<tab>"] = { )
function()
require("nvchad.tabufline").tabuflineNext() -- terminal
end, map("t", "<C-x>", "<C-\\><C-N>", { desc = "Terminal Escape terminal mode" })
"Goto next buffer",
}, map("n", "<leader>h", function()
require("nvchad.term").new { pos = "sp", size = 0.3 }
["<S-tab>"] = { end, { desc = "Terminal New horizontal term" })
function()
require("nvchad.tabufline").tabuflinePrev() map("n", "<leader>v", function()
end, require("nvchad.term").new { pos = "vsp", size = 0.3 }
"Goto prev buffer", end, { desc = "Terminal New vertical term" })
},
map({ "n", "t" }, "<A-v>", function()
-- close buffer + hide terminal buffer require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm", size = 0.3 }
["<leader>x"] = { end, { desc = "Terminal Toggleable vertical term" })
function()
require("nvchad.tabufline").close_buffer() map({ "n", "t" }, "<A-h>", function()
end, require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm", size = 0.2 }
"Close buffer", end, { desc = "Terminal New horizontal term" })
},
}, map({ "n", "t" }, "<A-i>", function()
} require("nvchad.term").toggle { pos = "float", id = "floatTerm" }
end, { desc = "Terminal Toggle Floating term" })
M.comment = {
plugin = true, map("t", "<ESC>", function()
local win = vim.api.nvim_get_current_win()
-- toggle comment in both modes vim.api.nvim_win_close(win, true)
n = { end, { desc = "Terminal Close term in terminal mode" })
["<leader>/"] = {
function() -- whichkey
require("Comment.api").toggle.linewise.current() map("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "Whichkey all keymaps" })
end,
"Toggle comment", map("n", "<leader>wk", function()
}, vim.cmd("WhichKey " .. vim.fn.input "WhichKey: ")
}, end, { desc = "Whichkey query lookup" })
v = { -- blankline
["<leader>/"] = { map("n", "<leader>cc", function()
"<ESC><cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR>", local config = { scope = {} }
"Toggle comment", config.scope.exclude = { language = {}, node_type = {} }
}, config.scope.include = { node_type = {} }
}, local node = require("ibl.scope").get(vim.api.nvim_get_current_buf(), config)
}
if node then
M.lspconfig = { local start_row, _, end_row, _ = node:range()
plugin = true, if start_row ~= end_row then
vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start_row + 1, 0 })
-- See `<cmd> :help vim.lsp.*` for documentation on any of the below functions vim.api.nvim_feedkeys("_", "n", true)
end
n = { end
["gD"] = { end, { desc = "Blankline Jump to current context" })
function()
vim.lsp.buf.declaration() pcall(require, "custom.mappings")
end,
"LSP declaration",
},
["gd"] = {
function()
vim.lsp.buf.definition()
end,
"LSP definition",
},
["K"] = {
function()
vim.lsp.buf.hover()
end,
"LSP hover",
},
["gi"] = {
function()
vim.lsp.buf.implementation()
end,
"LSP implementation",
},
["<leader>ls"] = {
function()
vim.lsp.buf.signature_help()
end,
"LSP signature help",
},
["<leader>D"] = {
function()
vim.lsp.buf.type_definition()
end,
"LSP definition type",
},
["<leader>ra"] = {
function()
require("nvchad.renamer").open()
end,
"LSP rename",
},
["<leader>ca"] = {
function()
vim.lsp.buf.code_action()
end,
"LSP code action",
},
["gr"] = {
function()
vim.lsp.buf.references()
end,
"LSP references",
},
["<leader>lf"] = {
function()
vim.diagnostic.open_float { border = "rounded" }
end,
"Floating diagnostic",
},
["[d"] = {
function()
vim.diagnostic.goto_prev { float = { border = "rounded" } }
end,
"Goto prev",
},
["]d"] = {
function()
vim.diagnostic.goto_next { float = { border = "rounded" } }
end,
"Goto next",
},
["<leader>q"] = {
function()
vim.diagnostic.setloclist()
end,
"Diagnostic setloclist",
},
["<leader>wa"] = {
function()
vim.lsp.buf.add_workspace_folder()
end,
"Add workspace folder",
},
["<leader>wr"] = {
function()
vim.lsp.buf.remove_workspace_folder()
end,
"Remove workspace folder",
},
["<leader>wl"] = {
function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end,
"List workspace folders",
},
},
v = {
["<leader>ca"] = {
function()
vim.lsp.buf.code_action()
end,
"LSP code action",
},
},
}
M.nvimtree = {
plugin = true,
n = {
-- toggle
["<C-n>"] = { "<cmd> NvimTreeToggle <CR>", "Toggle nvimtree" },
-- focus
["<leader>e"] = { "<cmd> NvimTreeFocus <CR>", "Focus nvimtree" },
},
}
M.telescope = {
plugin = true,
n = {
-- 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" },
["<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" },
-- git
["<leader>cm"] = { "<cmd> Telescope git_commits <CR>", "Git commits" },
["<leader>gt"] = { "<cmd> Telescope git_status <CR>", "Git status" },
-- pick a hidden term
["<leader>pt"] = { "<cmd> Telescope terms <CR>", "Pick hidden term" },
-- theme switcher
["<leader>th"] = { "<cmd> Telescope themes <CR>", "Nvchad themes" },
["<leader>ma"] = { "<cmd> Telescope marks <CR>", "telescope bookmarks" },
},
}
M.terminal = {
n = {
-- spawn new terms
["<leader>h"] = {
function()
require("nvchad.term").new { pos = "sp", size = 0.3 }
end,
"New horizontal term",
},
["<leader>v"] = {
function()
require("nvchad.term").new { pos = "vsp", size = 0.3 }
end,
"New vertical term",
},
-- toggle terms
["<A-v>"] = {
function()
require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm", size = 0.3 }
end,
"New vertical term",
},
["<A-h>"] = {
function()
require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm", size = 0.2 }
end,
"New vertical term",
},
["<A-i>"] = {
function()
require("nvchad.term").toggle { pos = "float", id = "floatTerm" }
end,
"Toggleable Floating term",
},
},
-- toggle terms in terminal mode
t = {
["<ESC>"] = {
function()
local win = vim.api.nvim_get_current_win()
vim.api.nvim_win_close(win, true)
end,
"close term in terminal mode",
},
["<A-v>"] = {
function()
require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm" }
end,
"New vertical term",
},
["<A-h>"] = {
function()
require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm" }
end,
"New vertical term",
},
["<A-i>"] = {
function()
require("nvchad.term").toggle { pos = "float", id = "floatTerm" }
end,
"Toggleable Floating term",
},
},
}
M.whichkey = {
plugin = true,
n = {
["<leader>wK"] = {
function()
vim.cmd "WhichKey"
end,
"Which-key all keymaps",
},
["<leader>wk"] = {
function()
local input = vim.fn.input "WhichKey: "
vim.cmd("WhichKey " .. input)
end,
"Which-key query lookup",
},
},
}
M.blankline = {
plugin = true,
n = {
["<leader>cc"] = {
function()
local ok, start = require("indent_blankline.utils").get_current_context(
vim.g.indent_blankline_context_patterns,
vim.g.indent_blankline_use_treesitter_scope
)
if ok then
vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start, 0 })
vim.cmd [[normal! _]]
end
end,
"Jump to current context",
},
},
}
M.gitsigns = {
plugin = true,
n = {
-- Navigation through hunks
["]c"] = {
function()
if vim.wo.diff then
return "]c"
end
vim.schedule(function()
require("gitsigns").next_hunk()
end)
return "<Ignore>"
end,
"Jump to next hunk",
opts = { expr = true },
},
["[c"] = {
function()
if vim.wo.diff then
return "[c"
end
vim.schedule(function()
require("gitsigns").prev_hunk()
end)
return "<Ignore>"
end,
"Jump to prev hunk",
opts = { expr = true },
},
-- Actions
["<leader>rh"] = {
function()
require("gitsigns").reset_hunk()
end,
"Reset hunk",
},
["<leader>ph"] = {
function()
require("gitsigns").preview_hunk()
end,
"Preview hunk",
},
["<leader>gb"] = {
function()
package.loaded.gitsigns.blame_line()
end,
"Blame line",
},
["<leader>td"] = {
function()
require("gitsigns").toggle_deleted()
end,
"Toggle deleted",
},
},
}
return M

View File

@ -1,90 +0,0 @@
local M = {}
local merge_tb = vim.tbl_deep_extend
M.load_config = function()
local config = require "core.default_config"
local chadrc_path = vim.api.nvim_get_runtime_file("lua/custom/chadrc.lua", false)[1]
if chadrc_path then
local chadrc = dofile(chadrc_path)
config.mappings = M.remove_disabled_keys(chadrc.mappings, config.mappings)
config = merge_tb("force", config, chadrc)
config.mappings.disabled = nil
end
return config
end
M.remove_disabled_keys = function(chadrc_mappings, default_mappings)
if not chadrc_mappings then
return default_mappings
end
-- store keys in a array with true value to compare
local keys_to_disable = {}
for _, mappings in pairs(chadrc_mappings) do
for mode, section_keys in pairs(mappings) do
if not keys_to_disable[mode] then
keys_to_disable[mode] = {}
end
section_keys = (type(section_keys) == "table" and section_keys) or {}
for k, _ in pairs(section_keys) do
keys_to_disable[mode][k] = true
end
end
end
-- make a copy as we need to modify default_mappings
for section_name, section_mappings in pairs(default_mappings) do
for mode, mode_mappings in pairs(section_mappings) do
mode_mappings = (type(mode_mappings) == "table" and mode_mappings) or {}
for k, _ in pairs(mode_mappings) do
-- if key if found then remove from default_mappings
if keys_to_disable[mode] and keys_to_disable[mode][k] then
default_mappings[section_name][mode][k] = nil
end
end
end
end
return default_mappings
end
M.load_mappings = function(section, mapping_opt)
vim.schedule(function()
local function set_section_map(section_values)
if section_values.plugin then
return
end
section_values.plugin = nil
for mode, mode_values in pairs(section_values) do
local default_opts = merge_tb("force", { mode = mode }, mapping_opt or {})
for keybind, mapping_info in pairs(mode_values) do
-- merge default + user opts
local opts = merge_tb("force", default_opts, mapping_info.opts or {})
mapping_info.opts, opts.mode = nil, nil
opts.desc = mapping_info[2]
vim.keymap.set(mode, keybind, mapping_info[1], opts)
end
end
end
local mappings = require("nvconfig").mappings
if type(section) == "string" then
mappings[section]["plugin"] = nil
mappings = { mappings[section] }
end
for _, sect in pairs(mappings) do
set_section_map(sect)
end
end)
end
return M

View File

@ -1,2 +1,128 @@
-- check default config at core/default_config.lua local M = {}
return require("core.utils").load_config()
M.options = {
nvchad_branch = "v3.0",
}
M.ui = {
------------------------------- base46 -------------------------------------
-- hl = highlights
hl_add = {},
hl_override = {},
changed_themes = {},
theme_toggle = { "onedark", "one_light" },
theme = "onedark", -- default theme
transparency = false,
-- cmp themeing
cmp = {
icons = true,
lspkind_text = true,
style = "default", -- default/flat_light/flat_dark/atom/atom_colored
},
telescope = { style = "borderless" }, -- borderless / bordered
------------------------------- nvchad_ui modules -----------------------------
statusline = {
theme = "default", -- default/vscode/vscode_colored/minimal
-- default/round/block/arrow separators work only for default statusline theme
-- round and block will work for minimal theme only
separator_style = "default",
order = nil,
modules = {},
},
-- lazyload it when there are 1+ buffers
tabufline = {
enabled = true,
lazyload = true,
order = { "treeOffset", "buffers", "tabs", "btns" },
modules = {},
},
-- nvdash (dashboard)
nvdash = {
load_on_startup = false,
header = {
" ▄ ▄ ",
" ▄ ▄▄▄ ▄ ▄▄▄ ▄ ▄ ",
" █ ▄ █▄█ ▄▄▄ █ █▄█ █ █ ",
" ▄▄ █▄█▄▄▄█ █▄█▄█▄▄█▄▄█ █ ",
" ▄ █▄▄█ ▄ ▄▄ ▄█ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ",
" █▄▄▄▄ ▄▄▄ █ ▄ ▄▄▄ ▄ ▄▄▄ ▄ ▄ █ ▄",
"▄ █ █▄█ █▄█ █ █ █▄█ █ █▄█ ▄▄▄ █ █",
"█▄█ ▄ █▄▄█▄▄█ █ ▄▄█ █ ▄ █ █▄█▄█ █",
" █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ █▄█▄▄▄█ ",
},
buttons = {
{ " Find File", "Spc f f", "Telescope find_files" },
{ "󰈚 Recent Files", "Spc f o", "Telescope oldfiles" },
{ "󰈭 Find Word", "Spc f w", "Telescope live_grep" },
{ " Bookmarks", "Spc m a", "Telescope marks" },
{ " Themes", "Spc t h", "Telescope themes" },
{ " Mappings", "Spc c h", "NvCheatsheet" },
},
},
cheatsheet = { theme = "grid" }, -- simple/grid
lsp = {
signature = true,
semantic_tokens = false,
},
term = {
hl = "Normal:term,WinSeparator:WinSeparator",
sizes = { sp = 0.3, vsp = 0.2 },
float = {
relative = "editor",
row = 0.3,
col = 0.25,
width = 0.5,
height = 0.4,
border = "single",
},
behavior = {
auto_insert = true,
},
},
}
M.plugins = "" -- path i.e "custom.plugins", so make custom/plugins.lua file
M.lazy_nvim = require "plugins.configs.lazy_nvim" -- config for lazy.nvim startup options
M.base46 = {
integrations = {
"blankline",
"cmp",
"defaults",
"devicons",
"git",
"lsp",
"mason",
"nvchad_updater",
"nvcheatsheet",
"nvdash",
"nvimtree",
"statusline",
"syntax",
"treesitter",
"tbline",
"telescope",
"whichkey",
},
}
local chadrc_exists, chadrc = pcall(require, "custom.chadrc")
if chadrc_exists then
M = vim.tbl_deep_extend("force", M, chadrc)
end
return M

View File

@ -75,10 +75,12 @@ local options = {
["<C-f>"] = cmp.mapping.scroll_docs(4), ["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(), ["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(), ["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm { ["<CR>"] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Insert, behavior = cmp.ConfirmBehavior.Insert,
select = true, select = true,
}, },
["<Tab>"] = cmp.mapping(function(fallback) ["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then if cmp.visible() then
cmp.select_next_item() cmp.select_next_item()
@ -87,10 +89,8 @@ local options = {
else else
fallback() fallback()
end end
end, { end, { "i", "s" }),
"i",
"s",
}),
["<S-Tab>"] = cmp.mapping(function(fallback) ["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then if cmp.visible() then
cmp.select_prev_item() cmp.select_prev_item()
@ -99,10 +99,7 @@ local options = {
else else
fallback() fallback()
end end
end, { end, { "i", "s" }),
"i",
"s",
}),
}, },
sources = { sources = {
{ name = "nvim_lsp" }, { name = "nvim_lsp" },

View File

@ -0,0 +1,26 @@
local options = {
signs = {
add = { text = "" },
change = { text = "" },
delete = { text = "󰍵" },
topdelete = { text = "" },
changedelete = { text = "~" },
untracked = { text = "" },
},
on_attach = function(bufnr)
local gs = package.loaded.gitsigns
local function opts(desc)
return { buffer = bufnr, desc = desc }
end
local map = vim.keymap.set
map("n", "<leader>rh", gs.reset_hunk, opts "Reset Hunk")
map("n", "<leader>ph", gs.preview_hunk, opts "Preview Hunk")
map("n", "<leader>gb", gs.blame_line, opts "Blame Line")
end,
}
return options

View File

@ -1,20 +1,45 @@
local M = {} local M = {}
local map = vim.keymap.set
local conf = require("nvconfig").ui.lsp
-- export on_attach & capabilities for custom lspconfigs -- export on_attach & capabilities for custom lspconfigs
M.on_attach = function(client, bufnr) M.on_attach = function(client, bufnr)
local utils = require "core.utils" local function opts(desc)
local conf = require("nvconfig").ui.lsp return { buffer = bufnr, desc = desc }
-- semanticTokens
if not conf.semantic_tokens and client.supports_method "textDocument/semanticTokens" then
client.server_capabilities.semanticTokensProvider = nil
end end
map("n", "gD", vim.lsp.buf.declaration, opts "Lsp Go to declaration")
map("n", "gd", vim.lsp.buf.definition, opts "Lsp Go to definition")
map("n", "K", vim.lsp.buf.hover, opts "Lsp hover information")
map("n", "gi", vim.lsp.buf.implementation, opts "Lsp Go to implementation")
map("n", "<leader>sh", vim.lsp.buf.signature_help, opts "Lsp Show signature help")
map("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts "Lsp Add workspace folder")
map("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts "Lsp Remove workspace folder")
map("n", "<leader>wl", function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, opts "Lsp List workspace folders")
map("n", "<leader>D", vim.lsp.buf.type_definition, opts "Lsp Go to type definition")
map("n", "<leader>ra", function()
require "nvchad.renamer"()
end, opts "Lsp NvRenamer")
map({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts "Lsp Code action")
map("n", "gr", vim.lsp.buf.references, opts "Lsp Show references")
-- setup signature popup
if conf.signature and client.server_capabilities.signatureHelpProvider then if conf.signature and client.server_capabilities.signatureHelpProvider then
require("nvchad.signature").setup(client, bufnr) require("nvchad.signature").setup(client, bufnr)
end end
end
utils.load_mappings("lspconfig", { buffer = bufnr }) -- disable semanticTokens
M.on_init = function(client, _)
if not conf.semantic_tokens and client.supports_method "textDocument/semanticTokens" then
client.server_capabilities.semanticTokensProvider = nil
end
end end
M.capabilities = vim.lsp.protocol.make_client_capabilities() M.capabilities = vim.lsp.protocol.make_client_capabilities()
@ -44,6 +69,7 @@ M.defaults = function()
require("lspconfig").lua_ls.setup { require("lspconfig").lua_ls.setup {
on_attach = M.on_attach, on_attach = M.on_attach,
capabilities = M.capabilities, capabilities = M.capabilities,
on_init = M.on_init,
settings = { settings = {
Lua = { Lua = {

View File

@ -0,0 +1,23 @@
-- vscode format
require("luasnip.loaders.from_vscode").lazy_load()
require("luasnip.loaders.from_vscode").lazy_load { paths = "your path!" }
require("luasnip.loaders.from_vscode").lazy_load { paths = vim.g.vscode_snippets_path or "" }
-- snipmate format
require("luasnip.loaders.from_snipmate").load()
require("luasnip.loaders.from_snipmate").lazy_load { paths = vim.g.snipmate_snippets_path or "" }
-- lua format
require("luasnip.loaders.from_lua").load()
require("luasnip.loaders.from_lua").lazy_load { paths = vim.g.lua_snippets_path or "" }
vim.api.nvim_create_autocmd("InsertLeave", {
callback = function()
if
require("luasnip").session.current_nodes[vim.api.nvim_get_current_buf()]
and not require("luasnip").session.jump_active
then
require("luasnip").unlink_current()
end
end,
})

View File

@ -1,50 +0,0 @@
local M = {}
local utils = require "core.utils"
M.blankline = {
indent = { char = "", highlight = "IblChar" },
scope = { char = "", highlight = "IblScopeChar" },
}
M.luasnip = function(opts)
require("luasnip").config.set_config(opts)
-- vscode format
require("luasnip.loaders.from_vscode").lazy_load()
require("luasnip.loaders.from_vscode").lazy_load { paths = vim.g.vscode_snippets_path or "" }
-- snipmate format
require("luasnip.loaders.from_snipmate").load()
require("luasnip.loaders.from_snipmate").lazy_load { paths = vim.g.snipmate_snippets_path or "" }
-- lua format
require("luasnip.loaders.from_lua").load()
require("luasnip.loaders.from_lua").lazy_load { paths = vim.g.lua_snippets_path or "" }
vim.api.nvim_create_autocmd("InsertLeave", {
callback = function()
if
require("luasnip").session.current_nodes[vim.api.nvim_get_current_buf()]
and not require("luasnip").session.jump_active
then
require("luasnip").unlink_current()
end
end,
})
end
M.gitsigns = {
signs = {
add = { text = "" },
change = { text = "" },
delete = { text = "󰍵" },
topdelete = { text = "" },
changedelete = { text = "~" },
untracked = { text = "" },
},
on_attach = function(bufnr)
utils.load_mappings("gitsigns", { buffer = bufnr })
end,
}
return M

View File

@ -1,5 +1,5 @@
local options = { local options = {
ensure_installed = { "lua" }, ensure_installed = { "lua", "vim", "vimdoc" },
highlight = { highlight = {
enable = true, enable = true,

View File

@ -48,11 +48,11 @@ local default_plugins = {
{ {
"lukas-reineke/indent-blankline.nvim", "lukas-reineke/indent-blankline.nvim",
event = "User FilePost", event = "User FilePost",
opts = function() opts = {
return require("plugins.configs.others").blankline indent = { char = "", highlight = "IblChar" },
end, scope = { char = "", highlight = "IblScopeChar" },
},
config = function(_, opts) config = function(_, opts)
require("core.utils").load_mappings "blankline"
dofile(vim.g.base46_cache .. "blankline") dofile(vim.g.base46_cache .. "blankline")
local hooks = require "ibl.hooks" local hooks = require "ibl.hooks"
@ -81,7 +81,7 @@ local default_plugins = {
"lewis6991/gitsigns.nvim", "lewis6991/gitsigns.nvim",
event = "User FilePost", event = "User FilePost",
opts = function() opts = function()
return require("plugins.configs.others").gitsigns return require "plugins.configs.gitsigns"
end, end,
config = function(_, opts) config = function(_, opts)
dofile(vim.g.base46_cache .. "git") dofile(vim.g.base46_cache .. "git")
@ -130,7 +130,8 @@ local default_plugins = {
dependencies = "rafamadriz/friendly-snippets", dependencies = "rafamadriz/friendly-snippets",
opts = { history = true, updateevents = "TextChanged,TextChangedI" }, opts = { history = true, updateevents = "TextChanged,TextChangedI" },
config = function(_, opts) config = function(_, opts)
require("plugins.configs.others").luasnip(opts) require("luasnip").config.set_config(opts)
require "plugins.configs.luasnip"
end, end,
}, },
@ -178,7 +179,7 @@ local default_plugins = {
{ "gb", mode = "x", desc = "Comment toggle blockwise (visual)" }, { "gb", mode = "x", desc = "Comment toggle blockwise (visual)" },
}, },
init = function() init = function()
require("core.utils").load_mappings "comment" vim.g.comment_maps = true
end, end,
config = function(_, opts) config = function(_, opts)
require("Comment").setup(opts) require("Comment").setup(opts)
@ -189,9 +190,6 @@ local default_plugins = {
{ {
"nvim-tree/nvim-tree.lua", "nvim-tree/nvim-tree.lua",
cmd = { "NvimTreeToggle", "NvimTreeFocus" }, cmd = { "NvimTreeToggle", "NvimTreeFocus" },
init = function()
require("core.utils").load_mappings "nvimtree"
end,
opts = function() opts = function()
return require "plugins.configs.nvimtree" return require "plugins.configs.nvimtree"
end, end,
@ -205,9 +203,6 @@ local default_plugins = {
"nvim-telescope/telescope.nvim", "nvim-telescope/telescope.nvim",
dependencies = { "nvim-treesitter/nvim-treesitter" }, dependencies = { "nvim-treesitter/nvim-treesitter" },
cmd = "Telescope", cmd = "Telescope",
init = function()
require("core.utils").load_mappings "telescope"
end,
opts = function() opts = function()
return require "plugins.configs.telescope" return require "plugins.configs.telescope"
end, end,
@ -227,9 +222,6 @@ local default_plugins = {
{ {
"folke/which-key.nvim", "folke/which-key.nvim",
keys = { "<leader>", "<c-r>", "<c-w>", '"', "'", "`", "c", "v", "g" }, keys = { "<leader>", "<c-r>", "<c-w>", '"', "'", "`", "c", "v", "g" },
init = function()
require("core.utils").load_mappings "whichkey"
end,
cmd = "WhichKey", cmd = "WhichKey",
config = function(_, opts) config = function(_, opts)
dofile(vim.g.base46_cache .. "whichkey") dofile(vim.g.base46_cache .. "whichkey")