Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
baabb64d18 | |||
a1703d00be | |||
|
13e9b0f458 | ||
|
195fe4ae72 | ||
4517485701 | |||
841b45998e | |||
6aef27028f | |||
8a56de017a | |||
d0ea9296ac | |||
052c523466 | |||
8a89abfc4f | |||
f8e88fa96c | |||
2bc5b50420 | |||
85add23ae3 | |||
02224ade77 | |||
9f97f2d4a1 | |||
df1af847b2 | |||
1c0a2345e0 |
11
.github/README.md
vendored
11
.github/README.md
vendored
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
[![Neovim Minimum Version](https://img.shields.io/badge/Neovim-0.10-blueviolet.svg?style=flat-square&logo=Neovim&color=90E59A&logoColor=white)](https://github.com/neovim/neovim)
|
[![Neovim Minimum Version](https://img.shields.io/badge/Neovim-0.9.0-blueviolet.svg?style=flat-square&logo=Neovim&color=90E59A&logoColor=white)](https://github.com/neovim/neovim)
|
||||||
[![GitHub Issues](https://img.shields.io/github/issues/NvChad/NvChad.svg?style=flat-square&label=Issues&color=d77982)](https://github.com/NvChad/NvChad/issues)
|
[![GitHub Issues](https://img.shields.io/github/issues/NvChad/NvChad.svg?style=flat-square&label=Issues&color=d77982)](https://github.com/NvChad/NvChad/issues)
|
||||||
[![Discord](https://img.shields.io/discord/869557815780470834?color=738adb&label=Discord&logo=discord&logoColor=white&style=flat-square)](https://discord.gg/gADmkJb9Fb)
|
[![Discord](https://img.shields.io/discord/869557815780470834?color=738adb&label=Discord&logo=discord&logoColor=white&style=flat-square)](https://discord.gg/gADmkJb9Fb)
|
||||||
[![Matrix](https://img.shields.io/badge/Matrix-40aa8b.svg?style=flat-square&logo=Matrix&logoColor=white)](https://matrix.to/#/#nvchad:matrix.org)
|
[![Matrix](https://img.shields.io/badge/Matrix-40aa8b.svg?style=flat-square&logo=Matrix&logoColor=white)](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 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, bufferline 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 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.
|
- 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).
|
||||||
|
|
||||||
## Theme Showcase
|
## Theme Showcase
|
||||||
|
|
||||||
@ -87,13 +87,14 @@ 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)
|
||||||
- Git diffs and more with [gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim)
|
- Git diffs and more with [gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim)
|
||||||
- NeoVim Lsp configuration with [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) and [mason.nvim](https://github.com/williamboman/mason.nvim)
|
- NeoVim Lsp configuration with [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) and [mason.nvim](https://github.com/williamboman/mason.nvim)
|
||||||
- Autocompletion with [nvim-cmp](https://github.com/hrsh7th/nvim-cmp)
|
- Autocompletion with [nvim-cmp](https://github.com/hrsh7th/nvim-cmp)
|
||||||
- File searching, previewing text files and more with [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim).
|
- File searching, previewing image and text files and more with [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim).
|
||||||
- Syntax highlighting with [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter)
|
- Syntax highlighting with [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter)
|
||||||
- Autoclosing braces and html tags with [nvim-autopairs](https://github.com/windwp/nvim-autopairs)
|
- Autoclosing braces and html tags with [nvim-autopairs](https://github.com/windwp/nvim-autopairs)
|
||||||
- Indentlines with [indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim)
|
- Indentlines with [indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim)
|
||||||
@ -117,5 +118,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, helped me in my initial neovim journey!
|
- [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!
|
||||||
- @lorvethe for making the beautiful NvChad logo.
|
- @lorvethe for making the beautiful NvChad logo.
|
||||||
|
9
.gitignore
vendored
Normal file
9
.gitignore
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
plugin
|
||||||
|
custom
|
||||||
|
spell
|
||||||
|
ftplugin
|
||||||
|
syntax
|
||||||
|
coc-settings.json
|
||||||
|
.luarc.json
|
||||||
|
lazy-lock.json
|
||||||
|
*.log
|
79
init.lua
Normal file
79
init.lua
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
require "core"
|
||||||
|
vim.api.nvim_set_var('mapleader', ';')
|
||||||
|
|
||||||
|
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)
|
||||||
|
require "plugins"
|
||||||
|
|
||||||
|
-- Configure Telescope to scroll files with ctrl+j/k
|
||||||
|
local actions = require('telescope.actions')
|
||||||
|
local sorters = require('telescope.sorters')
|
||||||
|
|
||||||
|
require('telescope').setup {
|
||||||
|
defaults = {
|
||||||
|
mappings = {
|
||||||
|
i = {
|
||||||
|
["<C-j>"] = actions.move_selection_next,
|
||||||
|
["<C-k>"] = actions.move_selection_previous,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
file_sorter = sorters.get_fzy_sorter,
|
||||||
|
file_ignore_patterns = { '.git/*', 'node_modules/*', 'vendor/*' },
|
||||||
|
generic_sorter = sorters.get_generic_fuzzy_sorter,
|
||||||
|
},
|
||||||
|
extensions = {
|
||||||
|
fzf = {
|
||||||
|
fuzzy = true,
|
||||||
|
override_generic_sorter = true,
|
||||||
|
override_file_sorter = true,
|
||||||
|
case_mode = "smart_case",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vim.api.nvim_set_keymap('n', '<leader>e', ':NvimTreeToggle<CR>', {noremap = true, silent = true})
|
||||||
|
|
||||||
|
-- Cycle through open buffers with leader+a
|
||||||
|
vim.api.nvim_set_keymap('n', '<leader>a', ':bprevious<CR>', {noremap = true, silent = true})
|
||||||
|
vim.api.nvim_set_keymap('n', '<leader>f', ':bnext<CR>', {noremap = true, silent = true})
|
||||||
|
|
||||||
|
local builtin = require('telescope.builtin')
|
||||||
|
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
|
||||||
|
|
||||||
|
-- move the whole page without moving the cursor
|
||||||
|
vim.api.nvim_set_keymap('n', 'J', '<C-e>', { noremap = true })
|
||||||
|
vim.api.nvim_set_keymap('n', 'K', '<C-y>', { noremap = true })
|
||||||
|
|
||||||
|
-- Resize windows
|
||||||
|
vim.api.nvim_set_keymap('n', '<Up>', '5<C-w>+', { silent = true })
|
||||||
|
vim.api.nvim_set_keymap('n', '<Down>', '5<C-w>-', { silent = true })
|
||||||
|
vim.api.nvim_set_keymap('n', '<Right>', '10<C-w>>', { silent = true })
|
||||||
|
vim.api.nvim_set_keymap('n', '<Left>', '10<C-w><', { silent = true })
|
||||||
|
|
||||||
|
-- Set the tab width to 4 spaces
|
||||||
|
vim.cmd('set tabstop=4')
|
||||||
|
vim.cmd('set shiftwidth=4')
|
||||||
|
vim.cmd('set expandtab')
|
||||||
|
|
||||||
|
vim.o.hidden = true
|
||||||
|
|
||||||
|
-- Git diffthis
|
||||||
|
vim.api.nvim_set_keymap('n', '<leader>gd', ':Gitsigns diffthis<CR>', {noremap = true, silent = true})
|
||||||
|
|
62
lua/core/bootstrap.lua
Normal file
62
lua/core/bootstrap.lua
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
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_boostrap screen
|
||||||
|
require "nvchad.post_install"()
|
||||||
|
end
|
||||||
|
|
||||||
|
M.gen_chadrc_template = function()
|
||||||
|
local path = fn.stdpath "config" .. "/lua/custom"
|
||||||
|
|
||||||
|
if fn.isdirectory(path) ~= 1 then
|
||||||
|
local input = fn.input "Do you want to install example custom config? (y/N): "
|
||||||
|
|
||||||
|
if input:lower() == "y" then
|
||||||
|
M.echo "Cloning example custom config repo..."
|
||||||
|
shell_call { "git", "clone", "--depth", "1", "https://github.com/NvChad/example_config", path }
|
||||||
|
fn.delete(path .. "/.git", "rf")
|
||||||
|
else
|
||||||
|
-- use very minimal chadrc
|
||||||
|
fn.mkdir(path, "p")
|
||||||
|
|
||||||
|
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
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
92
lua/core/default_config.lua
Normal file
92
lua/core/default_config.lua
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.options = {
|
||||||
|
nvchad_branch = "v2.0",
|
||||||
|
}
|
||||||
|
|
||||||
|
M.ui = {
|
||||||
|
------------------------------- base46 -------------------------------------
|
||||||
|
-- hl = highlights
|
||||||
|
hl_add = {},
|
||||||
|
hl_override = {},
|
||||||
|
changed_themes = {},
|
||||||
|
theme_toggle = { "onedark", "one_light" },
|
||||||
|
theme = "onedark", -- default theme
|
||||||
|
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 = {
|
||||||
|
icons = true,
|
||||||
|
lspkind_text = true,
|
||||||
|
style = "default", -- default/flat_light/flat_dark/atom/atom_colored
|
||||||
|
border_color = "grey_fg", -- only applicable for "default" style, use color names from base30 variables
|
||||||
|
selected_item_bg = "colored", -- colored / simple
|
||||||
|
},
|
||||||
|
|
||||||
|
telescope = { style = "borderless" }, -- borderless / bordered
|
||||||
|
|
||||||
|
------------------------------- nvchad_ui modules -----------------------------
|
||||||
|
statusline = {
|
||||||
|
theme = "default", -- default/vscode/vscode_colored/minimal
|
||||||
|
-- default/round/block/arrow separators work only for default statusline theme
|
||||||
|
-- round and block will work for minimal theme only
|
||||||
|
separator_style = "default",
|
||||||
|
overriden_modules = nil,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- lazyload it when there are 1+ buffers
|
||||||
|
tabufline = {
|
||||||
|
show_numbers = false,
|
||||||
|
enabled = true,
|
||||||
|
lazyload = true,
|
||||||
|
overriden_modules = nil,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- nvdash (dashboard)
|
||||||
|
nvdash = {
|
||||||
|
load_on_startup = false,
|
||||||
|
|
||||||
|
header = {
|
||||||
|
" ▄ ▄ ",
|
||||||
|
" ▄ ▄▄▄ ▄ ▄▄▄ ▄ ▄ ",
|
||||||
|
" █ ▄ █▄█ ▄▄▄ █ █▄█ █ █ ",
|
||||||
|
" ▄▄ █▄█▄▄▄█ █▄█▄█▄▄█▄▄█ █ ",
|
||||||
|
" ▄ █▄▄█ ▄ ▄▄ ▄█ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ",
|
||||||
|
" █▄▄▄▄ ▄▄▄ █ ▄ ▄▄▄ ▄ ▄▄▄ ▄ ▄ █ ▄",
|
||||||
|
"▄ █ █▄█ █▄█ █ █ █▄█ █ █▄█ ▄▄▄ █ █",
|
||||||
|
"█▄█ ▄ █▄▄█▄▄█ █ ▄▄█ █ ▄ █ █▄█▄█ █",
|
||||||
|
" █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ █▄█▄▄▄█ ",
|
||||||
|
},
|
||||||
|
|
||||||
|
buttons = {
|
||||||
|
{ " Find File", "Spc f f", "Telescope find_files" },
|
||||||
|
{ " Recent Files", "Spc f o", "Telescope oldfiles" },
|
||||||
|
{ " Find Word", "Spc f w", "Telescope live_grep" },
|
||||||
|
{ " Bookmarks", "Spc m a", "Telescope marks" },
|
||||||
|
{ " Themes", "Spc t h", "Telescope themes" },
|
||||||
|
{ " Mappings", "Spc c h", "NvCheatsheet" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
cheatsheet = { theme = "grid" }, -- simple/grid
|
||||||
|
|
||||||
|
lsp = {
|
||||||
|
-- show function signatures i.e args as you type
|
||||||
|
signature = {
|
||||||
|
disabled = false,
|
||||||
|
silent = true, -- silences 'no signature help available' message from appearing
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
M.plugins = "" -- path i.e "custom.plugins", so make custom/plugins.lua file
|
||||||
|
|
||||||
|
M.lazy_nvim = require "plugins.configs.lazy_nvim" -- config for lazy.nvim startup options
|
||||||
|
|
||||||
|
M.mappings = require "core.mappings"
|
||||||
|
|
||||||
|
return M
|
115
lua/core/init.lua
Normal file
115
lua/core/init.lua
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
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 = config.ui.transparency
|
||||||
|
|
||||||
|
-------------------------------------- options ------------------------------------------
|
||||||
|
opt.laststatus = 3 -- global statusline
|
||||||
|
opt.showmode = false
|
||||||
|
|
||||||
|
opt.clipboard = "unnamedplus"
|
||||||
|
opt.cursorline = true
|
||||||
|
|
||||||
|
-- Indenting
|
||||||
|
opt.expandtab = true
|
||||||
|
opt.shiftwidth = 2
|
||||||
|
opt.smartindent = true
|
||||||
|
opt.tabstop = 2
|
||||||
|
opt.softtabstop = 2
|
||||||
|
|
||||||
|
opt.fillchars = { eob = " " }
|
||||||
|
opt.ignorecase = true
|
||||||
|
opt.smartcase = true
|
||||||
|
opt.mouse = "a"
|
||||||
|
|
||||||
|
-- Numbers
|
||||||
|
opt.number = true
|
||||||
|
opt.numberwidth = 2
|
||||||
|
opt.ruler = false
|
||||||
|
|
||||||
|
-- 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
|
||||||
|
|
||||||
|
-- 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.loop.os_uname().sysname == "Windows_NT"
|
||||||
|
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
|
||||||
|
|
||||||
|
-- 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,
|
||||||
|
})
|
||||||
|
|
||||||
|
-------------------------------------- commands ------------------------------------------
|
||||||
|
local new_cmd = vim.api.nvim_create_user_command
|
||||||
|
|
||||||
|
new_cmd("NvChadUpdate", function()
|
||||||
|
require "nvchad.updater"()
|
||||||
|
end, {})
|
468
lua/core/mappings.lua
Normal file
468
lua/core/mappings.lua
Normal file
@ -0,0 +1,468 @@
|
|||||||
|
-- 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 = {
|
||||||
|
["<Esc>"] = { ":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" },
|
||||||
|
|
||||||
|
-- save
|
||||||
|
["<C-s>"] = { "<cmd> w <CR>", "Save file" },
|
||||||
|
|
||||||
|
-- Copy all
|
||||||
|
["<C-c>"] = { "<cmd> %y+ <CR>", "Copy whole file" },
|
||||||
|
|
||||||
|
-- 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 } },
|
||||||
|
|
||||||
|
-- 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" },
|
||||||
|
},
|
||||||
|
|
||||||
|
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.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>/"] = {
|
||||||
|
function()
|
||||||
|
require("Comment.api").toggle.linewise.current()
|
||||||
|
end,
|
||||||
|
"Toggle comment",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
v = {
|
||||||
|
["<leader>/"] = {
|
||||||
|
"<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>f"] = {
|
||||||
|
function()
|
||||||
|
vim.diagnostic.open_float { border = "rounded" }
|
||||||
|
end,
|
||||||
|
"Floating diagnostic",
|
||||||
|
},
|
||||||
|
|
||||||
|
["[d"] = {
|
||||||
|
function()
|
||||||
|
vim.diagnostic.goto_prev { float = { border = "rounded" } }
|
||||||
|
end,
|
||||||
|
"Goto prev",
|
||||||
|
},
|
||||||
|
|
||||||
|
["]d"] = {
|
||||||
|
function()
|
||||||
|
vim.diagnostic.goto_next { float = { border = "rounded" } }
|
||||||
|
end,
|
||||||
|
"Goto next",
|
||||||
|
},
|
||||||
|
|
||||||
|
["<leader>q"] = {
|
||||||
|
function()
|
||||||
|
vim.diagnostic.setloclist()
|
||||||
|
end,
|
||||||
|
"Diagnostic setloclist",
|
||||||
|
},
|
||||||
|
|
||||||
|
["<leader>wa"] = {
|
||||||
|
function()
|
||||||
|
vim.lsp.buf.add_workspace_folder()
|
||||||
|
end,
|
||||||
|
"Add workspace folder",
|
||||||
|
},
|
||||||
|
|
||||||
|
["<leader>wr"] = {
|
||||||
|
function()
|
||||||
|
vim.lsp.buf.remove_workspace_folder()
|
||||||
|
end,
|
||||||
|
"Remove workspace folder",
|
||||||
|
},
|
||||||
|
|
||||||
|
["<leader>wl"] = {
|
||||||
|
function()
|
||||||
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
|
end,
|
||||||
|
"List workspace folders",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
v = {
|
||||||
|
["<leader>ca"] = {
|
||||||
|
function()
|
||||||
|
vim.lsp.buf.code_action()
|
||||||
|
end,
|
||||||
|
"LSP code action",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
M.nvimtree = {
|
||||||
|
plugin = true,
|
||||||
|
|
||||||
|
n = {
|
||||||
|
-- toggle
|
||||||
|
["<C-n>"] = { "<cmd> NvimTreeToggle <CR>", "Toggle nvimtree" },
|
||||||
|
|
||||||
|
-- focus
|
||||||
|
["<leader>e"] = { "<cmd> NvimTreeFocus <CR>", "Focus nvimtree" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
M.telescope = {
|
||||||
|
plugin = true,
|
||||||
|
|
||||||
|
n = {
|
||||||
|
-- find
|
||||||
|
["<leader>ff"] = { "<cmd> Telescope find_files <CR>", "Find files" },
|
||||||
|
["<leader>fa"] = { "<cmd> Telescope find_files follow=true no_ignore=true hidden=true <CR>", "Find all" },
|
||||||
|
["<leader>fw"] = { "<cmd> Telescope live_grep <CR>", "Live grep" },
|
||||||
|
["<leader>fb"] = { "<cmd> Telescope buffers <CR>", "Find buffers" },
|
||||||
|
["<leader>fh"] = { "<cmd> Telescope help_tags <CR>", "Help page" },
|
||||||
|
["<leader>fo"] = { "<cmd> Telescope oldfiles <CR>", "Find oldfiles" },
|
||||||
|
["<leader>fz"] = { "<cmd> Telescope current_buffer_fuzzy_find <CR>", "Find in current buffer" },
|
||||||
|
|
||||||
|
-- git
|
||||||
|
["<leader>cm"] = { "<cmd> Telescope git_commits <CR>", "Git commits" },
|
||||||
|
["<leader>gt"] = { "<cmd> Telescope git_status <CR>", "Git status" },
|
||||||
|
|
||||||
|
-- pick a hidden term
|
||||||
|
["<leader>pt"] = { "<cmd> Telescope terms <CR>", "Pick hidden term" },
|
||||||
|
|
||||||
|
-- theme switcher
|
||||||
|
["<leader>th"] = { "<cmd> Telescope themes <CR>", "Nvchad themes" },
|
||||||
|
|
||||||
|
["<leader>ma"] = { "<cmd> Telescope marks <CR>", "telescope bookmarks" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
M.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>gb"] = {
|
||||||
|
function()
|
||||||
|
package.loaded.gitsigns.blame_line()
|
||||||
|
end,
|
||||||
|
"Blame line",
|
||||||
|
},
|
||||||
|
|
||||||
|
["<leader>td"] = {
|
||||||
|
function()
|
||||||
|
require("gitsigns").toggle_deleted()
|
||||||
|
end,
|
||||||
|
"Toggle deleted",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return M
|
118
lua/core/utils.lua
Normal file
118
lua/core/utils.lua
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
local M = {}
|
||||||
|
local merge_tb = vim.tbl_deep_extend
|
||||||
|
|
||||||
|
M.load_config = function()
|
||||||
|
local config = require "core.default_config"
|
||||||
|
local chadrc_path = vim.api.nvim_get_runtime_file("lua/custom/chadrc.lua", false)[1]
|
||||||
|
|
||||||
|
if chadrc_path then
|
||||||
|
local chadrc = dofile(chadrc_path)
|
||||||
|
|
||||||
|
config.mappings = M.remove_disabled_keys(chadrc.mappings, config.mappings)
|
||||||
|
config = merge_tb("force", config, chadrc)
|
||||||
|
config.mappings.disabled = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return config
|
||||||
|
end
|
||||||
|
|
||||||
|
M.remove_disabled_keys = function(chadrc_mappings, default_mappings)
|
||||||
|
if not chadrc_mappings then
|
||||||
|
return default_mappings
|
||||||
|
end
|
||||||
|
|
||||||
|
-- store keys in a array with true value to compare
|
||||||
|
local keys_to_disable = {}
|
||||||
|
for _, mappings in pairs(chadrc_mappings) do
|
||||||
|
for mode, section_keys in pairs(mappings) do
|
||||||
|
if not keys_to_disable[mode] then
|
||||||
|
keys_to_disable[mode] = {}
|
||||||
|
end
|
||||||
|
section_keys = (type(section_keys) == "table" and section_keys) or {}
|
||||||
|
for k, _ in pairs(section_keys) do
|
||||||
|
keys_to_disable[mode][k] = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- make a copy as we need to modify default_mappings
|
||||||
|
for section_name, section_mappings in pairs(default_mappings) do
|
||||||
|
for mode, mode_mappings in pairs(section_mappings) do
|
||||||
|
mode_mappings = (type(mode_mappings) == "table" and mode_mappings) or {}
|
||||||
|
for k, _ in pairs(mode_mappings) do
|
||||||
|
-- if key if found then remove from default_mappings
|
||||||
|
if keys_to_disable[mode] and keys_to_disable[mode][k] then
|
||||||
|
default_mappings[section_name][mode][k] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return default_mappings
|
||||||
|
end
|
||||||
|
|
||||||
|
M.load_mappings = function(section, mapping_opt)
|
||||||
|
vim.schedule(function()
|
||||||
|
local function set_section_map(section_values)
|
||||||
|
if section_values.plugin then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
section_values.plugin = nil
|
||||||
|
|
||||||
|
for mode, mode_values in pairs(section_values) do
|
||||||
|
local default_opts = merge_tb("force", { mode = mode }, mapping_opt or {})
|
||||||
|
for keybind, mapping_info in pairs(mode_values) do
|
||||||
|
-- merge default + user opts
|
||||||
|
local opts = merge_tb("force", default_opts, mapping_info.opts or {})
|
||||||
|
|
||||||
|
mapping_info.opts, opts.mode = nil, nil
|
||||||
|
opts.desc = mapping_info[2]
|
||||||
|
|
||||||
|
vim.keymap.set(mode, keybind, mapping_info[1], opts)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local mappings = require("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,27 +0,0 @@
|
|||||||
local autocmd = vim.api.nvim_create_autocmd
|
|
||||||
|
|
||||||
-- user event that loads after UIEnter + only if file buf is there
|
|
||||||
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_get_option_value("buftype", { buf = args.buf })
|
|
||||||
|
|
||||||
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)
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
@ -1,24 +0,0 @@
|
|||||||
dofile(vim.g.base46_cache .. "git")
|
|
||||||
|
|
||||||
local options = {
|
|
||||||
signs = {
|
|
||||||
delete = { text = "" },
|
|
||||||
changedelete = { 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
|
|
@ -1,88 +0,0 @@
|
|||||||
local M = {}
|
|
||||||
local map = vim.keymap.set
|
|
||||||
|
|
||||||
-- export on_attach & capabilities
|
|
||||||
M.on_attach = function(_, bufnr)
|
|
||||||
local function opts(desc)
|
|
||||||
return { buffer = bufnr, desc = "LSP " .. desc }
|
|
||||||
end
|
|
||||||
|
|
||||||
map("n", "gD", vim.lsp.buf.declaration, opts "Go to declaration")
|
|
||||||
map("n", "gd", vim.lsp.buf.definition, opts "Go to definition")
|
|
||||||
map("n", "gi", vim.lsp.buf.implementation, opts "Go to implementation")
|
|
||||||
map("n", "<leader>sh", vim.lsp.buf.signature_help, opts "Show signature help")
|
|
||||||
map("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts "Add workspace folder")
|
|
||||||
map("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts "Remove workspace folder")
|
|
||||||
|
|
||||||
map("n", "<leader>wl", function()
|
|
||||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
|
||||||
end, opts "List workspace folders")
|
|
||||||
|
|
||||||
map("n", "<leader>D", vim.lsp.buf.type_definition, opts "Go to type definition")
|
|
||||||
|
|
||||||
map("n", "<leader>ra", function()
|
|
||||||
require "nvchad.lsp.renamer"()
|
|
||||||
end, opts "NvRenamer")
|
|
||||||
|
|
||||||
map({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts "Code action")
|
|
||||||
map("n", "gr", vim.lsp.buf.references, opts "Show references")
|
|
||||||
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").diagnostic_config()
|
|
||||||
|
|
||||||
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",
|
|
||||||
vim.fn.expand "$VIMRUNTIME/lua/vim/lsp",
|
|
||||||
vim.fn.stdpath "data" .. "/lazy/ui/nvchad_types",
|
|
||||||
vim.fn.stdpath "data" .. "/lazy/lazy.nvim/lua/lazy",
|
|
||||||
"${3rd}/luv/library",
|
|
||||||
},
|
|
||||||
maxPreload = 100000,
|
|
||||||
preloadFileSize = 10000,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
@ -1,22 +0,0 @@
|
|||||||
-- vscode format
|
|
||||||
require("luasnip.loaders.from_vscode").lazy_load { exclude = vim.g.vscode_snippets_exclude or {} }
|
|
||||||
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,17 +0,0 @@
|
|||||||
dofile(vim.g.base46_cache .. "mason")
|
|
||||||
|
|
||||||
local options = {
|
|
||||||
PATH = "skip",
|
|
||||||
|
|
||||||
ui = {
|
|
||||||
icons = {
|
|
||||||
package_pending = " ",
|
|
||||||
package_installed = " ",
|
|
||||||
package_uninstalled = " ",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
max_concurrent_installers = 10,
|
|
||||||
}
|
|
||||||
|
|
||||||
return options
|
|
@ -1,36 +0,0 @@
|
|||||||
dofile(vim.g.base46_cache .. "nvimtree")
|
|
||||||
|
|
||||||
local options = {
|
|
||||||
filters = { dotfiles = false },
|
|
||||||
disable_netrw = true,
|
|
||||||
hijack_cursor = true,
|
|
||||||
sync_root_with_cwd = true,
|
|
||||||
update_focused_file = {
|
|
||||||
enable = true,
|
|
||||||
update_root = false,
|
|
||||||
},
|
|
||||||
view = {
|
|
||||||
width = 30,
|
|
||||||
preserve_window_proportions = true,
|
|
||||||
},
|
|
||||||
renderer = {
|
|
||||||
root_folder_label = false,
|
|
||||||
highlight_git = true,
|
|
||||||
indent_markers = { enable = true },
|
|
||||||
icons = {
|
|
||||||
glyphs = {
|
|
||||||
default = "",
|
|
||||||
folder = {
|
|
||||||
default = "",
|
|
||||||
empty = "",
|
|
||||||
empty_open = "",
|
|
||||||
open = "",
|
|
||||||
symlink = "",
|
|
||||||
},
|
|
||||||
git = { unmerged = "" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
return options
|
|
@ -1,26 +0,0 @@
|
|||||||
dofile(vim.g.base46_cache .. "telescope")
|
|
||||||
|
|
||||||
local options = {
|
|
||||||
defaults = {
|
|
||||||
prompt_prefix = " ",
|
|
||||||
selection_caret = " ",
|
|
||||||
entry_prefix = " ",
|
|
||||||
sorting_strategy = "ascending",
|
|
||||||
layout_config = {
|
|
||||||
horizontal = {
|
|
||||||
prompt_position = "top",
|
|
||||||
preview_width = 0.55,
|
|
||||||
},
|
|
||||||
width = 0.87,
|
|
||||||
height = 0.80,
|
|
||||||
},
|
|
||||||
mappings = {
|
|
||||||
n = { ["q"] = require("telescope.actions").close },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
extensions_list = { "themes", "terms" },
|
|
||||||
extensions = {},
|
|
||||||
}
|
|
||||||
|
|
||||||
return options
|
|
@ -1,17 +0,0 @@
|
|||||||
pcall(function()
|
|
||||||
dofile(vim.g.base46_cache .. "syntax")
|
|
||||||
dofile(vim.g.base46_cache .. "treesitter")
|
|
||||||
end)
|
|
||||||
|
|
||||||
local options = {
|
|
||||||
ensure_installed = { "lua", "luadoc", "printf", "vim", "vimdoc" },
|
|
||||||
|
|
||||||
highlight = {
|
|
||||||
enable = true,
|
|
||||||
use_languagetree = true,
|
|
||||||
},
|
|
||||||
|
|
||||||
indent = { enable = true },
|
|
||||||
}
|
|
||||||
|
|
||||||
return options
|
|
@ -1,119 +0,0 @@
|
|||||||
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", "<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", "<Esc>", "<cmd>noh<CR>", { desc = "General Clear highlights" })
|
|
||||||
|
|
||||||
map("n", "<C-s>", "<cmd>w<CR>", { desc = "General Save file" })
|
|
||||||
map("n", "<C-c>", "<cmd>%y+<CR>", { desc = "General Copy whole file" })
|
|
||||||
|
|
||||||
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 = "General Format file" })
|
|
||||||
|
|
||||||
-- global lsp mappings
|
|
||||||
map("n", "<leader>ds", 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>/", "gcc", { desc = "Toggle Comment", remap = true })
|
|
||||||
map("v", "<leader>/", "gc", { desc = "Toggle comment", remap = true })
|
|
||||||
|
|
||||||
-- 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>ma", "<cmd>Telescope marks<CR>", { desc = "telescope find marks" })
|
|
||||||
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" }
|
|
||||||
end, { desc = "terminal new horizontal term" })
|
|
||||||
|
|
||||||
map("n", "<leader>v", function()
|
|
||||||
require("nvchad.term").new { pos = "vsp" }
|
|
||||||
end, { desc = "terminal new vertical window" })
|
|
||||||
|
|
||||||
-- toggleable
|
|
||||||
map({ "n", "t" }, "<A-v>", function()
|
|
||||||
require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm" }
|
|
||||||
end, { desc = "terminal toggleable vertical term" })
|
|
||||||
|
|
||||||
map({ "n", "t" }, "<A-h>", function()
|
|
||||||
require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm" }
|
|
||||||
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" })
|
|
||||||
|
|
||||||
-- 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" })
|
|
@ -1,61 +0,0 @@
|
|||||||
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
|
|
||||||
g.loaded_node_provider = 0
|
|
||||||
g.loaded_python3_provider = 0
|
|
||||||
g.loaded_perl_provider = 0
|
|
||||||
g.loaded_ruby_provider = 0
|
|
||||||
|
|
||||||
-- add binaries installed by mason.nvim to path
|
|
||||||
local is_windows = vim.fn.has "win32" ~= 0
|
|
||||||
local sep = is_windows and "\\" or "/"
|
|
||||||
local delim = is_windows and ";" or ":"
|
|
||||||
vim.env.PATH = table.concat({ vim.fn.stdpath "data", "mason", "bin" }, sep) .. delim .. vim.env.PATH
|
|
@ -1,193 +0,0 @@
|
|||||||
return {
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
|
|
||||||
{
|
|
||||||
"NvChad/base46",
|
|
||||||
build = function()
|
|
||||||
require("base46").load_all_highlights()
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"NvChad/ui",
|
|
||||||
lazy = false,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
|
||||||
opts = function()
|
|
||||||
dofile(vim.g.base46_cache .. "devicons")
|
|
||||||
return { override = require "nvchad.icons.devicons" }
|
|
||||||
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,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"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,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- formatting!
|
|
||||||
{
|
|
||||||
"stevearc/conform.nvim",
|
|
||||||
opts = {
|
|
||||||
formatters_by_ft = {
|
|
||||||
lua = { "stylua" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- git stuff
|
|
||||||
{
|
|
||||||
"lewis6991/gitsigns.nvim",
|
|
||||||
event = "User FilePost",
|
|
||||||
opts = function()
|
|
||||||
return require "nvchad.configs.gitsigns"
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- lsp stuff
|
|
||||||
{
|
|
||||||
"williamboman/mason.nvim",
|
|
||||||
cmd = { "Mason", "MasonInstall", "MasonInstallAll", "MasonUpdate" },
|
|
||||||
opts = function()
|
|
||||||
return require "nvchad.configs.mason"
|
|
||||||
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,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"nvim-telescope/telescope.nvim",
|
|
||||||
dependencies = { "nvim-treesitter/nvim-treesitter" },
|
|
||||||
cmd = "Telescope",
|
|
||||||
opts = function()
|
|
||||||
return require "nvchad.configs.telescope"
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
local telescope = require "telescope"
|
|
||||||
telescope.setup(opts)
|
|
||||||
|
|
||||||
-- load extensions
|
|
||||||
for _, ext in ipairs(opts.extensions_list) do
|
|
||||||
telescope.load_extension(ext)
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"NvChad/nvim-colorizer.lua",
|
|
||||||
event = "User FilePost",
|
|
||||||
opts = {
|
|
||||||
user_default_options = { names = false },
|
|
||||||
filetypes = {
|
|
||||||
"*",
|
|
||||||
"!lazy",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
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-treesitter/nvim-treesitter",
|
|
||||||
event = { "BufReadPost", "BufNewFile" },
|
|
||||||
cmd = { "TSInstall", "TSBufEnable", "TSBufDisable", "TSModuleInfo" },
|
|
||||||
build = ":TSUpdate",
|
|
||||||
opts = function()
|
|
||||||
return require "nvchad.configs.treesitter"
|
|
||||||
end,
|
|
||||||
config = function(_, opts)
|
|
||||||
require("nvim-treesitter.configs").setup(opts)
|
|
||||||
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("nvconfig").ui.cmp
|
local cmp_ui = require("core.utils").load_config().ui.cmp
|
||||||
local cmp_style = cmp_ui.style
|
local cmp_style = cmp_ui.style
|
||||||
|
|
||||||
local field_arrangement = {
|
local field_arrangement = {
|
||||||
@ -52,7 +52,7 @@ local options = {
|
|||||||
window = {
|
window = {
|
||||||
completion = {
|
completion = {
|
||||||
side_padding = (cmp_style ~= "atom" and cmp_style ~= "atom_colored") and 1 or 0,
|
side_padding = (cmp_style ~= "atom" and cmp_style ~= "atom_colored") and 1 or 0,
|
||||||
winhighlight = "Normal:CmpPmenu,CursorLine:CmpSel,Search:None",
|
winhighlight = "Normal:CmpPmenu,CursorLine:CmpSel,Search:PmenuSel",
|
||||||
scrollbar = false,
|
scrollbar = false,
|
||||||
},
|
},
|
||||||
documentation = {
|
documentation = {
|
||||||
@ -75,31 +75,34 @@ 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()
|
||||||
elseif require("luasnip").expand_or_jumpable() then
|
elseif require("luasnip").expand_or_jumpable() then
|
||||||
require("luasnip").expand_or_jump()
|
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-expand-or-jump", true, true, true), "")
|
||||||
else
|
else
|
||||||
fallback()
|
fallback()
|
||||||
end
|
end
|
||||||
end, { "i", "s" }),
|
end, {
|
||||||
|
"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()
|
||||||
elseif require("luasnip").jumpable(-1) then
|
elseif require("luasnip").jumpable(-1) then
|
||||||
require("luasnip").jump(-1)
|
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-jump-prev", true, true, true), "")
|
||||||
else
|
else
|
||||||
fallback()
|
fallback()
|
||||||
end
|
end
|
||||||
end, { "i", "s" }),
|
end, {
|
||||||
|
"i",
|
||||||
|
"s",
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
sources = {
|
sources = {
|
||||||
{ name = "nvim_lsp" },
|
{ name = "nvim_lsp" },
|
67
lua/plugins/configs/lspconfig.lua
Normal file
67
lua/plugins/configs/lspconfig.lua
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
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)
|
||||||
|
client.server_capabilities.documentFormattingProvider = false
|
||||||
|
client.server_capabilities.documentRangeFormattingProvider = false
|
||||||
|
|
||||||
|
utils.load_mappings("lspconfig", { buffer = bufnr })
|
||||||
|
|
||||||
|
if client.server_capabilities.signatureHelpProvider then
|
||||||
|
require("nvchad.signature").setup(client)
|
||||||
|
end
|
||||||
|
|
||||||
|
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",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
require("lspconfig").lua_ls.setup {
|
||||||
|
on_attach = M.on_attach,
|
||||||
|
capabilities = M.capabilities,
|
||||||
|
|
||||||
|
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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return M
|
28
lua/plugins/configs/mason.lua
Normal file
28
lua/plugins/configs/mason.lua
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
local options = {
|
||||||
|
ensure_installed = { "lua-language-server" }, -- not an option from mason.nvim
|
||||||
|
|
||||||
|
PATH = "skip",
|
||||||
|
|
||||||
|
ui = {
|
||||||
|
icons = {
|
||||||
|
package_pending = " ",
|
||||||
|
package_installed = " ",
|
||||||
|
package_uninstalled = " ",
|
||||||
|
},
|
||||||
|
|
||||||
|
keymaps = {
|
||||||
|
toggle_server_expand = "<CR>",
|
||||||
|
install_server = "i",
|
||||||
|
update_server = "u",
|
||||||
|
check_server_version = "c",
|
||||||
|
update_all_servers = "U",
|
||||||
|
check_outdated_servers = "C",
|
||||||
|
uninstall_server = "X",
|
||||||
|
cancel_installation = "<C-c>",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
max_concurrent_installers = 10,
|
||||||
|
}
|
||||||
|
|
||||||
|
return options
|
76
lua/plugins/configs/nvimtree.lua
Normal file
76
lua/plugins/configs/nvimtree.lua
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
local options = {
|
||||||
|
filters = {
|
||||||
|
dotfiles = false,
|
||||||
|
exclude = { vim.fn.stdpath "config" .. "/lua/custom" },
|
||||||
|
},
|
||||||
|
disable_netrw = true,
|
||||||
|
hijack_netrw = true,
|
||||||
|
hijack_cursor = true,
|
||||||
|
hijack_unnamed_buffer_when_opening = false,
|
||||||
|
sync_root_with_cwd = true,
|
||||||
|
update_focused_file = {
|
||||||
|
enable = true,
|
||||||
|
update_root = false,
|
||||||
|
},
|
||||||
|
view = {
|
||||||
|
adaptive_size = false,
|
||||||
|
side = "left",
|
||||||
|
width = 30,
|
||||||
|
preserve_window_proportions = true
|
||||||
|
-- hide_root_folder = true,
|
||||||
|
},
|
||||||
|
git = {
|
||||||
|
enable = true,
|
||||||
|
ignore = false,
|
||||||
|
},
|
||||||
|
filesystem_watchers = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
actions = {
|
||||||
|
open_file = {
|
||||||
|
resize_window = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
renderer = {
|
||||||
|
highlight_git = true,
|
||||||
|
highlight_opened_files = "none",
|
||||||
|
indent_markers = {
|
||||||
|
enable = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
icons = {
|
||||||
|
show = {
|
||||||
|
file = true,
|
||||||
|
folder = true,
|
||||||
|
folder_arrow = true,
|
||||||
|
git = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
glyphs = {
|
||||||
|
default = "",
|
||||||
|
symlink = "",
|
||||||
|
folder = {
|
||||||
|
default = "",
|
||||||
|
empty = "",
|
||||||
|
empty_open = "",
|
||||||
|
open = "",
|
||||||
|
symlink = "",
|
||||||
|
symlink_open = "",
|
||||||
|
arrow_open = "",
|
||||||
|
arrow_closed = "",
|
||||||
|
},
|
||||||
|
git = {
|
||||||
|
unstaged = "✗",
|
||||||
|
staged = "✓",
|
||||||
|
unmerged = "",
|
||||||
|
renamed = "➜",
|
||||||
|
untracked = "★",
|
||||||
|
deleted = "",
|
||||||
|
ignored = "◌",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return options
|
66
lua/plugins/configs/others.lua
Normal file
66
lua/plugins/configs/others.lua
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
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
|
63
lua/plugins/configs/telescope.lua
Normal file
63
lua/plugins/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", "fzf" },
|
||||||
|
extensions = {
|
||||||
|
fzf = {
|
||||||
|
fuzzy = true,
|
||||||
|
override_generic_sorter = true,
|
||||||
|
override_file_sorter = true,
|
||||||
|
case_mode = "smart_case",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return options
|
12
lua/plugins/configs/treesitter.lua
Normal file
12
lua/plugins/configs/treesitter.lua
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
local options = {
|
||||||
|
ensure_installed = { "lua" },
|
||||||
|
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
use_languagetree = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
indent = { enable = true },
|
||||||
|
}
|
||||||
|
|
||||||
|
return options
|
273
lua/plugins/init.lua
Normal file
273
lua/plugins/init.lua
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
-- 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",
|
||||||
|
|
||||||
|
{
|
||||||
|
"NvChad/base46",
|
||||||
|
branch = "v2.0",
|
||||||
|
build = function()
|
||||||
|
require("base46").load_all_highlights()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"NvChad/ui",
|
||||||
|
branch = "v2.0",
|
||||||
|
lazy = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"NvChad/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",
|
||||||
|
init = function()
|
||||||
|
require("core.utils").lazy_load "nvim-colorizer.lua"
|
||||||
|
end,
|
||||||
|
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,
|
||||||
|
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",
|
||||||
|
init = function()
|
||||||
|
require("core.utils").lazy_load "nvim-treesitter"
|
||||||
|
end,
|
||||||
|
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,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- git stuff
|
||||||
|
{
|
||||||
|
"lewis6991/gitsigns.nvim",
|
||||||
|
ft = { "gitcommit", "diff" },
|
||||||
|
init = function()
|
||||||
|
-- load gitsigns only when a git file is opened
|
||||||
|
vim.api.nvim_create_autocmd({ "BufRead" }, {
|
||||||
|
group = vim.api.nvim_create_augroup("GitSignsLazyLoad", { clear = true }),
|
||||||
|
callback = function()
|
||||||
|
vim.fn.system("git -C " .. '"' .. vim.fn.expand "%:p:h" .. '"' .. " rev-parse")
|
||||||
|
if vim.v.shell_error == 0 then
|
||||||
|
vim.api.nvim_del_augroup_by_name "GitSignsLazyLoad"
|
||||||
|
vim.schedule(function()
|
||||||
|
require("lazy").load { plugins = { "gitsigns.nvim" } }
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
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()
|
||||||
|
vim.cmd("MasonInstall " .. table.concat(opts.ensure_installed, " "))
|
||||||
|
end, {})
|
||||||
|
|
||||||
|
vim.g.mason_binaries_list = opts.ensure_installed
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
init = function()
|
||||||
|
require("core.utils").lazy_load "nvim-lspconfig"
|
||||||
|
end,
|
||||||
|
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,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- 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", { "nvim-telescope/telescope-fzf-native.nvim", build = "make" } },
|
||||||
|
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",
|
||||||
|
keys = { "<leader>", "<c-r>", '"', "'", "`", "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,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
Loading…
Reference in New Issue
Block a user