Compare commits
69 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6833c60694 | ||
|
|
32d8a1fdff | ||
|
|
82413d957e | ||
|
|
e5f8a38ae3 | ||
|
|
2e54fce028 | ||
|
|
178bf21fde | ||
|
|
8df62c803d | ||
|
|
b94c57954f | ||
|
|
80c2e01c75 | ||
|
|
cf1db9821a | ||
|
|
259274a624 | ||
|
|
96ba9ceb0c | ||
|
|
6fb5c313ed | ||
|
|
6b40fb590f | ||
|
|
bbc2cbaae6 | ||
|
|
166bb9beba | ||
|
|
2cf989cf31 | ||
|
|
634f6d55de | ||
|
|
2282f9d338 | ||
|
|
c4db8736ce | ||
|
|
f6af7e8a29 | ||
|
|
6608363bd9 | ||
|
|
168274038c | ||
|
|
b17c4d9e86 | ||
|
|
e307a4eacf | ||
|
|
73bf6c437f | ||
|
|
7dc8c6d0b2 | ||
|
|
5d69a0d0f9 | ||
|
|
adf67560ce | ||
|
|
cd10647dd6 | ||
|
|
21753150d4 | ||
|
|
afd8870358 | ||
|
|
a5fc21b4f1 | ||
|
|
ce6e3d19a7 | ||
|
|
4b1bca5303 | ||
|
|
9414658e35 | ||
|
|
ddef3aa172 | ||
|
|
56cc2d757a | ||
|
|
59082a8f28 | ||
|
|
b2e2b15b45 | ||
|
|
0333185bfc | ||
|
|
a439de385b | ||
|
|
d7798fb74a | ||
|
|
bfd0ea7dcd | ||
|
|
ffa83d57f0 | ||
|
|
37c328ab2a | ||
|
|
a88c68f911 | ||
|
|
48f1bb702d | ||
|
|
da85f7fbcd | ||
|
|
ccdf0dda11 | ||
|
|
cc3289639b | ||
|
|
cb27ae0ed1 | ||
|
|
35ee0bc81d | ||
|
|
445d32c19f | ||
|
|
5748536742 | ||
|
|
ed18649e94 | ||
|
|
5261eb330b | ||
|
|
0d2265aa37 | ||
|
|
47e9ce90ff | ||
|
|
f48ff142f0 | ||
|
|
4a8fb69157 | ||
|
|
cb18b424b9 | ||
|
|
1afbaef5c7 | ||
|
|
d58ec3f55d | ||
|
|
17a8959bea | ||
|
|
1b20da0115 | ||
|
|
d9b3980e62 | ||
|
|
92b7f38e83 | ||
|
|
e868fab1f2 |
9
.github/README.md
vendored
9
.github/README.md
vendored
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
[](https://github.com/neovim/neovim)
|
[](https://github.com/neovim/neovim)
|
||||||
[](https://github.com/NvChad/NvChad/issues)
|
[](https://github.com/NvChad/NvChad/issues)
|
||||||
[](https://discord.gg/gADmkJb9Fb)
|
[](https://discord.gg/gADmkJb9Fb)
|
||||||
[](https://matrix.to/#/#nvchad:matrix.org)
|
[](https://matrix.to/#/#nvchad:matrix.org)
|
||||||
@ -33,11 +33,11 @@
|
|||||||
|
|
||||||
## What is it?
|
## What is it?
|
||||||
|
|
||||||
- NvChad is a neovim config written in lua aiming to provide a base configuration with very beautiful UI and blazing fast startuptime (around 0.02 secs ~ 0.07 secs). We tweak UI plugins such as telescope, nvim-tree, bufferline etc well to provide an aesthetic UI experience.
|
- NvChad is a neovim config written in lua aiming to provide a base configuration with very beautiful UI and blazing fast startuptime (around 0.02 secs ~ 0.07 secs). We tweak UI plugins such as telescope, nvim-tree etc well to provide an aesthetic UI experience.
|
||||||
|
|
||||||
- Lazy loading is done 93% of the time meaning that plugins will not be loaded by default, they will be loaded only when required also at specific commands, events etc. This lowers the startuptime and it was like 0.07~ secs tested on an old pentium machine 1.4ghz + 4gb ram & HDD.
|
- Lazy loading is done 93% of the time meaning that plugins will not be loaded by default, they will be loaded only when required also at specific commands, events etc. This lowers the startuptime and it was like 0.07~ secs tested on an old pentium machine 1.4ghz + 4gb ram & HDD.
|
||||||
|
|
||||||
- NvChad isn't a framework! It's supposed to be used as a "base" config, so users can tweak the defaults well, and also remove the things they don't like in the default config and build their config on top of it. Users can tweak the entire default config while staying in their custom config (lua/custom dir). This is the control center of the user's config and gitignored so the users can stay up-to-date with NvChad's latest config (main branch) while still controlling it with their chadrc (file that controls entire custom dir).
|
- NvChad is supposed to be used with its [starter config](https://github.com/nvchad/starter), so nvchad main repo ( this repo ) can be imported as a plugin via lazy's import feature and then you can easily use this repo's modules like autocmds etc.
|
||||||
|
|
||||||
## Theme Showcase
|
## Theme Showcase
|
||||||
|
|
||||||
@ -87,7 +87,6 @@ A fuzzy file finder, picker, sorter, previewer and much more:
|
|||||||
## Plugins list
|
## Plugins list
|
||||||
|
|
||||||
- Many beautiful themes, theme toggler by our [base46 plugin](https://github.com/NvChad/base46)
|
- Many beautiful themes, theme toggler by our [base46 plugin](https://github.com/NvChad/base46)
|
||||||
- Inbuilt terminal toggling & management with [Nvterm](https://github.com/NvChad/nvterm)
|
|
||||||
- Lightweight & performant ui plugin with [NvChad UI](https://github.com/NvChad/ui) It provides statusline modules, tabufline ( tabs + buffer manager) , beautiful cheatsheets, NvChad updater, hide & unhide terminal buffers, theme switcher and much more!
|
- Lightweight & performant ui plugin with [NvChad UI](https://github.com/NvChad/ui) It provides statusline modules, tabufline ( tabs + buffer manager) , beautiful cheatsheets, NvChad updater, hide & unhide terminal buffers, theme switcher and much more!
|
||||||
- File navigation with [nvim-tree.lua](https://github.com/kyazdani42/nvim-tree.lua)
|
- File navigation with [nvim-tree.lua](https://github.com/kyazdani42/nvim-tree.lua)
|
||||||
- Beautiful and configurable icons with [nvim-web-devicons](https://github.com/kyazdani42/nvim-web-devicons)
|
- Beautiful and configurable icons with [nvim-web-devicons](https://github.com/kyazdani42/nvim-web-devicons)
|
||||||
@ -118,5 +117,5 @@ If you like NvChad and would like to support & appreciate it via donation then I
|
|||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
- [Elianiva](https://github.com/elianiva) helped me with NeoVim Lua related issues many times, NvChad wouldn't exist without his help at all as he helped me in my initial neovim journey!
|
- [Elianiva](https://github.com/elianiva) helped me with NeoVim Lua related issues many times, helped me in my initial neovim journey!
|
||||||
- @lorvethe for making the beautiful NvChad logo.
|
- @lorvethe for making the beautiful NvChad logo.
|
||||||
|
|||||||
8
.gitignore
vendored
8
.gitignore
vendored
@ -1,8 +0,0 @@
|
|||||||
spell
|
|
||||||
ftplugin
|
|
||||||
syntax
|
|
||||||
coc-settings.json
|
|
||||||
.luarc.json
|
|
||||||
lazy-lock.json
|
|
||||||
after
|
|
||||||
**/.DS_Store
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
" 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
colors/nvchad.lua
Normal file
2
colors/nvchad.lua
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
dofile(vim.g.base46_cache .. "defaults")
|
||||||
|
dofile(vim.g.base46_cache .. "statusline")
|
||||||
23
init.lua
23
init.lua
@ -1,23 +0,0 @@
|
|||||||
require "core"
|
|
||||||
|
|
||||||
local custom_init_path = vim.api.nvim_get_runtime_file("lua/custom/init.lua", false)[1]
|
|
||||||
|
|
||||||
if custom_init_path then
|
|
||||||
dofile(custom_init_path)
|
|
||||||
end
|
|
||||||
|
|
||||||
require("core.utils").load_mappings()
|
|
||||||
|
|
||||||
local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
|
|
||||||
|
|
||||||
-- bootstrap lazy.nvim!
|
|
||||||
if not vim.loop.fs_stat(lazypath) then
|
|
||||||
require("core.bootstrap").gen_chadrc_template()
|
|
||||||
require("core.bootstrap").lazy(lazypath)
|
|
||||||
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"
|
|
||||||
@ -1,54 +0,0 @@
|
|||||||
local M = {}
|
|
||||||
local fn = vim.fn
|
|
||||||
|
|
||||||
M.echo = function(str)
|
|
||||||
vim.cmd "redraw"
|
|
||||||
vim.api.nvim_echo({ { str, "Bold" } }, true, {})
|
|
||||||
end
|
|
||||||
|
|
||||||
local function shell_call(args)
|
|
||||||
local output = fn.system(args)
|
|
||||||
assert(vim.v.shell_error == 0, "External call failed with error code: " .. vim.v.shell_error .. "\n" .. output)
|
|
||||||
end
|
|
||||||
|
|
||||||
M.lazy = function(install_path)
|
|
||||||
------------- base46 ---------------
|
|
||||||
local lazy_path = fn.stdpath "data" .. "/lazy/base46"
|
|
||||||
|
|
||||||
M.echo " Compiling base46 theme to bytecode ..."
|
|
||||||
|
|
||||||
local base46_repo = "https://github.com/NvChad/base46"
|
|
||||||
shell_call { "git", "clone", "--depth", "1", "-b", "v2.0", base46_repo, lazy_path }
|
|
||||||
vim.opt.rtp:prepend(lazy_path)
|
|
||||||
|
|
||||||
require("base46").compile()
|
|
||||||
|
|
||||||
--------- lazy.nvim ---------------
|
|
||||||
M.echo " Installing lazy.nvim & plugins ..."
|
|
||||||
local repo = "https://github.com/folke/lazy.nvim.git"
|
|
||||||
shell_call { "git", "clone", "--filter=blob:none", "--branch=stable", repo, install_path }
|
|
||||||
vim.opt.rtp:prepend(install_path)
|
|
||||||
|
|
||||||
-- install plugins
|
|
||||||
require "plugins"
|
|
||||||
|
|
||||||
-- mason packages & show post_bootstrap screen
|
|
||||||
require "nvchad.post_install"()
|
|
||||||
end
|
|
||||||
|
|
||||||
M.gen_chadrc_template = function()
|
|
||||||
local path = fn.stdpath "config" .. "/lua/custom"
|
|
||||||
|
|
||||||
if fn.isdirectory(path) ~= 1 then
|
|
||||||
-- use very minimal chadrc
|
|
||||||
fn.mkdir(path, "p")
|
|
||||||
|
|
||||||
local file = io.open(path .. "/chadrc.lua", "w")
|
|
||||||
if file then
|
|
||||||
file:write "---@type ChadrcConfig\nlocal M = {}\n\nM.ui = { theme = 'onedark' }\n\nreturn M"
|
|
||||||
file:close()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
@ -1,146 +0,0 @@
|
|||||||
local opt = vim.opt
|
|
||||||
local g = vim.g
|
|
||||||
local config = require("core.utils").load_config()
|
|
||||||
|
|
||||||
-------------------------------------- globals -----------------------------------------
|
|
||||||
g.nvchad_theme = config.ui.theme
|
|
||||||
g.base46_cache = vim.fn.stdpath "data" .. "/nvchad/base46/"
|
|
||||||
g.toggle_theme_icon = " "
|
|
||||||
g.transparency = true
|
|
||||||
|
|
||||||
-------------------------------------- options ------------------------------------------
|
|
||||||
opt.laststatus = 3 -- global statusline
|
|
||||||
opt.showmode = false
|
|
||||||
|
|
||||||
opt.clipboard = "unnamedplus"
|
|
||||||
opt.cursorline = true
|
|
||||||
|
|
||||||
-- Indenting
|
|
||||||
opt.expandtab = true
|
|
||||||
opt.shiftwidth = 4
|
|
||||||
opt.smartindent = true
|
|
||||||
opt.tabstop = 4
|
|
||||||
opt.softtabstop = 4
|
|
||||||
|
|
||||||
opt.fillchars = { eob = " " }
|
|
||||||
opt.ignorecase = true
|
|
||||||
opt.smartcase = true
|
|
||||||
opt.mouse = "a"
|
|
||||||
|
|
||||||
-- Numbers
|
|
||||||
opt.number = true
|
|
||||||
opt.numberwidth = 2
|
|
||||||
opt.ruler = false
|
|
||||||
opt.relativenumber = true
|
|
||||||
|
|
||||||
-- disable nvim intro
|
|
||||||
opt.shortmess:append "sI"
|
|
||||||
|
|
||||||
opt.signcolumn = "yes"
|
|
||||||
opt.splitbelow = true
|
|
||||||
opt.splitright = true
|
|
||||||
opt.termguicolors = true
|
|
||||||
opt.timeoutlen = 400
|
|
||||||
opt.undofile = true
|
|
||||||
opt.scrolloff = 15
|
|
||||||
|
|
||||||
opt.wildignore:append "tags,Session.vim"
|
|
||||||
|
|
||||||
-- interval for writing swap file to disk, also used by gitsigns
|
|
||||||
opt.updatetime = 250
|
|
||||||
|
|
||||||
-- go to previous/next line with h,l,left arrow and right arrow
|
|
||||||
-- when cursor reaches end/beginning of line
|
|
||||||
opt.whichwrap:append "<>[]hl"
|
|
||||||
|
|
||||||
g.mapleader = " "
|
|
||||||
|
|
||||||
-- disable some default providers
|
|
||||||
for _, provider in ipairs { "node", "perl", "python3", "ruby" } do
|
|
||||||
vim.g["loaded_" .. provider .. "_provider"] = 0
|
|
||||||
end
|
|
||||||
|
|
||||||
-- add binaries installed by mason.nvim to path
|
|
||||||
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 ------------------------------------------
|
|
||||||
local autocmd = vim.api.nvim_create_autocmd
|
|
||||||
|
|
||||||
-- dont list quickfix buffers
|
|
||||||
autocmd("FileType", {
|
|
||||||
pattern = "qf",
|
|
||||||
callback = function()
|
|
||||||
vim.opt_local.buflisted = false
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- reload some chadrc options on-save
|
|
||||||
autocmd("BufWritePost", {
|
|
||||||
pattern = vim.tbl_map(function(path)
|
|
||||||
return vim.fs.normalize(vim.loop.fs_realpath(path))
|
|
||||||
end, vim.fn.glob(vim.fn.stdpath "config" .. "/lua/custom/**/*.lua", true, true, true)),
|
|
||||||
group = vim.api.nvim_create_augroup("ReloadNvChad", {}),
|
|
||||||
|
|
||||||
callback = function(opts)
|
|
||||||
local fp = vim.fn.fnamemodify(vim.fs.normalize(vim.api.nvim_buf_get_name(opts.buf)), ":r") --[[@as string]]
|
|
||||||
local app_name = vim.env.NVIM_APPNAME and vim.env.NVIM_APPNAME or "nvim"
|
|
||||||
local module = string.gsub(fp, "^.*/" .. app_name .. "/lua/", ""):gsub("/", ".")
|
|
||||||
|
|
||||||
require("plenary.reload").reload_module "base46"
|
|
||||||
require("plenary.reload").reload_module(module)
|
|
||||||
require("plenary.reload").reload_module "custom.chadrc"
|
|
||||||
|
|
||||||
config = require("core.utils").load_config()
|
|
||||||
|
|
||||||
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)
|
|
||||||
vim.opt.statusline = "%!v:lua.require('nvchad.statusline." .. config.ui.statusline.theme .. "').run()"
|
|
||||||
|
|
||||||
-- tabufline
|
|
||||||
if config.ui.tabufline.enabled then
|
|
||||||
require("plenary.reload").reload_module "nvchad.tabufline.modules"
|
|
||||||
vim.opt.tabline = "%!v:lua.require('nvchad.tabufline.modules').run()"
|
|
||||||
end
|
|
||||||
|
|
||||||
require("base46").load_all_highlights()
|
|
||||||
-- vim.cmd("redraw!")
|
|
||||||
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
|
|
||||||
|
|
||||||
new_cmd("NvChadUpdate", function()
|
|
||||||
require "nvchad.updater"()
|
|
||||||
end, {})
|
|
||||||
@ -1,740 +0,0 @@
|
|||||||
-- n, v, i, t = mode names
|
|
||||||
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
M.general = {
|
|
||||||
i = {
|
|
||||||
-- go to beginning and end
|
|
||||||
["<C-b>"] = { "<ESC>^i", "Beginning of line" },
|
|
||||||
["<C-e>"] = { "<End>", "End of line" },
|
|
||||||
|
|
||||||
-- navigate within insert mode
|
|
||||||
["<C-h>"] = { "<Left>", "Move left" },
|
|
||||||
["<C-l>"] = { "<Right>", "Move right" },
|
|
||||||
["<C-j>"] = { "<Down>", "Move down" },
|
|
||||||
["<C-k>"] = { "<Up>", "Move up" },
|
|
||||||
},
|
|
||||||
|
|
||||||
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" },
|
|
||||||
["<C-l>"] = { "<C-w>l", "Window right" },
|
|
||||||
["<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" },
|
|
||||||
|
|
||||||
-- 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" },
|
|
||||||
|
|
||||||
-- 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 } },
|
|
||||||
|
|
||||||
-- ["<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"},
|
|
||||||
|
|
||||||
-- (Double) Trouble
|
|
||||||
["<leader>tx"] = { ":Trouble diagnostics toggle<CR>", "[T]rouble diagnostics" },
|
|
||||||
["<leader>tX"] = { ":Trouble diagnostics toggle filter.buf=0<CR>", "[T]rouble buffer diagnostics" },
|
|
||||||
["<leader>ts"] = { ":Trouble symbols toggle focus=false<CR>", "[T]rouble [S]ymbols" },
|
|
||||||
["<leader>tl"] = { ":Trouble lsp toggle focus=false win.position=right<CR>", "[T]rouble [L]sp def / ref / ..." },
|
|
||||||
["<leader>tL"] = { ":Trouble loclist toggle<CR>", "[T]rouble [L]oclist" },
|
|
||||||
["<leader>tQ"] = { ":Trouble qflist toggle<CR>", "[T]rouble [Q]uickfix" },
|
|
||||||
|
|
||||||
["<leader>dgg"] = { ":lua require('dap').continue() <CR>", "Continue debu[g]ging" },
|
|
||||||
["<leader>dg<CR>"] = { ":lua require('dapui').toggle() <CR>", "Toggle DAP ui" },
|
|
||||||
["<leader>dgw"] = { ":lua require('dapui').eval() <CR>", "Open floating windows about current [w]ord" },
|
|
||||||
["<leader>dgb"] = { ":lua require('dap').toggle_breakpoint() <CR>", "Toggle [b]reakpoint" },
|
|
||||||
["<leader>dgf"] = { ":lua require('dap-python').test_method() <CR>", "Debug [f]unction" },
|
|
||||||
["<leader>dgo"] = { ":lua require('dap').step_over() <CR>", "DAP step [o]ver method" },
|
|
||||||
["<leader>dgt"] = { ":lua require('dap').step_into() <CR>", "DAP step in[t]o method" },
|
|
||||||
["<leader>dgp"] = { ":lua require('dap').step_back() <CR>", "DAP step back ([p]revious)" },
|
|
||||||
["<leader>dgs"] = {
|
|
||||||
function()
|
|
||||||
local widgets = require "dap.ui.widgets"
|
|
||||||
local sidebar = widgets.sidebar(widgets.scopes)
|
|
||||||
sidebar.open { widgth = "50%" }
|
|
||||||
end,
|
|
||||||
"DAP Show debugged [s]copes",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- new buffer
|
|
||||||
-- ["<leader>b"] = { "<cmd> enew <CR>", "New buffer" },
|
|
||||||
-- ["<leader>ch"] = { "<cmd> NvCheatsheet <CR>", "Mapping cheatsheet" },
|
|
||||||
|
|
||||||
["<leader>fm"] = {
|
|
||||||
function()
|
|
||||||
vim.lsp.buf.format { async = true }
|
|
||||||
end,
|
|
||||||
"LSP formatting",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
t = {
|
|
||||||
["<C-x>"] = { vim.api.nvim_replace_termcodes("<C-\\><C-N>", true, true, true), "Escape terminal mode" },
|
|
||||||
},
|
|
||||||
|
|
||||||
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 } },
|
|
||||||
["<"] = { "<gv", "Indent line" },
|
|
||||||
[">"] = { ">gv", "Indent line" },
|
|
||||||
|
|
||||||
["<leader>dgd"] = { ":lua require('dap-python').debug_selection()", "DAP debug selection" },
|
|
||||||
["<leader>dgw"] = { ":lua require('dap-python').eval()", "DAP eval selection" },
|
|
||||||
},
|
|
||||||
|
|
||||||
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 } },
|
|
||||||
-- 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
|
|
||||||
["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 qflist" },
|
|
||||||
["<leader>ct"] = {
|
|
||||||
":call append(line('.') - 1, repeat(' ', indent('.')) . '# TODO: ' . input('Comment >'))<CR>",
|
|
||||||
"Add TODO comment + add to qflist",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<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" },
|
|
||||||
|
|
||||||
["gf"] = { ":call search('[A-Z]', 'W')<CR>", "Go to next uppercase" },
|
|
||||||
["fg"] = { ":call search('[A-Z]', 'bW')<CR>", "Go to last uppercase" },
|
|
||||||
|
|
||||||
["glb"] = { ":lua require('gitlab').choose_merge_request()<CR>", "Gitlab: Choose merge request" },
|
|
||||||
["glr"] = { ":lua require('gitlab').review()<CR>", "Gitlab: review" },
|
|
||||||
["gls"] = { ":lua require('gitlab').summary()<CR>", "Gitlab: summary" },
|
|
||||||
["glo"] = { ":lua require('gitlab').open_in_browser()<CR>", "Gitlab: open in browser" },
|
|
||||||
["glu"] = { ":lua require('gitlab').copy_mr_url()<CR>", "Gitlab: open in browser" },
|
|
||||||
["glO"] = { ":lua require('gitlab').create_mr()<CR>", "Gitlab: create MR" },
|
|
||||||
["glaa"] = { ":lua require('gitlab').add_assignee()<CR>", "Gitlab: add_assignee" },
|
|
||||||
|
|
||||||
-- vim.keymap.set("n", "glb", gitlab.choose_merge_request)
|
|
||||||
-- vim.keymap.set("n", "glr", gitlab.review)
|
|
||||||
-- vim.keymap.set("n", "gls", gitlab.summary)
|
|
||||||
-- vim.keymap.set("n", "glA", gitlab.approve)
|
|
||||||
-- vim.keymap.set("n", "glR", gitlab.revoke)
|
|
||||||
-- vim.keymap.set("n", "glc", gitlab.create_comment)
|
|
||||||
-- vim.keymap.set("v", "glc", gitlab.create_multiline_comment)
|
|
||||||
-- vim.keymap.set("v", "glC", gitlab.create_comment_suggestion)
|
|
||||||
-- vim.keymap.set("n", "glO", gitlab.create_mr)
|
|
||||||
-- vim.keymap.set("n", "glm", gitlab.move_to_discussion_tree_from_diagnostic)
|
|
||||||
-- vim.keymap.set("n", "gln", gitlab.create_note)
|
|
||||||
-- vim.keymap.set("n", "gld", gitlab.toggle_discussions)
|
|
||||||
-- vim.keymap.set("n", "glaa", gitlab.add_assignee)
|
|
||||||
-- vim.keymap.set("n", "glad", gitlab.delete_assignee)
|
|
||||||
-- vim.keymap.set("n", "glla", gitlab.add_label)
|
|
||||||
-- vim.keymap.set("n", "glld", gitlab.delete_label)
|
|
||||||
-- vim.keymap.set("n", "glra", gitlab.add_reviewer)
|
|
||||||
-- vim.keymap.set("n", "glrd", gitlab.delete_reviewer)
|
|
||||||
-- vim.keymap.set("n", "glp", gitlab.pipeline)
|
|
||||||
-- vim.keymap.set("n", "glM", gitlab.merge)
|
|
||||||
-- vim.keymap.set("n", "glu", gitlab.copy_mr_url)
|
|
||||||
-- vim.keymap.set("n", "glP", gitlab.publish_all_drafts)
|
|
||||||
},
|
|
||||||
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,
|
|
||||||
|
|
||||||
n = {
|
|
||||||
-- cycle through buffers
|
|
||||||
["<tab>"] = {
|
|
||||||
function()
|
|
||||||
require("nvchad.tabufline").tabuflineNext()
|
|
||||||
end,
|
|
||||||
"Goto next buffer",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<S-tab>"] = {
|
|
||||||
function()
|
|
||||||
require("nvchad.tabufline").tabuflinePrev()
|
|
||||||
end,
|
|
||||||
"Goto prev buffer",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- close buffer + hide terminal buffer
|
|
||||||
-- ["<leader>x"] = {
|
|
||||||
-- function()
|
|
||||||
-- require("nvchad.tabufline").close_buffer()
|
|
||||||
-- end,
|
|
||||||
-- "Close buffer",
|
|
||||||
-- },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
M.comment = {
|
|
||||||
plugin = true,
|
|
||||||
|
|
||||||
-- toggle comment in both modes
|
|
||||||
n = {
|
|
||||||
["<leader>ci"] = {
|
|
||||||
function()
|
|
||||||
require("Comment.api").toggle.linewise.current()
|
|
||||||
end,
|
|
||||||
"Toggle comment",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
v = {
|
|
||||||
["<leader>ci"] = {
|
|
||||||
"<ESC><cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR>",
|
|
||||||
"Toggle comment",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
M.lspconfig = {
|
|
||||||
plugin = true,
|
|
||||||
|
|
||||||
-- See `<cmd> :help vim.lsp.*` for documentation on any of the below functions
|
|
||||||
|
|
||||||
n = {
|
|
||||||
["gD"] = {
|
|
||||||
function()
|
|
||||||
vim.lsp.buf.declaration()
|
|
||||||
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 = {
|
|
||||||
-- Resume
|
|
||||||
["<a-f>"] = { "<cmd> Telescope resume <CR>", "Resume" },
|
|
||||||
["<a-k>"] = { "<cmd> Telescope keymaps <CR>", "Show (and search) all [k]eymaps" },
|
|
||||||
-- find
|
|
||||||
["<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>ff"] = {
|
|
||||||
"<cmd> lua require('telescope.builtin').live_grep({default_text='<<<<<<< HEAD'}) <CR>",
|
|
||||||
"Search for git conflicts",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<leader>fg<CR>"] = { "<cmd> lua require('telescope.builtin').live_grep({}) <CR>", "Live grep" },
|
|
||||||
["<leader>fg/"] = {
|
|
||||||
"<cmd> lua require('telescope.builtin').live_grep({default_text=vim.fn.getreg('/')}) <CR>",
|
|
||||||
"Live grep with search term",
|
|
||||||
},
|
|
||||||
["<leader>fgw"] = {
|
|
||||||
"<cmd> lua require('telescope.builtin').live_grep({default_text=vim.fn.expand('<cword>')}) <CR>",
|
|
||||||
"Live grep with current word",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<leader>gf<CR>"] = { "<cmd> lua require('telescope.builtin').find_files({}) <CR>", "Find files" },
|
|
||||||
["<leader>gf/"] = {
|
|
||||||
"<cmd> lua require('telescope.builtin').find_files({default_text=vim.fn.getreg('/')}) <CR>",
|
|
||||||
"Find files with search term",
|
|
||||||
},
|
|
||||||
["<leader>gfw"] = {
|
|
||||||
"<cmd> lua require('telescope.builtin').find_files({default_text=vim.fn.expand('<cword>')}) <CR>",
|
|
||||||
"Find files with current word",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<leader>br<CR>"] = {
|
|
||||||
":execute '%s/' . input('Search term >') . '/' . input('Replace by >', '') . '/g | update' <CR>",
|
|
||||||
"Replace pattern in current buffer",
|
|
||||||
},
|
|
||||||
["<leader>br/"] = {
|
|
||||||
":execute '%s/' . input('Search term >', getreg('/')) . '/' . input('Replace by >', '') . '/g | update' <CR>",
|
|
||||||
"Replace search term pattern in current buffer",
|
|
||||||
},
|
|
||||||
["<leader>brw"] = {
|
|
||||||
":execute '%s/' . input('Search term >', expand('<cword>')) . '/' . input('Replace by >', '') . '/g | update' <CR>",
|
|
||||||
"Replace current word pattern in current buffer",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Quickfix list
|
|
||||||
["<leader>ql"] = { "<cmd> Telescope quickfix <CR>", "Show qflist" },
|
|
||||||
["<leader>qn"] = { ":cnext<CR>", "Jump to next in qflist" },
|
|
||||||
["]q"] = { ":cnext<CR>", "Jump to next in qflist" },
|
|
||||||
["<leader>qp"] = { ":cprevious<CR>", "Jump to previous in qflist" },
|
|
||||||
["[q"] = { ":cprevious<CR>", "Jump to previous in qflist" },
|
|
||||||
["<leader>qc"] = { ":call setqflist([]) | cclose<CR>", "Clear qflist" },
|
|
||||||
|
|
||||||
-- Quickfix replace all
|
|
||||||
["<leader>qr<CR>"] = {
|
|
||||||
":execute 'cfdo' '%s/' . input('Search term >') . '/' . input('Replace by >') . '/gI | update' <CR>",
|
|
||||||
"Replace pattern in all qflist",
|
|
||||||
},
|
|
||||||
["<leader>qr/"] = {
|
|
||||||
":execute 'cfdo' '%s/' . input('Search term >', getreg('/')) . '/' . input('Replace by >') . '/gI | update' <CR>",
|
|
||||||
"Replace search term in all qflist",
|
|
||||||
},
|
|
||||||
["<leader>qrw"] = {
|
|
||||||
":execute 'cfdo' '%s/' . input('Search term >', expand('<cword>')) . '/' . input('Replace by >') . '/gI | update' <CR>",
|
|
||||||
"Replace current word in all qflist",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Quickfix "search"
|
|
||||||
["<leader>qs<CR>"] = {
|
|
||||||
":execute 'vimgrep' '/' . input('Pattern >') . '\\C/' '**/*' <CR>",
|
|
||||||
"Add <> files in qflist",
|
|
||||||
},
|
|
||||||
["<leader>qs/"] = {
|
|
||||||
":execute 'vimgrep' '/' . input('Pattern >', getreg('/')) . '\\C/' '**/*' <CR>",
|
|
||||||
"Add search term files in qflist",
|
|
||||||
},
|
|
||||||
["<leader>qsw"] = {
|
|
||||||
":execute 'vimgrep' '/' . input('Pattern >', expand('<cword>')) . '\\C/' '**/*' <CR>",
|
|
||||||
"Add current word files in qflist",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Loclist list
|
|
||||||
["<leader>ll"] = { "<cmd> Telescope loclist <CR>", "Show loclist" },
|
|
||||||
["<leader>ln"] = { ":lnext<CR>", "Jump to next in loclist" },
|
|
||||||
["]l"] = { ":lnext<CR>", "Jump to next in loclist" },
|
|
||||||
["<leader>lp"] = { ":lprevious<CR>", "Jump to previous in loclist" },
|
|
||||||
["[l"] = { ":lprevious<CR>", "Jump to previous in loclist" },
|
|
||||||
["<leader>lc"] = { ":call setloclist([]) | lclose<CR>", "Clear loclist" },
|
|
||||||
|
|
||||||
["<leader>fh"] = { "<cmd> Telescope help_tags <CR>", "Help page" },
|
|
||||||
["<leader>fo"] = { "<cmd> Telescope oldfiles <CR>", "Find oldfiles" },
|
|
||||||
["<leader>fx<CR>"] = { "<cmd> Telescope current_buffer_fuzzy_find <CR>", "Find in current buffer" },
|
|
||||||
["<leader>fx/"] = {
|
|
||||||
"<cmd> lua require('telescope.builtin').current_buffer_fuzzy_find({default_text=vim.fn.getreg('/')}) <CR>",
|
|
||||||
"Fuzzy find in current buffer with actual search",
|
|
||||||
},
|
|
||||||
["<leader>fxw"] = {
|
|
||||||
"<cmd> lua require('telescope.builtin').current_buffer_fuzzy_find({default_text=vim.fn.expand('<cword>')}) <CR>",
|
|
||||||
"Fuzzy find in current buffer with current word",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<leader>wl"] = { "<cmd> Telescope workspaces <CR>", "Find workspaces" },
|
|
||||||
|
|
||||||
["<leader>gm"] = { "<cmd> lua require('custom.telescope').cpickers()<CR>", "Commonly used commands" },
|
|
||||||
-- git
|
|
||||||
--- 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" },
|
|
||||||
|
|
||||||
-- theme switcher
|
|
||||||
-- ["<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 qflist",
|
|
||||||
},
|
|
||||||
["<leader>d0"] = {
|
|
||||||
"<cmd>lua require('diaglist').open_buffer_diagnostics()<CR>",
|
|
||||||
"Open current buffer diagnostics in loclist",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<leader>;"] = { "<cmd> Telescope <CR>", "Open Telescope" },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
M.nvterm = {
|
|
||||||
plugin = true,
|
|
||||||
|
|
||||||
t = {
|
|
||||||
-- toggle in terminal mode
|
|
||||||
["<a-i>"] = {
|
|
||||||
function()
|
|
||||||
require("nvterm.terminal").toggle "float"
|
|
||||||
end,
|
|
||||||
"Toggle floating term",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<a-h>"] = {
|
|
||||||
function()
|
|
||||||
require("nvterm.terminal").toggle "horizontal"
|
|
||||||
end,
|
|
||||||
"Toggle horizontal term",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<a-v>"] = {
|
|
||||||
function()
|
|
||||||
require("nvterm.terminal").toggle "vertical"
|
|
||||||
end,
|
|
||||||
"Toggle vertical term",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
n = {
|
|
||||||
-- toggle in normal mode
|
|
||||||
["<a-i>"] = {
|
|
||||||
function()
|
|
||||||
require("nvterm.terminal").toggle "float"
|
|
||||||
end,
|
|
||||||
"Toggle floating term",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<a-h>"] = {
|
|
||||||
function()
|
|
||||||
require("nvterm.terminal").toggle "horizontal"
|
|
||||||
end,
|
|
||||||
"Toggle horizontal term",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<a-v>"] = {
|
|
||||||
function()
|
|
||||||
require("nvterm.terminal").toggle "vertical"
|
|
||||||
end,
|
|
||||||
"Toggle vertical term",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- new
|
|
||||||
["<leader>h"] = {
|
|
||||||
function()
|
|
||||||
require("nvterm.terminal").new "horizontal"
|
|
||||||
end,
|
|
||||||
"New horizontal term",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<leader>v"] = {
|
|
||||||
function()
|
|
||||||
require("nvterm.terminal").new "vertical"
|
|
||||||
end,
|
|
||||||
"New vertical 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>bb"] = {
|
|
||||||
function()
|
|
||||||
package.loaded.gitsigns.blame_line()
|
|
||||||
end,
|
|
||||||
"Blame line",
|
|
||||||
},
|
|
||||||
|
|
||||||
["<leader>bd"] = {
|
|
||||||
function()
|
|
||||||
require("gitsigns").toggle_deleted()
|
|
||||||
end,
|
|
||||||
"Toggle deleted",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local all_modes = {
|
|
||||||
-- Override all delete/yank/paste to use the registers M by default
|
|
||||||
["y"] = { '"my', "Yank", { remap = false } },
|
|
||||||
["p"] = { '"mp', "Paste", { remap = false } },
|
|
||||||
["d"] = { '"md', "Delete", { remap = false } },
|
|
||||||
|
|
||||||
["<leader>y"] = { '"+y', "Yank into system register", { remap = false } },
|
|
||||||
["<leader>p"] = { '"+p', "Paste from system register", { remap = false } },
|
|
||||||
}
|
|
||||||
|
|
||||||
M.general[{ "n", "v" }] = all_modes
|
|
||||||
|
|
||||||
return M
|
|
||||||
@ -1,121 +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
|
|
||||||
|
|
||||||
-- print(vim.inspect(config))
|
|
||||||
-- print(config)
|
|
||||||
-- print(vim.inspect(config.ui.statusline))
|
|
||||||
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("core.utils").load_config().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
|
|
||||||
|
|
||||||
M.lazy_load = function(plugin)
|
|
||||||
vim.api.nvim_create_autocmd({ "BufRead", "BufWinEnter", "BufNewFile" }, {
|
|
||||||
group = vim.api.nvim_create_augroup("BeLazyOnFileOpen" .. plugin, {}),
|
|
||||||
callback = function()
|
|
||||||
local file = vim.fn.expand "%"
|
|
||||||
local condition = file ~= "NvimTree_1" and file ~= "[lazy]" and file ~= ""
|
|
||||||
|
|
||||||
if condition then
|
|
||||||
vim.api.nvim_del_augroup_by_name("BeLazyOnFileOpen" .. plugin)
|
|
||||||
|
|
||||||
-- dont defer for treesitter as it will show slow highlighting
|
|
||||||
-- This deferring only happens only when we do "nvim filename"
|
|
||||||
if plugin ~= "nvim-treesitter" then
|
|
||||||
vim.schedule(function()
|
|
||||||
require("lazy").load { plugins = plugin }
|
|
||||||
|
|
||||||
if plugin == "nvim-lspconfig" then
|
|
||||||
vim.cmd "silent! do FileType"
|
|
||||||
end
|
|
||||||
end, 0)
|
|
||||||
else
|
|
||||||
require("lazy").load { plugins = plugin }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
@ -1,56 +0,0 @@
|
|||||||
---@type ChadrcConfig
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
-- Path to overriding theme and highlights files
|
|
||||||
local highlights = require "custom.highlights"
|
|
||||||
|
|
||||||
M.ui = {
|
|
||||||
theme = "onedark",
|
|
||||||
theme_toggle = { "onedark", "onedark" },
|
|
||||||
|
|
||||||
hl_override = highlights.override,
|
|
||||||
hl_add = highlights.add,
|
|
||||||
|
|
||||||
statusline = {
|
|
||||||
order = {
|
|
||||||
"macro",
|
|
||||||
"mode",
|
|
||||||
"relativepath",
|
|
||||||
"file",
|
|
||||||
"git",
|
|
||||||
"%=",
|
|
||||||
"lsp_msg",
|
|
||||||
"%=",
|
|
||||||
"diagnostics",
|
|
||||||
"lsp",
|
|
||||||
"cwd",
|
|
||||||
"cursor",
|
|
||||||
},
|
|
||||||
modules = {
|
|
||||||
macro = function()
|
|
||||||
local noice = require "noice"
|
|
||||||
if noice.api.statusline.mode.has() then
|
|
||||||
return "%#St_CommandMode#" .. noice.api.statusline.mode.get()
|
|
||||||
end
|
|
||||||
return ""
|
|
||||||
end,
|
|
||||||
relativepath = function()
|
|
||||||
local stbufnr = vim.api.nvim_win_get_buf(vim.g.statusline_winid or 0)
|
|
||||||
local path = vim.api.nvim_buf_get_name(stbufnr)
|
|
||||||
|
|
||||||
if path == "" then
|
|
||||||
return ""
|
|
||||||
end
|
|
||||||
|
|
||||||
return "%#St_relativepath# " .. vim.fn.expand "%:.:h" .. " /"
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
M.plugins = "custom.plugins"
|
|
||||||
|
|
||||||
-- check core.mappings for table structure
|
|
||||||
M.mappings = require "custom.mappings"
|
|
||||||
|
|
||||||
return M
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
local C = {
|
|
||||||
{ "Replace {{X}} with {{ X }} in jinja template", "%s/{{\\(.[^ ]*\\)}}/{{ \\1 }}/g" },
|
|
||||||
}
|
|
||||||
|
|
||||||
return C
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
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", "pyright", "jedi_language_server" }
|
|
||||||
local servers = { "html", "cssls", "tsserver", "clangd", "salt_ls" }
|
|
||||||
|
|
||||||
for _, lsp in ipairs(servers) do
|
|
||||||
lspconfig[lsp].setup {
|
|
||||||
on_attach = on_attach,
|
|
||||||
capabilities = capabilities,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
local present, null_ls = pcall(require, "null-ls")
|
|
||||||
|
|
||||||
if true then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
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", "js" }, extra_args = { "--tab-width 4" } }, -- so prettier works only on these filetypes
|
|
||||||
|
|
||||||
-- Lua
|
|
||||||
b.formatting.stylua,
|
|
||||||
|
|
||||||
-- cpp
|
|
||||||
b.formatting.clang_format,
|
|
||||||
}
|
|
||||||
|
|
||||||
null_ls.setup {
|
|
||||||
debug = true,
|
|
||||||
sources = sources,
|
|
||||||
}
|
|
||||||
@ -1,68 +0,0 @@
|
|||||||
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
|
|
||||||
@ -1,19 +0,0 @@
|
|||||||
-- 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
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
-- local autocmd = vim.api.nvim_create_autocmd
|
|
||||||
|
|
||||||
-- Auto resize panes when resizing nvim window
|
|
||||||
-- autocmd("VimResized", {
|
|
||||||
-- pattern = "*",
|
|
||||||
-- command = "tabdo wincmd =",
|
|
||||||
-- })
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
---@type MappingsTable
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
M.general = {
|
|
||||||
n = {
|
|
||||||
[";"] = { ":", "enter command mode", opts = { nowait = true } },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- more keybinds!
|
|
||||||
--
|
|
||||||
return M
|
|
||||||
@ -1,65 +0,0 @@
|
|||||||
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
|
|
||||||
@ -1,107 +0,0 @@
|
|||||||
-- Implement delta as previewer for diffs
|
|
||||||
|
|
||||||
local previewers = require('telescope.previewers')
|
|
||||||
local builtin = require('telescope.builtin')
|
|
||||||
local pickers = require("telescope.pickers")
|
|
||||||
local finders = require("telescope.finders")
|
|
||||||
local actions = require("telescope.actions")
|
|
||||||
local action_state = require("telescope.actions.state")
|
|
||||||
local conf = require("telescope.config").values
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
local custom_commands = require("custom.commands")
|
|
||||||
|
|
||||||
E.cpickers = function(opts)
|
|
||||||
opts = opts or {}
|
|
||||||
pickers.new(opts, {
|
|
||||||
prompt_title = "Commands",
|
|
||||||
|
|
||||||
finder = finders.new_table {
|
|
||||||
results = custom_commands,
|
|
||||||
entry_maker = function(entry)
|
|
||||||
return {
|
|
||||||
value = entry,
|
|
||||||
display = entry[1],
|
|
||||||
ordinal = entry[2],
|
|
||||||
}
|
|
||||||
end
|
|
||||||
},
|
|
||||||
|
|
||||||
previewer = previewers.new_buffer_previewer {
|
|
||||||
title = "Custom commands preview",
|
|
||||||
define_preview = function (self, entry, _)
|
|
||||||
vim.api.nvim_buf_set_lines(self.state.bufnr, 0, -1, false, {
|
|
||||||
entry['ordinal'],
|
|
||||||
})
|
|
||||||
end
|
|
||||||
},
|
|
||||||
|
|
||||||
attach_mappings = function(prompt_bufnr, _)
|
|
||||||
actions.select_default:replace(function()
|
|
||||||
actions.close(prompt_bufnr)
|
|
||||||
local selection = action_state.get_selected_entry()
|
|
||||||
vim.cmd(selection.ordinal)
|
|
||||||
end)
|
|
||||||
return true
|
|
||||||
end,
|
|
||||||
|
|
||||||
sorter = conf.generic_sorter(opts),
|
|
||||||
}):find()
|
|
||||||
end
|
|
||||||
|
|
||||||
return E
|
|
||||||
70
lua/nvchad/autocmds.lua
Normal file
70
lua/nvchad/autocmds.lua
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
local autocmd = vim.api.nvim_create_autocmd
|
||||||
|
|
||||||
|
-- dont list quickfix buffers
|
||||||
|
autocmd("FileType", {
|
||||||
|
pattern = "qf",
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.buflisted = false
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- reload some chadrc options on-save
|
||||||
|
autocmd("BufWritePost", {
|
||||||
|
pattern = vim.tbl_map(function(path)
|
||||||
|
return vim.fs.normalize(vim.loop.fs_realpath(path))
|
||||||
|
end, vim.fn.glob(vim.fn.stdpath "config" .. "/lua/**/*.lua", true, true, true)),
|
||||||
|
group = vim.api.nvim_create_augroup("ReloadNvChad", {}),
|
||||||
|
|
||||||
|
callback = function(opts)
|
||||||
|
local fp = vim.fn.fnamemodify(vim.fs.normalize(vim.api.nvim_buf_get_name(opts.buf)), ":r") --[[@as string]]
|
||||||
|
local app_name = vim.env.NVIM_APPNAME and vim.env.NVIM_APPNAME or "nvim"
|
||||||
|
local module = string.gsub(fp, "^.*/" .. app_name .. "/lua/", ""):gsub("/", ".")
|
||||||
|
|
||||||
|
require("plenary.reload").reload_module "nvconfig"
|
||||||
|
require("plenary.reload").reload_module "chadrc"
|
||||||
|
require("plenary.reload").reload_module "base46"
|
||||||
|
require("plenary.reload").reload_module(module)
|
||||||
|
|
||||||
|
local config = require "nvconfig"
|
||||||
|
|
||||||
|
-- statusline
|
||||||
|
require("plenary.reload").reload_module "nvchad.stl.utils"
|
||||||
|
require("plenary.reload").reload_module("nvchad.stl." .. config.ui.statusline.theme)
|
||||||
|
vim.opt.statusline = "%!v:lua.require('nvchad.stl." .. config.ui.statusline.theme .. "')()"
|
||||||
|
|
||||||
|
-- tabufline
|
||||||
|
if config.ui.tabufline.enabled then
|
||||||
|
require("plenary.reload").reload_module "nvchad.tabufline.modules"
|
||||||
|
vim.opt.tabline = "%!v:lua.require('nvchad.tabufline.modules')()"
|
||||||
|
end
|
||||||
|
|
||||||
|
require("base46").load_all_highlights()
|
||||||
|
-- vim.cmd("redraw!")
|
||||||
|
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,
|
||||||
|
})
|
||||||
@ -2,7 +2,7 @@ local cmp = require "cmp"
|
|||||||
|
|
||||||
dofile(vim.g.base46_cache .. "cmp")
|
dofile(vim.g.base46_cache .. "cmp")
|
||||||
|
|
||||||
local cmp_ui = require("core.utils").load_config().ui.cmp
|
local cmp_ui = require("nvconfig").ui.cmp
|
||||||
local cmp_style = cmp_ui.style
|
local cmp_style = cmp_ui.style
|
||||||
|
|
||||||
local field_arrangement = {
|
local field_arrangement = {
|
||||||
@ -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" },
|
||||||
26
lua/nvchad/configs/gitsigns.lua
Normal file
26
lua/nvchad/configs/gitsigns.lua
Normal 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
|
||||||
94
lua/nvchad/configs/lspconfig.lua
Normal file
94
lua/nvchad/configs/lspconfig.lua
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
local M = {}
|
||||||
|
local map = vim.keymap.set
|
||||||
|
local conf = require("nvconfig").ui.lsp
|
||||||
|
|
||||||
|
-- export on_attach & capabilities
|
||||||
|
M.on_attach = function(client, bufnr)
|
||||||
|
local function opts(desc)
|
||||||
|
return { buffer = bufnr, desc = desc }
|
||||||
|
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.lsp.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
|
||||||
|
require("nvchad.lsp.signature").setup(client, bufnr)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- disable semanticTokens
|
||||||
|
M.on_init = function(client, _)
|
||||||
|
if client.supports_method "textDocument/semanticTokens" then
|
||||||
|
client.server_capabilities.semanticTokensProvider = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
M.capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
|
||||||
|
M.capabilities.textDocument.completion.completionItem = {
|
||||||
|
documentationFormat = { "markdown", "plaintext" },
|
||||||
|
snippetSupport = true,
|
||||||
|
preselectSupport = true,
|
||||||
|
insertReplaceSupport = true,
|
||||||
|
labelDetailsSupport = true,
|
||||||
|
deprecatedSupport = true,
|
||||||
|
commitCharactersSupport = true,
|
||||||
|
tagSupport = { valueSet = { 1 } },
|
||||||
|
resolveSupport = {
|
||||||
|
properties = {
|
||||||
|
"documentation",
|
||||||
|
"detail",
|
||||||
|
"additionalTextEdits",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
M.defaults = function()
|
||||||
|
dofile(vim.g.base46_cache .. "lsp")
|
||||||
|
require "nvchad.lsp"
|
||||||
|
|
||||||
|
require("lspconfig").lua_ls.setup {
|
||||||
|
on_attach = M.on_attach,
|
||||||
|
capabilities = M.capabilities,
|
||||||
|
on_init = M.on_init,
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
diagnostics = {
|
||||||
|
globals = { "vim" },
|
||||||
|
},
|
||||||
|
workspace = {
|
||||||
|
library = {
|
||||||
|
[vim.fn.expand "$VIMRUNTIME/lua"] = true,
|
||||||
|
[vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true,
|
||||||
|
[vim.fn.stdpath "data" .. "/lazy/ui/nvchad_types"] = true,
|
||||||
|
[vim.fn.stdpath "data" .. "/lazy/lazy.nvim/lua/lazy"] = true,
|
||||||
|
},
|
||||||
|
maxPreload = 100000,
|
||||||
|
preloadFileSize = 10000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
23
lua/nvchad/configs/luasnip.lua
Normal file
23
lua/nvchad/configs/luasnip.lua
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
-- vscode format
|
||||||
|
require("luasnip.loaders.from_vscode").lazy_load { exclude = vim.g.vscode_snippets_exclude or {} }
|
||||||
|
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,
|
||||||
|
})
|
||||||
@ -1,7 +1,7 @@
|
|||||||
local options = {
|
local options = {
|
||||||
ensure_installed = { "lua-language-server" }, -- not an option from mason.nvim
|
ensure_installed = { "lua-language-server", 'stylua' }, -- not an option from mason.nvim
|
||||||
|
|
||||||
PATH = "prepand",
|
PATH = "skip",
|
||||||
|
|
||||||
ui = {
|
ui = {
|
||||||
icons = {
|
icons = {
|
||||||
@ -1,7 +1,6 @@
|
|||||||
local options = {
|
local options = {
|
||||||
filters = {
|
filters = {
|
||||||
dotfiles = false,
|
dotfiles = false,
|
||||||
exclude = { vim.fn.stdpath "config" .. "/lua/custom" },
|
|
||||||
},
|
},
|
||||||
disable_netrw = true,
|
disable_netrw = true,
|
||||||
hijack_netrw = true,
|
hijack_netrw = true,
|
||||||
@ -19,7 +18,7 @@ local options = {
|
|||||||
preserve_window_proportions = true,
|
preserve_window_proportions = true,
|
||||||
},
|
},
|
||||||
git = {
|
git = {
|
||||||
enable = false,
|
enable = true,
|
||||||
ignore = true,
|
ignore = true,
|
||||||
},
|
},
|
||||||
filesystem_watchers = {
|
filesystem_watchers = {
|
||||||
@ -32,11 +31,11 @@ local options = {
|
|||||||
},
|
},
|
||||||
renderer = {
|
renderer = {
|
||||||
root_folder_label = false,
|
root_folder_label = false,
|
||||||
highlight_git = false,
|
highlight_git = true,
|
||||||
highlight_opened_files = "none",
|
highlight_opened_files = "none",
|
||||||
|
|
||||||
indent_markers = {
|
indent_markers = {
|
||||||
enable = false,
|
enable = true,
|
||||||
},
|
},
|
||||||
|
|
||||||
icons = {
|
icons = {
|
||||||
@ -44,7 +43,7 @@ local options = {
|
|||||||
file = true,
|
file = true,
|
||||||
folder = true,
|
folder = true,
|
||||||
folder_arrow = true,
|
folder_arrow = true,
|
||||||
git = false,
|
git = true,
|
||||||
},
|
},
|
||||||
|
|
||||||
glyphs = {
|
glyphs = {
|
||||||
63
lua/nvchad/configs/telescope.lua
Normal file
63
lua/nvchad/configs/telescope.lua
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
local options = {
|
||||||
|
defaults = {
|
||||||
|
vimgrep_arguments = {
|
||||||
|
"rg",
|
||||||
|
"-L",
|
||||||
|
"--color=never",
|
||||||
|
"--no-heading",
|
||||||
|
"--with-filename",
|
||||||
|
"--line-number",
|
||||||
|
"--column",
|
||||||
|
"--smart-case",
|
||||||
|
},
|
||||||
|
prompt_prefix = " ",
|
||||||
|
selection_caret = " ",
|
||||||
|
entry_prefix = " ",
|
||||||
|
initial_mode = "insert",
|
||||||
|
selection_strategy = "reset",
|
||||||
|
sorting_strategy = "ascending",
|
||||||
|
layout_strategy = "horizontal",
|
||||||
|
layout_config = {
|
||||||
|
horizontal = {
|
||||||
|
prompt_position = "top",
|
||||||
|
preview_width = 0.55,
|
||||||
|
results_width = 0.8,
|
||||||
|
},
|
||||||
|
vertical = {
|
||||||
|
mirror = false,
|
||||||
|
},
|
||||||
|
width = 0.87,
|
||||||
|
height = 0.80,
|
||||||
|
preview_cutoff = 120,
|
||||||
|
},
|
||||||
|
file_sorter = require("telescope.sorters").get_fuzzy_file,
|
||||||
|
file_ignore_patterns = { "node_modules" },
|
||||||
|
generic_sorter = require("telescope.sorters").get_generic_fuzzy_sorter,
|
||||||
|
path_display = { "truncate" },
|
||||||
|
winblend = 0,
|
||||||
|
border = {},
|
||||||
|
borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
|
||||||
|
color_devicons = true,
|
||||||
|
set_env = { ["COLORTERM"] = "truecolor" }, -- default = nil,
|
||||||
|
file_previewer = require("telescope.previewers").vim_buffer_cat.new,
|
||||||
|
grep_previewer = require("telescope.previewers").vim_buffer_vimgrep.new,
|
||||||
|
qflist_previewer = require("telescope.previewers").vim_buffer_qflist.new,
|
||||||
|
-- Developer configurations: Not meant for general override
|
||||||
|
buffer_previewer_maker = require("telescope.previewers").buffer_previewer_maker,
|
||||||
|
mappings = {
|
||||||
|
n = { ["q"] = require("telescope.actions").close },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
extensions_list = { "themes", "terms" },
|
||||||
|
extensions = {
|
||||||
|
fzf = {
|
||||||
|
fuzzy = true,
|
||||||
|
override_generic_sorter = true,
|
||||||
|
override_file_sorter = true,
|
||||||
|
case_mode = "smart_case",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return options
|
||||||
135
lua/nvchad/mappings.lua
Normal file
135
lua/nvchad/mappings.lua
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
local map = vim.keymap.set
|
||||||
|
|
||||||
|
map("i", "<C-b>", "<ESC>^i", { desc = "Move Beginning of line" })
|
||||||
|
map("i", "<C-e>", "<End>", { desc = "Move End of line" })
|
||||||
|
map("i", "<C-h>", "<Left>", { desc = "Move Left" })
|
||||||
|
map("i", "<C-l>", "<Right>", { desc = "Move Right" })
|
||||||
|
map("i", "<C-j>", "<Down>", { desc = "Move Down" })
|
||||||
|
map("i", "<C-k>", "<Up>", { desc = "Move Up" })
|
||||||
|
|
||||||
|
map("n", "<Esc>", "<cmd>noh<CR>", { desc = "General Clear highlights" })
|
||||||
|
|
||||||
|
map("n", "<C-h>", "<C-w>h", { desc = "Switch Window left" })
|
||||||
|
map("n", "<C-l>", "<C-w>l", { desc = "Switch Window right" })
|
||||||
|
map("n", "<C-j>", "<C-w>j", { desc = "Switch Window down" })
|
||||||
|
map("n", "<C-k>", "<C-w>k", { desc = "Switch Window up" })
|
||||||
|
|
||||||
|
map("n", "<C-s>", "<cmd>w<CR>", { desc = "File Save" })
|
||||||
|
map("n", "<C-c>", "<cmd>%y+<CR>", { desc = "File Copy whole" })
|
||||||
|
|
||||||
|
map("n", "<leader>n", "<cmd>set nu!<CR>", { desc = "Toggle Line number" })
|
||||||
|
map("n", "<leader>rn", "<cmd>set rnu!<CR>", { desc = "Toggle Relative number" })
|
||||||
|
map("n", "<leader>ch", "<cmd>NvCheatsheet<CR>", { desc = "Toggle NvCheatsheet" })
|
||||||
|
|
||||||
|
map("n", "<leader>fm", function()
|
||||||
|
require("conform").format { lsp_fallback = true }
|
||||||
|
end, { desc = "Format Files" })
|
||||||
|
|
||||||
|
-- global lsp mappings
|
||||||
|
map("n", "<leader>lf", vim.diagnostic.open_float, { desc = "Lsp floating diagnostics" })
|
||||||
|
map("n", "[d", vim.diagnostic.goto_prev, { desc = "Lsp prev diagnostic" })
|
||||||
|
map("n", "]d", vim.diagnostic.goto_next, { desc = "Lsp next diagnostic" })
|
||||||
|
map("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Lsp diagnostic loclist" })
|
||||||
|
|
||||||
|
-- tabufline
|
||||||
|
map("n", "<leader>b", "<cmd>enew<CR>", { desc = "Buffer New" })
|
||||||
|
|
||||||
|
map("n", "<tab>", function()
|
||||||
|
require("nvchad.tabufline").next()
|
||||||
|
end, { desc = "Buffer Goto next" })
|
||||||
|
|
||||||
|
map("n", "<S-tab>", function()
|
||||||
|
require("nvchad.tabufline").prev()
|
||||||
|
end, { desc = "Buffer Goto prev" })
|
||||||
|
|
||||||
|
map("n", "<leader>x", function()
|
||||||
|
require("nvchad.tabufline").close_buffer()
|
||||||
|
end, { desc = "Buffer Close" })
|
||||||
|
|
||||||
|
-- Comment
|
||||||
|
map("n", "<leader>/", function()
|
||||||
|
require("Comment.api").toggle.linewise.current()
|
||||||
|
end, { desc = "Comment Toggle" })
|
||||||
|
|
||||||
|
map(
|
||||||
|
"v",
|
||||||
|
"<leader>/",
|
||||||
|
"<ESC><cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR>",
|
||||||
|
{ desc = "Comment Toggle" }
|
||||||
|
)
|
||||||
|
|
||||||
|
-- nvimtree
|
||||||
|
map("n", "<C-n>", "<cmd>NvimTreeToggle<CR>", { desc = "Nvimtree Toggle window" })
|
||||||
|
map("n", "<leader>e", "<cmd>NvimTreeFocus<CR>", { desc = "Nvimtree Focus window" })
|
||||||
|
|
||||||
|
-- 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" })
|
||||||
|
map("n", "<leader>fh", "<cmd>Telescope help_tags<CR>", { desc = "Telescope Help page" })
|
||||||
|
|
||||||
|
map("n", "<leader>fo", "<cmd>Telescope oldfiles<CR>", { desc = "Telescope Find oldfiles" })
|
||||||
|
map("n", "<leader>fz", "<cmd>Telescope current_buffer_fuzzy_find<CR>", { desc = "Telescope Find in current buffer" })
|
||||||
|
map("n", "<leader>cm", "<cmd>Telescope git_commits<CR>", { desc = "Telescope Git commits" })
|
||||||
|
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" })
|
||||||
|
map(
|
||||||
|
"n",
|
||||||
|
"<leader>fa",
|
||||||
|
"<cmd>Telescope find_files follow=true no_ignore=true hidden=true<CR>",
|
||||||
|
{ desc = "Telescope Find all files" }
|
||||||
|
)
|
||||||
|
|
||||||
|
-- terminal
|
||||||
|
map("t", "<C-x>", "<C-\\><C-N>", { desc = "Terminal Escape terminal mode" })
|
||||||
|
|
||||||
|
-- new terminals
|
||||||
|
map("n", "<leader>h", function()
|
||||||
|
require("nvchad.term").new { pos = "sp", size = 0.3 }
|
||||||
|
end, { desc = "Terminal New horizontal term" })
|
||||||
|
|
||||||
|
map("n", "<leader>v", function()
|
||||||
|
require("nvchad.term").new { pos = "vsp", size = 0.3 }
|
||||||
|
end, { desc = "Terminal New vertical window" })
|
||||||
|
|
||||||
|
-- toggleable
|
||||||
|
map({ "n", "t" }, "<A-v>", function()
|
||||||
|
require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm", size = 0.3 }
|
||||||
|
end, { desc = "Terminal Toggleable vertical term" })
|
||||||
|
|
||||||
|
map({ "n", "t" }, "<A-h>", function()
|
||||||
|
require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm", size = 0.3 }
|
||||||
|
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" })
|
||||||
|
|
||||||
|
map("t", "<ESC>", function()
|
||||||
|
local win = vim.api.nvim_get_current_win()
|
||||||
|
vim.api.nvim_win_close(win, true)
|
||||||
|
end, { desc = "Terminal Close term in terminal mode" })
|
||||||
|
|
||||||
|
-- whichkey
|
||||||
|
map("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "Whichkey all keymaps" })
|
||||||
|
|
||||||
|
map("n", "<leader>wk", function()
|
||||||
|
vim.cmd("WhichKey " .. vim.fn.input "WhichKey: ")
|
||||||
|
end, { desc = "Whichkey query lookup" })
|
||||||
|
|
||||||
|
-- blankline
|
||||||
|
map("n", "<leader>cc", function()
|
||||||
|
local config = { scope = {} }
|
||||||
|
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
|
||||||
|
local start_row, _, end_row, _ = node:range()
|
||||||
|
if start_row ~= end_row then
|
||||||
|
vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start_row + 1, 0 })
|
||||||
|
vim.api.nvim_feedkeys("_", "n", true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end, { desc = "Blankline Jump to current context" })
|
||||||
59
lua/nvchad/options.lua
Normal file
59
lua/nvchad/options.lua
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
local opt = vim.opt
|
||||||
|
local o = vim.o
|
||||||
|
local g = vim.g
|
||||||
|
|
||||||
|
-------------------------------------- globals -----------------------------------------
|
||||||
|
g.toggle_theme_icon = " "
|
||||||
|
|
||||||
|
-------------------------------------- options ------------------------------------------
|
||||||
|
o.laststatus = 3
|
||||||
|
o.showmode = false
|
||||||
|
|
||||||
|
o.clipboard = "unnamedplus"
|
||||||
|
o.cursorline = true
|
||||||
|
o.cursorlineopt = "number"
|
||||||
|
|
||||||
|
-- Indenting
|
||||||
|
o.expandtab = true
|
||||||
|
o.shiftwidth = 2
|
||||||
|
o.smartindent = true
|
||||||
|
o.tabstop = 2
|
||||||
|
o.softtabstop = 2
|
||||||
|
|
||||||
|
opt.fillchars = { eob = " " }
|
||||||
|
o.ignorecase = true
|
||||||
|
o.smartcase = true
|
||||||
|
o.mouse = "a"
|
||||||
|
|
||||||
|
-- Numbers
|
||||||
|
o.number = true
|
||||||
|
o.numberwidth = 2
|
||||||
|
o.ruler = false
|
||||||
|
|
||||||
|
-- disable nvim intro
|
||||||
|
opt.shortmess:append "sI"
|
||||||
|
|
||||||
|
o.signcolumn = "yes"
|
||||||
|
o.splitbelow = true
|
||||||
|
o.splitright = true
|
||||||
|
o.timeoutlen = 400
|
||||||
|
o.undofile = true
|
||||||
|
|
||||||
|
-- interval for writing swap file to disk, also used by gitsigns
|
||||||
|
o.updatetime = 250
|
||||||
|
|
||||||
|
-- go to previous/next line with h,l,left arrow and right arrow
|
||||||
|
-- when cursor reaches end/beginning of line
|
||||||
|
opt.whichwrap:append "<>[]hl"
|
||||||
|
|
||||||
|
-- g.mapleader = " "
|
||||||
|
|
||||||
|
-- disable some default providers
|
||||||
|
vim.g["loaded_node_provider"] = 0
|
||||||
|
vim.g["loaded_python3_provider"] = 0
|
||||||
|
vim.g["loaded_perl_provider"] = 0
|
||||||
|
vim.g["loaded_ruby_provider"] = 0
|
||||||
|
|
||||||
|
-- add binaries installed by mason.nvim to path
|
||||||
|
local is_windows = vim.fn.has("win32") ~= 0
|
||||||
|
vim.env.PATH = vim.fn.stdpath "data" .. "/mason/bin" .. (is_windows and ";" or ":") .. vim.env.PATH
|
||||||
158
lua/nvchad/plugins/init.lua
Normal file
158
lua/nvchad/plugins/init.lua
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
return {
|
||||||
|
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
|
||||||
|
-- formatting!
|
||||||
|
{
|
||||||
|
"stevearc/conform.nvim",
|
||||||
|
opts = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
lua = { "stylua" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
require("conform").setup(opts)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
event = { "BufReadPost", "BufNewFile" },
|
||||||
|
cmd = { "TSInstall", "TSBufEnable", "TSBufDisable", "TSModuleInfo" },
|
||||||
|
build = ":TSUpdate",
|
||||||
|
opts = function()
|
||||||
|
return require "nvchad.configs.treesitter"
|
||||||
|
end,
|
||||||
|
config = function(_, opts)
|
||||||
|
dofile(vim.g.base46_cache .. "syntax")
|
||||||
|
dofile(vim.g.base46_cache .. "treesitter")
|
||||||
|
require("nvim-treesitter.configs").setup(opts)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- git stuff
|
||||||
|
{
|
||||||
|
"lewis6991/gitsigns.nvim",
|
||||||
|
event = "User FilePost",
|
||||||
|
opts = function()
|
||||||
|
return require "nvchad.configs.gitsigns"
|
||||||
|
end,
|
||||||
|
config = function(_, opts)
|
||||||
|
dofile(vim.g.base46_cache .. "git")
|
||||||
|
require("gitsigns").setup(opts)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- lsp stuff
|
||||||
|
{
|
||||||
|
"williamboman/mason.nvim",
|
||||||
|
cmd = { "Mason", "MasonInstall", "MasonInstallAll", "MasonUpdate" },
|
||||||
|
opts = function()
|
||||||
|
return require "nvchad.configs.mason"
|
||||||
|
end,
|
||||||
|
config = function(_, opts)
|
||||||
|
dofile(vim.g.base46_cache .. "mason")
|
||||||
|
require("mason").setup(opts)
|
||||||
|
|
||||||
|
-- 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
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
event = "User FilePost",
|
||||||
|
config = function()
|
||||||
|
require("nvchad.configs.lspconfig").defaults()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- load luasnips + cmp related in insert mode only
|
||||||
|
{
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
event = "InsertEnter",
|
||||||
|
dependencies = {
|
||||||
|
{
|
||||||
|
-- snippet plugin
|
||||||
|
"L3MON4D3/LuaSnip",
|
||||||
|
dependencies = "rafamadriz/friendly-snippets",
|
||||||
|
opts = { history = true, updateevents = "TextChanged,TextChangedI" },
|
||||||
|
config = function(_, opts)
|
||||||
|
require("luasnip").config.set_config(opts)
|
||||||
|
require "nvchad.configs.luasnip"
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- autopairing of (){}[] etc
|
||||||
|
{
|
||||||
|
"windwp/nvim-autopairs",
|
||||||
|
opts = {
|
||||||
|
fast_wrap = {},
|
||||||
|
disable_filetype = { "TelescopePrompt", "vim" },
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
require("nvim-autopairs").setup(opts)
|
||||||
|
|
||||||
|
-- setup cmp for autopairs
|
||||||
|
local cmp_autopairs = require "nvim-autopairs.completion.cmp"
|
||||||
|
require("cmp").event:on("confirm_done", cmp_autopairs.on_confirm_done())
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- cmp sources plugins
|
||||||
|
{
|
||||||
|
"saadparwaiz1/cmp_luasnip",
|
||||||
|
"hrsh7th/cmp-nvim-lua",
|
||||||
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
|
"hrsh7th/cmp-buffer",
|
||||||
|
"hrsh7th/cmp-path",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = function()
|
||||||
|
return require "nvchad.configs.cmp"
|
||||||
|
end,
|
||||||
|
config = function(_, opts)
|
||||||
|
require("cmp").setup(opts)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"numToStr/Comment.nvim",
|
||||||
|
keys = {
|
||||||
|
{ "gcc", mode = "n", desc = "Comment toggle current line" },
|
||||||
|
{ "gc", mode = { "n", "o" }, desc = "Comment toggle linewise" },
|
||||||
|
{ "gc", mode = "x", desc = "Comment toggle linewise (visual)" },
|
||||||
|
{ "gbc", mode = "n", desc = "Comment toggle current block" },
|
||||||
|
{ "gb", mode = { "n", "o" }, desc = "Comment toggle blockwise" },
|
||||||
|
{ "gb", mode = "x", desc = "Comment toggle blockwise (visual)" },
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
require("Comment").setup(opts)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
dependencies = { "nvim-treesitter/nvim-treesitter" },
|
||||||
|
cmd = "Telescope",
|
||||||
|
opts = function()
|
||||||
|
return require "nvchad.configs.telescope"
|
||||||
|
end,
|
||||||
|
config = function(_, opts)
|
||||||
|
dofile(vim.g.base46_cache .. "telescope")
|
||||||
|
local telescope = require "telescope"
|
||||||
|
telescope.setup(opts)
|
||||||
|
|
||||||
|
-- load extensions
|
||||||
|
for _, ext in ipairs(opts.extensions_list) do
|
||||||
|
telescope.load_extension(ext)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
85
lua/nvchad/plugins/ui.lua
Normal file
85
lua/nvchad/plugins/ui.lua
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
return {
|
||||||
|
|
||||||
|
{
|
||||||
|
"NvChad/base46",
|
||||||
|
branch = "v2.5",
|
||||||
|
build = function()
|
||||||
|
require("base46").load_all_highlights()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"NvChad/ui",
|
||||||
|
branch = "v2.5",
|
||||||
|
lazy = false,
|
||||||
|
config = function()
|
||||||
|
require "nvchad"
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"NvChad/nvim-colorizer.lua",
|
||||||
|
event = "User FilePost",
|
||||||
|
opts = { user_default_options = { names = false } },
|
||||||
|
config = function(_, opts)
|
||||||
|
require("colorizer").setup(opts)
|
||||||
|
|
||||||
|
-- execute colorizer as soon as possible
|
||||||
|
vim.defer_fn(function()
|
||||||
|
require("colorizer").attach_to_buffer(0)
|
||||||
|
end, 0)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"nvim-tree/nvim-web-devicons",
|
||||||
|
opts = function()
|
||||||
|
return { override = require "nvchad.icons.devicons" }
|
||||||
|
end,
|
||||||
|
config = function(_, opts)
|
||||||
|
dofile(vim.g.base46_cache .. "devicons")
|
||||||
|
require("nvim-web-devicons").setup(opts)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"lukas-reineke/indent-blankline.nvim",
|
||||||
|
event = "User FilePost",
|
||||||
|
opts = {
|
||||||
|
indent = { char = "│", highlight = "IblChar" },
|
||||||
|
scope = { char = "│", highlight = "IblScopeChar" },
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
dofile(vim.g.base46_cache .. "blankline")
|
||||||
|
|
||||||
|
local hooks = require "ibl.hooks"
|
||||||
|
hooks.register(hooks.type.WHITESPACE, hooks.builtin.hide_first_space_indent_level)
|
||||||
|
require("ibl").setup(opts)
|
||||||
|
|
||||||
|
dofile(vim.g.base46_cache .. "blankline")
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- file managing , picker etc
|
||||||
|
{
|
||||||
|
"nvim-tree/nvim-tree.lua",
|
||||||
|
cmd = { "NvimTreeToggle", "NvimTreeFocus" },
|
||||||
|
opts = function()
|
||||||
|
return require "nvchad.configs.nvimtree"
|
||||||
|
end,
|
||||||
|
config = function(_, opts)
|
||||||
|
dofile(vim.g.base46_cache .. "nvimtree")
|
||||||
|
require("nvim-tree").setup(opts)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"folke/which-key.nvim",
|
||||||
|
keys = { "<leader>", "<c-r>", "<c-w>", '"', "'", "`", "c", "v", "g" },
|
||||||
|
cmd = "WhichKey",
|
||||||
|
config = function(_, opts)
|
||||||
|
dofile(vim.g.base46_cache .. "whichkey")
|
||||||
|
require("which-key").setup(opts)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
@ -1,30 +1,19 @@
|
|||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
M.options = {
|
|
||||||
nvchad_branch = "v2.0",
|
|
||||||
}
|
|
||||||
|
|
||||||
M.ui = {
|
M.ui = {
|
||||||
------------------------------- base46 -------------------------------------
|
------------------------------- base46 -------------------------------------
|
||||||
-- hl = highlights
|
-- hl = highlights
|
||||||
hl_add = {},
|
hl_add = {},
|
||||||
hl_override = {},
|
hl_override = {},
|
||||||
changed_themes = {},
|
changed_themes = {},
|
||||||
theme_toggle = { "gatekeeper", "one_light" },
|
theme_toggle = { "onedark", "one_light" },
|
||||||
theme = "gatekeeper", -- default theme
|
theme = "onedark", -- default theme
|
||||||
transparency = true,
|
transparency = false,
|
||||||
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
|
|
||||||
extended_integrations = {}, -- these aren't compiled by default, ex: "alpha", "notify"
|
|
||||||
|
|
||||||
-- cmp themeing
|
|
||||||
cmp = {
|
cmp = {
|
||||||
icons = true,
|
icons = true,
|
||||||
lspkind_text = true,
|
lspkind_text = true,
|
||||||
style = "default", -- default/flat_light/flat_dark/atom/atom_colored
|
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
|
telescope = { style = "borderless" }, -- borderless / bordered
|
||||||
@ -35,17 +24,18 @@ M.ui = {
|
|||||||
-- default/round/block/arrow separators work only for default statusline theme
|
-- default/round/block/arrow separators work only for default statusline theme
|
||||||
-- round and block will work for minimal theme only
|
-- round and block will work for minimal theme only
|
||||||
separator_style = "default",
|
separator_style = "default",
|
||||||
|
order = nil,
|
||||||
|
modules = nil,
|
||||||
},
|
},
|
||||||
|
|
||||||
-- lazyload it when there are 1+ buffers
|
-- lazyload it when there are 1+ buffers
|
||||||
tabufline = {
|
tabufline = {
|
||||||
show_numbers = false,
|
|
||||||
enabled = true,
|
enabled = true,
|
||||||
lazyload = true,
|
lazyload = true,
|
||||||
overriden_modules = nil,
|
order = { "treeOffset", "buffers", "tabs", "btns" },
|
||||||
|
modules = nil,
|
||||||
},
|
},
|
||||||
|
|
||||||
-- nvdash (dashboard)
|
|
||||||
nvdash = {
|
nvdash = {
|
||||||
load_on_startup = false,
|
load_on_startup = false,
|
||||||
|
|
||||||
@ -64,7 +54,7 @@ M.ui = {
|
|||||||
buttons = {
|
buttons = {
|
||||||
{ " Find File", "Spc f f", "Telescope find_files" },
|
{ " Find File", "Spc f f", "Telescope find_files" },
|
||||||
{ " Recent Files", "Spc f o", "Telescope oldfiles" },
|
{ " Recent Files", "Spc f o", "Telescope oldfiles" },
|
||||||
{ " Find Word", "Spc f w", "Telescope find_grep" },
|
{ " Find Word", "Spc f w", "Telescope live_grep" },
|
||||||
{ " Bookmarks", "Spc m a", "Telescope marks" },
|
{ " Bookmarks", "Spc m a", "Telescope marks" },
|
||||||
{ " Themes", "Spc t h", "Telescope themes" },
|
{ " Themes", "Spc t h", "Telescope themes" },
|
||||||
{ " Mappings", "Spc c h", "NvCheatsheet" },
|
{ " Mappings", "Spc c h", "NvCheatsheet" },
|
||||||
@ -73,19 +63,24 @@ M.ui = {
|
|||||||
|
|
||||||
cheatsheet = { theme = "grid" }, -- simple/grid
|
cheatsheet = { theme = "grid" }, -- simple/grid
|
||||||
|
|
||||||
lsp = {
|
lsp = { signature = true },
|
||||||
-- show function signatures i.e args as you type
|
|
||||||
signature = {
|
term = {
|
||||||
disabled = false,
|
hl = "Normal:term,WinSeparator:WinSeparator",
|
||||||
silent = true, -- silences 'no signature help available' message from appearing
|
sizes = { sp = 0.3, vsp = 0.2 },
|
||||||
|
float = {
|
||||||
|
relative = "editor",
|
||||||
|
row = 0.3,
|
||||||
|
col = 0.25,
|
||||||
|
width = 0.5,
|
||||||
|
height = 0.4,
|
||||||
|
border = "single",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
M.plugins = "" -- path i.e "custom.plugins", so make custom/plugins.lua file
|
M.base46 = {
|
||||||
|
integrations = {},
|
||||||
|
}
|
||||||
|
|
||||||
M.lazy_nvim = require "plugins.configs.lazy_nvim" -- config for lazy.nvim startup options
|
return vim.tbl_deep_extend("force", M, require "chadrc")
|
||||||
|
|
||||||
M.mappings = require "core.mappings"
|
|
||||||
|
|
||||||
return M
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
local actions = require("diffview.actions")
|
|
||||||
|
|
||||||
local options = {}
|
|
||||||
|
|
||||||
return options
|
|
||||||
@ -1,138 +0,0 @@
|
|||||||
local M = {
|
|
||||||
port = nil, -- The port of the Go server, which runs in the background, if omitted or `nil` the port will be chosen automatically
|
|
||||||
log_path = vim.fn.stdpath("cache") .. "/gitlab.nvim.log", -- Log path for the Go server
|
|
||||||
config_path = nil, -- Custom path for `.gitlab.nvim` file, please read the "Connecting to Gitlab" section
|
|
||||||
debug = {
|
|
||||||
go_request = false,
|
|
||||||
go_response = false,
|
|
||||||
},
|
|
||||||
attachment_dir = nil, -- The local directory for files (see the "summary" section)
|
|
||||||
reviewer_settings = {
|
|
||||||
diffview = {
|
|
||||||
imply_local = false, -- If true, will attempt to use --imply_local option when calling |:DiffviewOpen|
|
|
||||||
},
|
|
||||||
},
|
|
||||||
connection_settings = {
|
|
||||||
insecure = false, -- Like curl's --insecure option, ignore bad x509 certificates on connection
|
|
||||||
},
|
|
||||||
help = "g?", -- Opens a help popup for local keymaps when a relevant view is focused (popup, discussion panel, etc)
|
|
||||||
popup = { -- The popup for comment creation, editing, and replying
|
|
||||||
keymaps = {
|
|
||||||
next_field = "<Tab>", -- Cycle to the next field. Accepts count.
|
|
||||||
prev_field = "<S-Tab>", -- Cycle to the previous field. Accepts count.
|
|
||||||
},
|
|
||||||
perform_action = "<leader>s", -- Once in normal mode, does action (like saving comment or editing description, etc)
|
|
||||||
perform_linewise_action = "<leader>l", -- Once in normal mode, does the linewise action (see logs for this job, etc)
|
|
||||||
width = "50%",
|
|
||||||
height = "80%",
|
|
||||||
border = "rounded", -- One of "
|
|
||||||
opacity = 1.0, -- From 0.0 (fully transparent) to 1.0 (fully opaque)
|
|
||||||
comment = nil, -- Individual popup overrides, e.g. { width = "60%", height = "80%", border = "single", opacity = 0.85 },
|
|
||||||
edit = nil,
|
|
||||||
note = nil,
|
|
||||||
pipeline = nil,
|
|
||||||
reply = nil,
|
|
||||||
squash_message = nil,
|
|
||||||
temp_registers = {}, -- List of registers for backing up popup content (see `:h gitlab.nvim.temp-registers`)
|
|
||||||
},
|
|
||||||
discussion_tree = { -- The discussion tree that holds all comments
|
|
||||||
auto_open = true, -- Automatically open when the reviewer is opened
|
|
||||||
switch_view = "S", -- Toggles between the notes and discussions views
|
|
||||||
default_view = "discussions", -- Show "discussions" or "notes" by default
|
|
||||||
blacklist = {}, -- List of usernames to remove from tree (bots, CI, etc)
|
|
||||||
jump_to_file = "o", -- Jump to comment location in file
|
|
||||||
jump_to_reviewer = "m", -- Jump to the location in the reviewer window
|
|
||||||
edit_comment = "e", -- Edit comment
|
|
||||||
delete_comment = "dd", -- Delete comment
|
|
||||||
reply = "r", -- Reply to comment
|
|
||||||
toggle_node = "t", -- Opens or closes the discussion
|
|
||||||
add_emoji = "Ea", -- Add an emoji to the note/comment
|
|
||||||
-- add_emoji = "Ed", -- Remove an emoji from a note/comment
|
|
||||||
toggle_all_discussions = "T", -- Open or close separately both resolved and unresolved discussions
|
|
||||||
toggle_resolved_discussions = "R", -- Open or close all resolved discussions
|
|
||||||
toggle_unresolved_discussions = "U", -- Open or close all unresolved discussions
|
|
||||||
keep_current_open = false, -- If true, current discussion stays open even if it should otherwise be closed when toggling
|
|
||||||
publish_draft = "P", -- Publishes the currently focused note/comment
|
|
||||||
toggle_resolved = "p", -- Toggles the resolved status of the whole discussion
|
|
||||||
position = "left", -- "top", "right", "bottom" or "left"
|
|
||||||
open_in_browser = "b", -- Jump to the URL of the current note/discussion
|
|
||||||
copy_node_url = "u", -- Copy the URL of the current node to clipboard
|
|
||||||
size = "30%", -- Size of split
|
|
||||||
relative = "editor", -- Position of tree split relative to "editor" or "window"
|
|
||||||
resolved = '✓', -- Symbol to show next to resolved discussions
|
|
||||||
unresolved = '✗', -- Symbol to show next to unresolved discussions
|
|
||||||
tree_type = "by_file_name", -- Type of discussion tree - "simple" means just list of discussions, "by_file_name" means file tree with discussions under file
|
|
||||||
toggle_tree_type = "i", -- Toggle type of discussion tree - "simple", or "by_file_name"
|
|
||||||
draft_mode = false, -- Whether comments are posted as drafts as part of a review
|
|
||||||
toggle_draft_mode = "D", -- Toggle between draft mode (comments posted as drafts) and live mode (comments are posted immediately)
|
|
||||||
winbar = nil, -- Custom function to return winbar title, should return a string. Provided with WinbarTable (defined in annotations.lua)
|
|
||||||
-- If using lualine, please add "gitlab" to disabled file types, otherwise you will not see the winbar.
|
|
||||||
},
|
|
||||||
choose_merge_request = {
|
|
||||||
open_reviewer = true, -- Open the reviewer window automatically after switching merge requests
|
|
||||||
},
|
|
||||||
info = { -- Show additional fields in the summary view
|
|
||||||
enabled = true,
|
|
||||||
horizontal = false, -- Display metadata to the left of the summary rather than underneath
|
|
||||||
fields = { -- The fields listed here will be displayed, in whatever order you choose
|
|
||||||
"author",
|
|
||||||
"created_at",
|
|
||||||
"updated_at",
|
|
||||||
"merge_status",
|
|
||||||
"draft",
|
|
||||||
"conflicts",
|
|
||||||
"assignees",
|
|
||||||
"reviewers",
|
|
||||||
"pipeline",
|
|
||||||
"branch",
|
|
||||||
"target_branch",
|
|
||||||
"delete_branch",
|
|
||||||
"squash",
|
|
||||||
"labels",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
discussion_signs = {
|
|
||||||
enabled = true, -- Show diagnostics for gitlab comments in the reviewer
|
|
||||||
skip_resolved_discussion = false, -- Show diagnostics for resolved discussions
|
|
||||||
severity = vim.diagnostic.severity.INFO, -- ERROR, WARN, INFO, or HINT
|
|
||||||
virtual_text = false, -- Whether to show the comment text inline as floating virtual text
|
|
||||||
priority = 100, -- Higher will override LSP warnings, etc
|
|
||||||
icons = {
|
|
||||||
comment = "→|",
|
|
||||||
range = " |",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
pipeline = {
|
|
||||||
created = "",
|
|
||||||
pending = "",
|
|
||||||
preparing = "",
|
|
||||||
scheduled = "",
|
|
||||||
running = "",
|
|
||||||
canceled = "↪",
|
|
||||||
skipped = "↪",
|
|
||||||
success = "✓",
|
|
||||||
failed = "",
|
|
||||||
},
|
|
||||||
create_mr = {
|
|
||||||
target = "master", -- Default branch to target when creating an MR
|
|
||||||
template_file = nil, -- Default MR template in .gitlab/merge_request_templates
|
|
||||||
delete_branch = false, -- Whether the source branch will be marked for deletion
|
|
||||||
squash = false, -- Whether the commits will be marked for squashing
|
|
||||||
title_input = { -- Default settings for MR title input window
|
|
||||||
width = 40,
|
|
||||||
border = "rounded",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
colors = {
|
|
||||||
discussion_tree = {
|
|
||||||
username = "Keyword",
|
|
||||||
date = "Comment",
|
|
||||||
chevron = "DiffviewNonText",
|
|
||||||
directory = "Directory",
|
|
||||||
directory_icon = "DiffviewFolderSign",
|
|
||||||
file_name = "Normal",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return M
|
|
||||||
@ -1,35 +0,0 @@
|
|||||||
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 } },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
@ -1,154 +0,0 @@
|
|||||||
dofile(vim.g.base46_cache .. "lsp")
|
|
||||||
require "nvchad.lsp"
|
|
||||||
|
|
||||||
local M = {}
|
|
||||||
local utils = require "core.utils"
|
|
||||||
|
|
||||||
-- export on_attach & capabilities for custom lspconfigs
|
|
||||||
M.on_attach = function(client, bufnr)
|
|
||||||
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
|
|
||||||
end
|
|
||||||
|
|
||||||
M.capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
||||||
|
|
||||||
M.capabilities.textDocument.completion.completionItem = {
|
|
||||||
documentationFormat = { "markdown", "plaintext" },
|
|
||||||
snippetSupport = true,
|
|
||||||
preselectSupport = true,
|
|
||||||
insertReplaceSupport = true,
|
|
||||||
labelDetailsSupport = true,
|
|
||||||
deprecatedSupport = true,
|
|
||||||
commitCharactersSupport = true,
|
|
||||||
tagSupport = { valueSet = { 1 } },
|
|
||||||
resolveSupport = {
|
|
||||||
properties = {
|
|
||||||
"documentation",
|
|
||||||
"detail",
|
|
||||||
"additionalTextEdits",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
M.capabilities.textDocument.publishDiagnostics.tagSupport.valueSet = { 2 }
|
|
||||||
|
|
||||||
-- LSP settings (for overriding per client)
|
|
||||||
M.handlers = {
|
|
||||||
["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded" }),
|
|
||||||
["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = "rounded" }),
|
|
||||||
}
|
|
||||||
|
|
||||||
require("lspconfig").lua_ls.setup {
|
|
||||||
on_init = M.on_init,
|
|
||||||
on_attach = M.on_attach,
|
|
||||||
capabilities = M.capabilities,
|
|
||||||
handlers = M.handlers,
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
Lua = {
|
|
||||||
diagnostics = {
|
|
||||||
globals = { "vim" },
|
|
||||||
},
|
|
||||||
workspace = {
|
|
||||||
library = {
|
|
||||||
[vim.fn.expand "$VIMRUNTIME/lua"] = true,
|
|
||||||
[vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true,
|
|
||||||
[vim.fn.stdpath "data" .. "/lazy/ui/nvchad_types"] = true,
|
|
||||||
[vim.fn.stdpath "data" .. "/lazy/lazy.nvim/lua/lazy"] = true,
|
|
||||||
},
|
|
||||||
maxPreload = 100000,
|
|
||||||
preloadFileSize = 10000,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- local capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
||||||
-- capabilities.textDocument.publishDiagnostics.tagSupport.valueSet = { 2 }
|
|
||||||
|
|
||||||
require("lspconfig").pyright.setup {
|
|
||||||
on_init = M.on_init,
|
|
||||||
on_attach = M.on_attach,
|
|
||||||
capabilities = M.capabilities,
|
|
||||||
handlers = M.handlers,
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
pyright = {
|
|
||||||
-- Options available here: https://github.com/microsoft/pyright/blob/main/docs/settings.md
|
|
||||||
disableOrganizeImports = true, -- Using Ruff
|
|
||||||
-- disableLanguageServices = true, -- Using Ruff
|
|
||||||
},
|
|
||||||
python = {
|
|
||||||
analysis = {
|
|
||||||
-- ignore = { "*" }, -- Using Ruff
|
|
||||||
-- typeCheckingMode = "off", -- Using mypy
|
|
||||||
diagnosticSeverityOverrides = {
|
|
||||||
reportMissingImports = false,
|
|
||||||
reportAttributeAccessIssue = false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- -- This can be used for removing message based on regex etc. For now, all those message are disabled by the tagSupport.valueSet
|
|
||||||
-- local function filter(arr, func)
|
|
||||||
-- -- Filter in place
|
|
||||||
-- -- https://stackoverflow.com/questions/49709998/how-to-filter-a-lua-array-inplace
|
|
||||||
-- local new_index = 1
|
|
||||||
-- local size_orig = #arr
|
|
||||||
-- for old_index, v in ipairs(arr) do
|
|
||||||
-- if func(v, old_index) then
|
|
||||||
-- arr[new_index] = v
|
|
||||||
-- new_index = new_index + 1
|
|
||||||
-- end
|
|
||||||
-- end
|
|
||||||
-- for i = new_index, size_orig do
|
|
||||||
-- arr[i] = nil
|
|
||||||
-- end
|
|
||||||
-- end
|
|
||||||
--
|
|
||||||
-- local function filter_diagnostics(diagnostic)
|
|
||||||
-- -- Only filter out Pyright stuff for now
|
|
||||||
-- if diagnostic.source ~= "Pyright" then
|
|
||||||
-- return true
|
|
||||||
-- end
|
|
||||||
--
|
|
||||||
-- -- Allow kwargs to be unused, sometimes you want many functions to take the
|
|
||||||
-- -- same arguments but you don't use all the arguments in all the functions,
|
|
||||||
-- -- so kwargs is used to suck up all the extras
|
|
||||||
-- if diagnostic.message == '"kwargs" is not accessed' then
|
|
||||||
-- return false
|
|
||||||
-- end
|
|
||||||
--
|
|
||||||
-- -- Allow variables starting with an underscore
|
|
||||||
-- if string.match(diagnostic.message, '"_.+" is not accessed') then
|
|
||||||
-- return false
|
|
||||||
-- end
|
|
||||||
--
|
|
||||||
-- -- For now, remove all not accessed message. I will still have assigned but not accessed message!
|
|
||||||
-- if string.match(diagnostic.message, '".+" is not accessed') then
|
|
||||||
-- return false
|
|
||||||
-- end
|
|
||||||
--
|
|
||||||
-- return true
|
|
||||||
-- end
|
|
||||||
--
|
|
||||||
-- local function custom_on_publish_diagnostics(a, params, client_id, c)
|
|
||||||
-- filter(params.diagnostics, filter_diagnostics)
|
|
||||||
-- vim.lsp.diagnostic.on_publish_diagnostics(a, params, client_id, c)
|
|
||||||
-- end
|
|
||||||
--
|
|
||||||
-- vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(custom_on_publish_diagnostics, {})
|
|
||||||
|
|
||||||
return M
|
|
||||||
@ -1,46 +0,0 @@
|
|||||||
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
|
|
||||||
@ -1,66 +0,0 @@
|
|||||||
local M = {}
|
|
||||||
local utils = require "core.utils"
|
|
||||||
|
|
||||||
M.blankline = {
|
|
||||||
indentLine_enabled = 1,
|
|
||||||
filetype_exclude = {
|
|
||||||
"help",
|
|
||||||
"terminal",
|
|
||||||
"lazy",
|
|
||||||
"lspinfo",
|
|
||||||
"TelescopePrompt",
|
|
||||||
"TelescopeResults",
|
|
||||||
"mason",
|
|
||||||
"nvdash",
|
|
||||||
"nvcheatsheet",
|
|
||||||
"",
|
|
||||||
},
|
|
||||||
buftype_exclude = { "terminal" },
|
|
||||||
show_trailing_blankline_indent = false,
|
|
||||||
show_first_indent_level = false,
|
|
||||||
show_current_context = true,
|
|
||||||
show_current_context_start = true,
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
@ -1,48 +0,0 @@
|
|||||||
-- 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" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@ -1,355 +0,0 @@
|
|||||||
local custom_actions = {}
|
|
||||||
local actions = require("telescope.actions")
|
|
||||||
local lga_actions = require("telescope-live-grep-args.actions")
|
|
||||||
local action_state = require("telescope.actions.state")
|
|
||||||
local from_entry = require("telescope.from_entry")
|
|
||||||
local scan = require("plenary.scandir")
|
|
||||||
local pickers = require("telescope.pickers")
|
|
||||||
local finders = require("telescope.finders")
|
|
||||||
local make_entry = require("telescope.make_entry")
|
|
||||||
local action_set = require 'telescope.actions.set'
|
|
||||||
local conf = require('telescope.config').values
|
|
||||||
local builtin = require("telescope.builtin")
|
|
||||||
|
|
||||||
-- Usefull:
|
|
||||||
-- [[
|
|
||||||
-- https://github.com/JoosepAlviste/dotfiles/blob/master/config/nvim/lua/j/telescope_custom_pickers.lua
|
|
||||||
-- ]]
|
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
function custom_actions.set_extension(prompt_bufnr)
|
|
||||||
local current_input = action_state.get_current_line()
|
|
||||||
|
|
||||||
vim.ui.input({ prompt = 'Search in extension: *.' }, function(input)
|
|
||||||
if input == nil then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Close and reopen a prompt with the same input
|
|
||||||
actions.close(prompt_bufnr)
|
|
||||||
builtin.live_grep({ default_text = current_input, type_filter = input })
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
function custom_actions.to_live_grep_args(prompt_bufnr)
|
|
||||||
local current_input = action_state.get_current_line()
|
|
||||||
|
|
||||||
-- Close and reopen a prompt with live_grep_args
|
|
||||||
actions.close(prompt_bufnr)
|
|
||||||
require("telescope").extensions.live_grep_args.live_grep_args({ default_text = current_input })
|
|
||||||
end
|
|
||||||
|
|
||||||
function custom_actions.set_folders(prompt_bufnr)
|
|
||||||
local current_input = action_state.get_current_line()
|
|
||||||
|
|
||||||
local data = {}
|
|
||||||
scan.scan_dir(vim.loop.cwd(), {
|
|
||||||
hidden = true,
|
|
||||||
only_dirs = true,
|
|
||||||
respect_gitignore = true,
|
|
||||||
on_insert = function(entry)
|
|
||||||
table.insert(data, entry .. "/")
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
table.insert(data, 1, "./")
|
|
||||||
|
|
||||||
actions.close(prompt_bufnr)
|
|
||||||
-- Create a new picker with Telescope to select folders we want to filter in
|
|
||||||
pickers.new({
|
|
||||||
prompt_title = 'Select folders for current ("' .. current_input .. '") search',
|
|
||||||
finder = finders.new_table { results = data, entry_maker = make_entry.gen_from_file {} },
|
|
||||||
previewer = conf.file_previewer {},
|
|
||||||
sorter = conf.file_sorter {},
|
|
||||||
attach_mappings = function(prompt_bufnr2)
|
|
||||||
action_set.select:replace(function()
|
|
||||||
local current_picker = action_state.get_current_picker(prompt_bufnr2)
|
|
||||||
|
|
||||||
local dirs = {}
|
|
||||||
local selections = current_picker:get_multi_selection()
|
|
||||||
if vim.tbl_isempty(selections) then
|
|
||||||
table.insert(dirs, action_state.get_selected_entry().value)
|
|
||||||
else
|
|
||||||
for _, selection in ipairs(selections) do
|
|
||||||
table.insert(dirs, selection.value)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
actions.close(prompt_bufnr2)
|
|
||||||
builtin.live_grep({ default_text = current_input, search_dirs = dirs })
|
|
||||||
end)
|
|
||||||
return true
|
|
||||||
|
|
||||||
end,
|
|
||||||
}):find()
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
function custom_actions.set_files(prompt_bufnr)
|
|
||||||
local current_input = action_state.get_current_line()
|
|
||||||
local find_command = {"rg", "--files", "--color=never", "--no-heading"}
|
|
||||||
actions.close(prompt_bufnr)
|
|
||||||
if current_input ~= "" then
|
|
||||||
find_command = {"rg", "--color=never", "--no-heading", "-l", current_input}
|
|
||||||
end
|
|
||||||
|
|
||||||
local opts = {
|
|
||||||
entry_maker = make_entry.gen_from_file(),
|
|
||||||
find_command = find_command,
|
|
||||||
}
|
|
||||||
|
|
||||||
print(vim.inspect(find_command))
|
|
||||||
-- Create a new picker with Telescope to select files we want to filter in
|
|
||||||
pickers
|
|
||||||
.new(opts, {
|
|
||||||
prompt_title = 'Select files for current ("' .. current_input .. '") search',
|
|
||||||
__locations_input = true,
|
|
||||||
finder = finders.new_oneshot_job(find_command, opts),
|
|
||||||
previewer = conf.grep_previewer(opts),
|
|
||||||
sorter = conf.file_sorter(opts),
|
|
||||||
attach_mappings = function(prompt_bufnr2)
|
|
||||||
actions.select_default:replace(function()
|
|
||||||
local current_picker = action_state.get_current_picker(prompt_bufnr2)
|
|
||||||
|
|
||||||
local files = {}
|
|
||||||
local selections = current_picker:get_multi_selection()
|
|
||||||
if vim.tbl_isempty(selections) then
|
|
||||||
local entry = action_state.get_selected_entry()
|
|
||||||
table.insert(files, entry.value)
|
|
||||||
else
|
|
||||||
for _, selection in ipairs(selections) do
|
|
||||||
table.insert(files, selection.value)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Close the preview picker and select a new one, restricted to the files selected
|
|
||||||
actions.close(prompt_bufnr2)
|
|
||||||
builtin.live_grep({ default_text = current_input, search_dirs = files })
|
|
||||||
end)
|
|
||||||
return true
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
:find()
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
local options = {
|
|
||||||
defaults = {
|
|
||||||
vimgrep_arguments = {
|
|
||||||
"rg",
|
|
||||||
"-L",
|
|
||||||
"--color=never",
|
|
||||||
"--no-heading",
|
|
||||||
"--with-filename",
|
|
||||||
"--line-number",
|
|
||||||
"--column",
|
|
||||||
"--smart-case",
|
|
||||||
},
|
|
||||||
prompt_prefix = " ",
|
|
||||||
selection_caret = " ",
|
|
||||||
entry_prefix = " ",
|
|
||||||
initial_mode = "insert",
|
|
||||||
selection_strategy = "reset",
|
|
||||||
sorting_strategy = "ascending",
|
|
||||||
layout_strategy = "horizontal",
|
|
||||||
layout_config = {
|
|
||||||
horizontal = {
|
|
||||||
prompt_position = "top",
|
|
||||||
preview_width = 0.60,
|
|
||||||
results_width = 0.8,
|
|
||||||
},
|
|
||||||
vertical = {
|
|
||||||
mirror = false,
|
|
||||||
},
|
|
||||||
width = 0.90,
|
|
||||||
height = 0.92,
|
|
||||||
preview_cutoff = 200,
|
|
||||||
},
|
|
||||||
file_sorter = require("telescope.sorters").get_fuzzy_file,
|
|
||||||
file_ignore_patterns = { "node_modules" },
|
|
||||||
generic_sorter = require("telescope.sorters").get_generic_fuzzy_sorter,
|
|
||||||
path_display = { "truncate" },
|
|
||||||
winblend = 0,
|
|
||||||
border = {},
|
|
||||||
borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
|
|
||||||
color_devicons = true,
|
|
||||||
set_env = { ["COLORTERM"] = "truecolor" }, -- default = nil,
|
|
||||||
file_previewer = require("telescope.previewers").vim_buffer_cat.new,
|
|
||||||
grep_previewer = require("telescope.previewers").vim_buffer_vimgrep.new,
|
|
||||||
qflist_previewer = require("telescope.previewers").vim_buffer_qflist.new,
|
|
||||||
-- Developer configurations: Not meant for general override
|
|
||||||
buffer_previewer_maker = require("telescope.previewers").buffer_previewer_maker,
|
|
||||||
mappings = {
|
|
||||||
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 = {
|
|
||||||
-- Fuzzy refine ("Freeze the current list and start a fuzzy search in the frozen list")
|
|
||||||
["<C-i>"] = actions.to_fuzzy_refine,
|
|
||||||
|
|
||||||
-- Send to qflist or loclist
|
|
||||||
["<C-l>"] = actions.smart_send_to_loclist,
|
|
||||||
["<C-Space>"] = actions.smart_send_to_qflist,
|
|
||||||
|
|
||||||
-- Multi selection open
|
|
||||||
["<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,
|
|
||||||
},
|
|
||||||
n = i,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
live_grep = {
|
|
||||||
mappings = {
|
|
||||||
i = {
|
|
||||||
-- Fuzzy refine ("Freeze the current list and start a fuzzy search in the frozen list")
|
|
||||||
["<C-i>"] = actions.to_fuzzy_refine,
|
|
||||||
|
|
||||||
-- Send to qflist or loclist
|
|
||||||
["<C-l>"] = actions.smart_send_to_loclist,
|
|
||||||
["<C-Space>"] = actions.smart_send_to_qflist,
|
|
||||||
|
|
||||||
-- To quote prompt -> Pass to live_grep_args
|
|
||||||
["<C-k>"] = custom_actions.to_live_grep_args,
|
|
||||||
|
|
||||||
-- Search for files/folder/extensions
|
|
||||||
["<C-f>"] = custom_actions.set_files,
|
|
||||||
["<C-g>"] = custom_actions.set_folders,
|
|
||||||
["<C-e>"] = custom_actions.set_extension,
|
|
||||||
},
|
|
||||||
n = i,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
extensions_list = { "themes", "terms", "fzf", "macrothis", "live_grep_args" },
|
|
||||||
extensions = {
|
|
||||||
fzf = {
|
|
||||||
fuzzy = true,
|
|
||||||
override_generic_sorter = true,
|
|
||||||
override_file_sorter = true,
|
|
||||||
case_mode = "smart_case",
|
|
||||||
},
|
|
||||||
live_grep_args = {
|
|
||||||
auto_quoting = true,
|
|
||||||
mappings = {
|
|
||||||
i = {
|
|
||||||
-- Fuzzy refine ("Freeze the current list and start a fuzzy search in the frozen list")
|
|
||||||
["<C-i>"] = actions.to_fuzzy_refine,
|
|
||||||
|
|
||||||
-- Send to qflist or loclist
|
|
||||||
["<C-l>"] = actions.smart_send_to_loclist,
|
|
||||||
["<C-Space>"] = actions.smart_send_to_qflist,
|
|
||||||
|
|
||||||
-- Quote prompt, for passing parameters to vimgrep
|
|
||||||
["<C-k>"] = lga_actions.quote_prompt(),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return options
|
|
||||||
@ -1,133 +0,0 @@
|
|||||||
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
|
|
||||||
@ -1,609 +0,0 @@
|
|||||||
-- All plugins have lazy=true by default,to load a plugin on startup just lazy=false
|
|
||||||
-- List of all default plugins & their definitions
|
|
||||||
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 },
|
|
||||||
{ "mfussenegger/nvim-dap", lazy = false },
|
|
||||||
{
|
|
||||||
"rcarriga/nvim-dap-ui",
|
|
||||||
dependencies = {
|
|
||||||
"mfussenegger/nvim-dap",
|
|
||||||
"nvim-neotest/nvim-nio",
|
|
||||||
},
|
|
||||||
lazy = false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"mfussenegger/nvim-dap-python",
|
|
||||||
dependencies = {
|
|
||||||
"mfussenegger/nvim-dap",
|
|
||||||
"rcarriga/nvim-dap-ui",
|
|
||||||
},
|
|
||||||
lazy = false,
|
|
||||||
init = function()
|
|
||||||
require("dap-python").setup "python"
|
|
||||||
-- Setup nvim-dap-ui also
|
|
||||||
require("dapui").setup()
|
|
||||||
end,
|
|
||||||
config = function(_, _)
|
|
||||||
local dap = require "dap"
|
|
||||||
vim.api.nvim_set_hl(0, "dark-orange", { bg = "#402c16" })
|
|
||||||
vim.fn.sign_define("DapBreakpoint", { text = "🛑", texthl = "", linehl = "", numhl = "" })
|
|
||||||
vim.fn.sign_define("DapStopped", { text = "", texthl = "", linehl = "dark-orange", numhl = "" })
|
|
||||||
dap.defaults.fallback.terminal_win_cmd = "tabnew"
|
|
||||||
dap.defaults.fallback.focus_terminal = true
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Weissle/persistent-breakpoints.nvim",
|
|
||||||
lazy = false,
|
|
||||||
config = function(_, _)
|
|
||||||
require("persistent-breakpoints").setup {
|
|
||||||
load_breakpoints_event = { "BufReadPost" },
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{ "nvim-telescope/telescope-live-grep-args.nvim", lazy = false },
|
|
||||||
{ "nvim-telescope/telescope-dap.nvim", lazy = false },
|
|
||||||
{
|
|
||||||
"harrisoncramer/gitlab.nvim",
|
|
||||||
dependencies = {
|
|
||||||
"MunifTanjim/nui.nvim",
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
"sindrets/diffview.nvim",
|
|
||||||
"stevearc/dressing.nvim", -- Recommended but not required. Better UI for pickers.
|
|
||||||
"nvim-tree/nvim-web-devicons", -- Recommended but not required. Icons in discussion tree.
|
|
||||||
},
|
|
||||||
enabled = true,
|
|
||||||
lazy = false,
|
|
||||||
build = function()
|
|
||||||
require("gitlab.server").build(true)
|
|
||||||
end, -- Builds the Go binary
|
|
||||||
opts = function()
|
|
||||||
return require "plugins.configs.gitlab"
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
require("gitlab").setup(opts)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"sindrets/diffview.nvim",
|
|
||||||
lazy = false,
|
|
||||||
opts = function()
|
|
||||||
return require "plugins.configs.diffview"
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
|
|
||||||
|
|
||||||
{
|
|
||||||
"stevearc/quicker.nvim",
|
|
||||||
opts = {},
|
|
||||||
init = function()
|
|
||||||
require("quicker").setup()
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"chentoast/marks.nvim",
|
|
||||||
lazy = false,
|
|
||||||
init = function()
|
|
||||||
require("marks").setup {
|
|
||||||
default_mappings = true,
|
|
||||||
signs = true,
|
|
||||||
mappings = {},
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"stevearc/conform.nvim",
|
|
||||||
opts = {},
|
|
||||||
init = function()
|
|
||||||
require("conform").setup {
|
|
||||||
formatters_by_ft = {
|
|
||||||
lua = { "stylua" },
|
|
||||||
-- You can use a function here to determine the formatters dynamically
|
|
||||||
python = function(bufnr)
|
|
||||||
if require("conform").get_formatter_info("ruff_format", bufnr).available then
|
|
||||||
return { "isort", "black" }
|
|
||||||
-- return { "ruff_format" }
|
|
||||||
else
|
|
||||||
return { "isort", "black" }
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
-- javascript = { "prettierd", "prettier", stop_after_first = true },
|
|
||||||
},
|
|
||||||
options = {
|
|
||||||
lang_to_formatters = {
|
|
||||||
json = { "jq" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
format_on_save = {
|
|
||||||
timeout_ms = 1000,
|
|
||||||
lsp_format = "fallback",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"NvChad/base46",
|
|
||||||
branch = "v2.0",
|
|
||||||
build = function()
|
|
||||||
require("base46").load_all_highlights()
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"NvChad/ui",
|
|
||||||
branch = "v2.0",
|
|
||||||
lazy = false,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"zbirenbaum/nvterm",
|
|
||||||
init = function()
|
|
||||||
require("core.utils").load_mappings "nvterm"
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
require "base46.term"
|
|
||||||
require("nvterm").setup(opts)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"NvChad/nvim-colorizer.lua",
|
|
||||||
event = "User FilePost",
|
|
||||||
config = function(_, opts)
|
|
||||||
require("colorizer").setup(opts)
|
|
||||||
|
|
||||||
-- execute colorizer as soon as possible
|
|
||||||
vim.defer_fn(function()
|
|
||||||
require("colorizer").attach_to_buffer(0)
|
|
||||||
end, 0)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
|
||||||
opts = function()
|
|
||||||
return { override = require "nvchad.icons.devicons" }
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
dofile(vim.g.base46_cache .. "devicons")
|
|
||||||
require("nvim-web-devicons").setup(opts)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"lukas-reineke/indent-blankline.nvim",
|
|
||||||
version = "2.20.7",
|
|
||||||
init = function()
|
|
||||||
require("core.utils").lazy_load "indent-blankline.nvim"
|
|
||||||
end,
|
|
||||||
event = "User FilePost",
|
|
||||||
opts = function()
|
|
||||||
return require("plugins.configs.others").blankline
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
require("core.utils").load_mappings "blankline"
|
|
||||||
dofile(vim.g.base46_cache .. "blankline")
|
|
||||||
require("indent_blankline").setup(opts)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
event = { "BufReadPost", "BufNewFile" },
|
|
||||||
cmd = { "TSInstall", "TSBufEnable", "TSBufDisable", "TSModuleInfo" },
|
|
||||||
build = ":TSUpdate",
|
|
||||||
opts = function()
|
|
||||||
return require "plugins.configs.treesitter"
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
dofile(vim.g.base46_cache .. "syntax")
|
|
||||||
require("nvim-treesitter.configs").setup(opts)
|
|
||||||
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",
|
|
||||||
event = "User FilePost",
|
|
||||||
opts = function()
|
|
||||||
return require("plugins.configs.others").gitsigns
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
dofile(vim.g.base46_cache .. "git")
|
|
||||||
require("gitsigns").setup(opts)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- lsp stuff
|
|
||||||
{
|
|
||||||
"williamboman/mason.nvim",
|
|
||||||
cmd = { "Mason", "MasonInstall", "MasonInstallAll", "MasonUpdate" },
|
|
||||||
opts = function()
|
|
||||||
return require "plugins.configs.mason"
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
dofile(vim.g.base46_cache .. "mason")
|
|
||||||
require("mason").setup(opts)
|
|
||||||
|
|
||||||
-- 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
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"neovim/nvim-lspconfig",
|
|
||||||
event = "User FilePost",
|
|
||||||
config = function()
|
|
||||||
require "plugins.configs.lspconfig"
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- load luasnips + cmp related in insert mode only
|
|
||||||
{
|
|
||||||
"hrsh7th/nvim-cmp",
|
|
||||||
event = "InsertEnter",
|
|
||||||
dependencies = {
|
|
||||||
{
|
|
||||||
-- snippet plugin
|
|
||||||
"L3MON4D3/LuaSnip",
|
|
||||||
dependencies = "rafamadriz/friendly-snippets",
|
|
||||||
opts = { history = true, updateevents = "TextChanged,TextChangedI" },
|
|
||||||
config = function(_, opts)
|
|
||||||
require("plugins.configs.others").luasnip(opts)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- autopairing of (){}[] etc
|
|
||||||
{
|
|
||||||
"windwp/nvim-autopairs",
|
|
||||||
opts = {
|
|
||||||
fast_wrap = {},
|
|
||||||
disable_filetype = { "TelescopePrompt", "vim" },
|
|
||||||
},
|
|
||||||
config = function(_, opts)
|
|
||||||
require("nvim-autopairs").setup(opts)
|
|
||||||
|
|
||||||
-- setup cmp for autopairs
|
|
||||||
local cmp_autopairs = require "nvim-autopairs.completion.cmp"
|
|
||||||
require("cmp").event:on("confirm_done", cmp_autopairs.on_confirm_done())
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- cmp sources plugins
|
|
||||||
{
|
|
||||||
"saadparwaiz1/cmp_luasnip",
|
|
||||||
"hrsh7th/cmp-nvim-lua",
|
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
|
||||||
"hrsh7th/cmp-buffer",
|
|
||||||
"hrsh7th/cmp-path",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
opts = function()
|
|
||||||
return require "plugins.configs.cmp"
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
require("cmp").setup(opts)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"numToStr/Comment.nvim",
|
|
||||||
keys = {
|
|
||||||
{ "gcc", mode = "n", desc = "Comment toggle current line" },
|
|
||||||
{ "gc", mode = { "n", "o" }, desc = "Comment toggle linewise" },
|
|
||||||
{ "gc", mode = "x", desc = "Comment toggle linewise (visual)" },
|
|
||||||
{ "gbc", mode = "n", desc = "Comment toggle current block" },
|
|
||||||
{ "gb", mode = { "n", "o" }, desc = "Comment toggle blockwise" },
|
|
||||||
{ "gb", mode = "x", desc = "Comment toggle blockwise (visual)" },
|
|
||||||
},
|
|
||||||
init = function()
|
|
||||||
require("core.utils").load_mappings "comment"
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
require("Comment").setup(opts)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Save and load macro / register
|
|
||||||
{
|
|
||||||
"desdic/macrothis.nvim",
|
|
||||||
opts = {},
|
|
||||||
keys = {
|
|
||||||
{
|
|
||||||
"<Leader>kkd",
|
|
||||||
function()
|
|
||||||
require("macrothis").delete()
|
|
||||||
end,
|
|
||||||
desc = "[D]elete",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<Leader>kke",
|
|
||||||
function()
|
|
||||||
require("macrothis").edit()
|
|
||||||
end,
|
|
||||||
desc = "[E]dit",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<Leader>kkl",
|
|
||||||
function()
|
|
||||||
require("macrothis").load()
|
|
||||||
end,
|
|
||||||
desc = "[L]oad",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<Leader>kkn",
|
|
||||||
function()
|
|
||||||
require("macrothis").rename()
|
|
||||||
end,
|
|
||||||
desc = "Re[n]ame",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<Leader>kkq",
|
|
||||||
function()
|
|
||||||
require("macrothis").quickfix()
|
|
||||||
end,
|
|
||||||
desc = "Run macro on all files in [q]uickfix",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<Leader>kkr",
|
|
||||||
function()
|
|
||||||
require("macrothis").run()
|
|
||||||
end,
|
|
||||||
desc = "[R]un macro",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<Leader>kks",
|
|
||||||
function()
|
|
||||||
require("macrothis").save()
|
|
||||||
end,
|
|
||||||
desc = "[S]ave",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<Leader>kkx",
|
|
||||||
function()
|
|
||||||
require("macrothis").register()
|
|
||||||
end,
|
|
||||||
desc = "Edit register",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<Leader>kkp",
|
|
||||||
function()
|
|
||||||
require("macrothis").copy_register_printable()
|
|
||||||
end,
|
|
||||||
desc = "Co[p]y register as printable",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<Leader>kkm",
|
|
||||||
function()
|
|
||||||
require("macrothis").copy_macro_printable()
|
|
||||||
end,
|
|
||||||
desc = "Copy [m]acro 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",
|
|
||||||
cmd = { "NvimTreeToggle", "NvimTreeFocus" },
|
|
||||||
init = function()
|
|
||||||
require("core.utils").load_mappings "nvimtree"
|
|
||||||
end,
|
|
||||||
opts = function()
|
|
||||||
return require "plugins.configs.nvimtree"
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
dofile(vim.g.base46_cache .. "nvimtree")
|
|
||||||
require("nvim-tree").setup(opts)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"nvim-telescope/telescope.nvim",
|
|
||||||
dependencies = { "nvim-treesitter/nvim-treesitter" },
|
|
||||||
cmd = "Telescope",
|
|
||||||
init = function()
|
|
||||||
require("core.utils").load_mappings "telescope"
|
|
||||||
end,
|
|
||||||
opts = function()
|
|
||||||
return require "plugins.configs.telescope"
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
dofile(vim.g.base46_cache .. "telescope")
|
|
||||||
local telescope = require "telescope"
|
|
||||||
telescope.setup(opts)
|
|
||||||
|
|
||||||
-- load extensions
|
|
||||||
for _, ext in ipairs(opts.extensions_list) do
|
|
||||||
telescope.load_extension(ext)
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- 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"
|
|
||||||
end,
|
|
||||||
cmd = "WhichKey",
|
|
||||||
config = function(_, opts)
|
|
||||||
dofile(vim.g.base46_cache .. "whichkey")
|
|
||||||
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,
|
|
||||||
init = function()
|
|
||||||
require("noice").setup {
|
|
||||||
routes = {
|
|
||||||
{
|
|
||||||
view = "notify",
|
|
||||||
filter = { event = "msg_showmode" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
-- require("notify").setup({
|
|
||||||
-- background_colour = "#000000"
|
|
||||||
-- })
|
|
||||||
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
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"folke/trouble.nvim",
|
|
||||||
lazy = false,
|
|
||||||
cmd = "Trouble",
|
|
||||||
opts = {},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local config = require("core.utils").load_config()
|
|
||||||
|
|
||||||
if #config.plugins > 0 then
|
|
||||||
table.insert(default_plugins, { import = config.plugins })
|
|
||||||
end
|
|
||||||
|
|
||||||
require("lazy").setup(default_plugins, config.lazy_nvim)
|
|
||||||
require "plugins.configs.ruff_lsp"
|
|
||||||
Loading…
Reference in New Issue
Block a user