Compare commits
55 Commits
d42e8cb7ef
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f4f8b345dd | ||
|
|
1aea2cfc68 | ||
|
9fa8ac630c
|
|||
|
3d6e9d215e
|
|||
|
97e81424fa
|
|||
|
|
ab352ba2a9 | ||
|
a8f250f96b
|
|||
|
95089a5a57
|
|||
|
9a7981eaba
|
|||
| 78b8e47080 | |||
|
dfab17ce27
|
|||
|
8a151a6430
|
|||
|
ebbe37bece
|
|||
|
211a543b71
|
|||
|
79556ce727
|
|||
|
cc288092b8
|
|||
|
3038404b0a
|
|||
| ab2e588899 | |||
|
b4789ac055
|
|||
|
e5a4785c0c
|
|||
|
2a2ceff819
|
|||
| 73df9af394 | |||
|
283b2540ee
|
|||
|
c9631baf48
|
|||
| 9c292f0fa8 | |||
| 4ec292dde6 | |||
|
e216dc057c
|
|||
|
9bae49fa30
|
|||
|
d3ace6bbc8
|
|||
|
b29d79a356
|
|||
|
dc29310cf1
|
|||
|
f4e0406181
|
|||
|
611be5f360
|
|||
| 4f88084419 | |||
|
0ec4557f5d
|
|||
|
9f6f878fb7
|
|||
|
8742b343b3
|
|||
|
51cf93a90e
|
|||
|
19567ee2b5
|
|||
| 5cc63de54c | |||
|
03701f3616
|
|||
| ef124ea808 | |||
|
e6e69a5d7c
|
|||
|
b6e047307a
|
|||
|
9c083c98a3
|
|||
| ec9f5a7dff | |||
|
f1d8f5f834
|
|||
|
c839993a25
|
|||
|
a9518b1718
|
|||
| a95aab0e51 | |||
| 0f860cf709 | |||
| 57f8e53ec0 | |||
| 7e2edf9954 | |||
|
97110bcaad
|
|||
|
|
239756d583 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,3 +2,5 @@ plugin
|
|||||||
spell
|
spell
|
||||||
.git
|
.git
|
||||||
*.old
|
*.old
|
||||||
|
.repro
|
||||||
|
test
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
" open at last location if possible
|
|
||||||
if has('autocmd')
|
|
||||||
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" open help and man pages in a vertical split
|
|
||||||
autocmd FileType help wincmd L
|
|
||||||
autocmd FileType man wincmd L
|
|
||||||
" make terminal not have line numbers
|
|
||||||
autocmd TermOpen * setlocal nonumber norelativenumber
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
{
|
|
||||||
"diagnostic.displayByAle": false,
|
|
||||||
"diagnostic.enable": true,
|
|
||||||
"diagnostic.level": "hint",
|
|
||||||
"diagnostic-languageserver.enable": true,
|
|
||||||
"diagnostic-languageserver.filetypes": {
|
|
||||||
"sh": "shellcheck",
|
|
||||||
"python": "pylint"
|
|
||||||
},
|
|
||||||
"diagnostic-languageserver.mergeConfig": true,
|
|
||||||
"diagnostic-languageserver.formatFiletypes": {
|
|
||||||
"sh": "shfmt",
|
|
||||||
"python": ["black", "isort"]
|
|
||||||
},
|
|
||||||
"diagnostic-languageserver.formatters": {
|
|
||||||
"shfmt": {
|
|
||||||
"command": "shfmt",
|
|
||||||
"args": ["-i", "4", "-ci", "-sr"]
|
|
||||||
},
|
|
||||||
"black": {
|
|
||||||
"command": "black"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pyright.organizeimports.provider": "isort",
|
|
||||||
"pyright.completion.importSupport": true,
|
|
||||||
"pyright.enable": true,
|
|
||||||
"python.linting.pylintEnabled": true,
|
|
||||||
"python.linting.pylintPath": "/usr/bin/pylint",
|
|
||||||
"python.formatting.blackPath": "/usr/bin/black",
|
|
||||||
"python.analysis.autoSearchPaths": true,
|
|
||||||
"python.venvPath": "env",
|
|
||||||
"languageserver": {
|
|
||||||
"python": {
|
|
||||||
"command": "pyright",
|
|
||||||
"filetypes": ["python", "py"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hover.floatConfig": {
|
|
||||||
"border": true,
|
|
||||||
"shadow": true,
|
|
||||||
"focusable": true,
|
|
||||||
"highlight": "CocFloating",
|
|
||||||
"borderhighlight": "CocFloating"
|
|
||||||
},
|
|
||||||
"diagnostic.virtualText": true,
|
|
||||||
"diagnostic.virtualTextLines": 5,
|
|
||||||
"diagnostic.virtualTextLevel": "information",
|
|
||||||
"codeLens.enable": true,
|
|
||||||
"codeLens.position": "eol"
|
|
||||||
}
|
|
||||||
16
init.lua
Normal file
16
init.lua
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
require("core.lazy")
|
||||||
|
vim.cmd("colorscheme catppuccin")
|
||||||
|
require("core.keymaps")
|
||||||
|
-- require("core.lsp-notifications")
|
||||||
|
require("utils.extensions")
|
||||||
|
require("utils.telescope_extra").setup()
|
||||||
|
require("utils.git_paste").setup({
|
||||||
|
telescope_key = "<leader>pg",
|
||||||
|
})
|
||||||
|
require("utils.treesitter.parsers.hyprlang")
|
||||||
|
require("utils.hyprland.lsp")
|
||||||
|
-- vim.notify = function(msg, level, opts)
|
||||||
|
-- print("Notification debug:", msg, level, vim.inspect(opts))
|
||||||
|
-- -- Call original notify
|
||||||
|
-- require("notify")(msg, level, opts)
|
||||||
|
-- end
|
||||||
99
init.vim
99
init.vim
@@ -1,99 +0,0 @@
|
|||||||
if has('autocmd')
|
|
||||||
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" open help and man pages in a vertical split
|
|
||||||
autocmd FileType help wincmd L
|
|
||||||
autocmd FileType man wincmd L
|
|
||||||
" make terminal not have line numbers
|
|
||||||
autocmd TermOpen * setlocal nonumber norelativenumber
|
|
||||||
" call code actions function
|
|
||||||
lua require('settings')
|
|
||||||
lua require('plugins')
|
|
||||||
source ~/.config/nvim/keybindings.vim
|
|
||||||
|
|
||||||
" nvim plugins
|
|
||||||
source ~/.config/nvim/plugin-confs/bufferline.lua
|
|
||||||
" source ~/.config/nvim/plugin-confs/dashboard-art.vim
|
|
||||||
source ~/.config/nvim/plugin-confs/dashboard-nvim.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/gitsigns.lua
|
|
||||||
" source ~/.config/nvim/plugin-confs/lspfuzzy.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/lualine.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/copilot-lualine.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/nvimtree.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/presence.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/treesitter.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/treesitter-context.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/whichkey.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/telescope.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/telescope-file-browser.lua
|
|
||||||
|
|
||||||
source ~/.config/nvim/plugin-confs/goto-preview.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/lsp-kind.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/lspconfig.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/lsplines.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/null-ls.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/nvim-cmp.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/luasnip.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/fidget.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/rainbow-delimiters.lua
|
|
||||||
" source ~/.config/nvim/plugin-confs/symbols-outline.lua
|
|
||||||
" source ~/.config/nvim/plugin-confs/chatgpt.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/nvim-colorizer.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/nvim-dap-python.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/nvim-dap-bash.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/nvim-dap-ui.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/nvim-dap-virtual-text.lua
|
|
||||||
" source ~/.config/nvim/plugin-confs/copilot.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/copilot-cmp.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/nvim-notify.lua
|
|
||||||
" source ~/.config/nvim/plugin-confs/lsp-signature.lua
|
|
||||||
" source ~/.config/nvim/plugin-confs/nvim-docs-view.lua
|
|
||||||
|
|
||||||
" source ~/.config/nvim/plugin-confs/neodev.lua
|
|
||||||
|
|
||||||
" nvim and vim plugins
|
|
||||||
source ~/.vim/plugin-confs/floaterm.vim
|
|
||||||
source ~/.vim/plugin-confs/fzf.vim
|
|
||||||
source ~/.vim/plugin-confs/vim-closetag.vim
|
|
||||||
source ~/.vim/plugin-confs/wakatime.vim
|
|
||||||
|
|
||||||
" source ~/.config/nvim/plugin-confs/doomone.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/dracula.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/github-theme.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/onedarkpro.lua
|
|
||||||
source ~/.config/nvim/plugin-confs/catppuccin.lua
|
|
||||||
|
|
||||||
" CUSTOM COMMANDS
|
|
||||||
" command! -bang -nargs=? -complete=dir Files
|
|
||||||
" \ call fzf#vim#files(<q-args>, fzf#vim#with_preview({'options': ['--layout=reverse', '--info=inline', '--preview', '~/.vim/plugged/fzf.vim/bin/preview.sh']}), <bang>0)
|
|
||||||
|
|
||||||
" command! -bang -nargs=? -complete=dir AllFiles
|
|
||||||
" \ call fzf#run(fzf#wrap('allfiles', fzf#vim#with_preview({'dir': <q-args>, 'sink': 'e', 'source': 'rg --files --hidden --no-ignore', 'options': ['--layout=reverse', '--preview', '~/.vim/plugged/fzf.vim/bin/preview.sh']}), <bang>0))
|
|
||||||
|
|
||||||
" command! -bang -nargs=? -complete=dir Lines
|
|
||||||
" \ call fzf#vim#lines(<q-args>, ({'options': ['--layout=reverse']}), <bang>0)
|
|
||||||
|
|
||||||
" command! -bang -nargs=? -complete=dir Buffers
|
|
||||||
" \ call fzf#vim#buffers(<q-args>, fzf#vim#with_preview({'options': ['--layout=reverse', '--info=inline', '--preview', '~/.vim/plugged/fzf.vim/bin/preview.sh']}), <bang>0)
|
|
||||||
|
|
||||||
command! Reload execute "source ~/.config/nvim/init.vim"
|
|
||||||
command! Config execute ":e ~/.config/nvim/init.vim"
|
|
||||||
command! Plugins execute ":e ~/.config/nvim/lua/plugins.lua"
|
|
||||||
command! Keybindings execute ":e ~/.config/nvim/keybindings.vim"
|
|
||||||
command! Settings execute ":e ~/.config/nvim/lua/settings.lua"
|
|
||||||
command! Env execute ":Dotenv .env"
|
|
||||||
command! MakeTags !ctags -R .
|
|
||||||
command! Ovewrite execute ":w !sudo tee %"
|
|
||||||
command! PS execute ":PackerSync"
|
|
||||||
|
|
||||||
" set termguicolors
|
|
||||||
" colorscheme doom-one
|
|
||||||
" colorscheme onedark
|
|
||||||
" colorscheme catppuccin
|
|
||||||
highlight Pmenu ctermfg=white ctermbg=black gui=NONE guifg=white guibg=#282C34
|
|
||||||
highlight PmenuSel guifg=purple guibg=red
|
|
||||||
|
|
||||||
" run code actions on cursor hold if lsp is attached
|
|
||||||
"autocmd CursorHold,CursorHoldI * lua require('code_action_utils').code_action_listener()
|
|
||||||
autocmd CursorHold,CursorHoldI * lua if vim.tbl_isempty(vim.lsp.buf_get_clients()) then require('code_action_utils').code_action_listener() end
|
|
||||||
199
keybindings.vim
199
keybindings.vim
@@ -1,199 +0,0 @@
|
|||||||
nmap <C-u> <C-u>zz
|
|
||||||
nmap n nzzzv
|
|
||||||
nmap N Nzzzv
|
|
||||||
|
|
||||||
" paste visually without yanking to clipboard
|
|
||||||
xnoremap <leader>p "_dP
|
|
||||||
|
|
||||||
" reselect visual selection after indent
|
|
||||||
vnoremap < <gv
|
|
||||||
vnoremap > >gv
|
|
||||||
|
|
||||||
" move selected line(s) up or down and respect indent
|
|
||||||
vnoremap J :m '>+1<CR>gv=gv
|
|
||||||
vnoremap K :m '<-2<CR>gv=gv
|
|
||||||
|
|
||||||
" search
|
|
||||||
nnoremap // :Telescope current_buffer_fuzzy_find<CR>
|
|
||||||
nnoremap ?? :Telescope lsp_document_symbols<CR>
|
|
||||||
|
|
||||||
" nnoremap Q !!$SHELL<CR>
|
|
||||||
" nnoremap rn :lua vim.lsp.buf.rename()<CR>
|
|
||||||
|
|
||||||
nnoremap <C-J> :bnext<CR>
|
|
||||||
nnoremap <C-K> :bprev<CR>
|
|
||||||
|
|
||||||
nnoremap <C-T> :wa<CR>:FloatermToggle floatterm<CR>
|
|
||||||
tnoremap <C-T> <C-\><C-n>:FloatermToggle floatterm<CR>
|
|
||||||
tnoremap <Esc> <C-\><C-n>
|
|
||||||
tnoremap <leader>tt <C-\><C-N>:FloatermToggle split-term<CR>
|
|
||||||
tnoremap <leader>tf <C-\><C-N>:FloatermToggle floatterm<CR>
|
|
||||||
tnoremap <leader>tp <C-\><C-N>:FloatermToggle ipython<CR>
|
|
||||||
tnoremap <leader>tP <C-\><C-N>:FloatermToggle ipython-full<CR>
|
|
||||||
"fix issue with space in terminal leader key
|
|
||||||
tnoremap <space> <space>
|
|
||||||
|
|
||||||
|
|
||||||
nnoremap gA :lua vim.lsp.buf.code_actions()<CR>
|
|
||||||
nnoremap gd :Telescope lsp_definitions<CR>
|
|
||||||
nnoremap gDc :Telescope lsp_implementations<CR>
|
|
||||||
nnoremap gDf :Telescope lsp_definitions<CR>
|
|
||||||
nnoremap gF :edit <cfile><CR>
|
|
||||||
nnoremap gT :Telescope lsp_type_definitions<CR>
|
|
||||||
nnoremap gb :Gitsigns blame_line<CR>
|
|
||||||
nnoremap gi :Telescope lsp_implementations<CR>
|
|
||||||
nnoremap gj :Telescope jumplist<CR>
|
|
||||||
nnoremap gl :lua vim.lsp.buf.code_lens()<CR>
|
|
||||||
nnoremap gr :Telescope lsp_references<CR>
|
|
||||||
nnoremap gs :lua vim.lsp.buf.signature_help()<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>bb :Telescope buffers<CR>
|
|
||||||
nnoremap <leader>bk :bdelete<CR>
|
|
||||||
nnoremap <leader>bn :bnext<CR>
|
|
||||||
nnoremap <leader>bp :bprev<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>ca :lua vim.lsp.buf.code_action()<CR>
|
|
||||||
nnoremap <leader>cA :lua vim.lsp.buf.code_action()<CR>
|
|
||||||
nnoremap <leader>cd :Telescope diagnostics<CR>
|
|
||||||
nnoremap <leader>cDn :lua vim.diagnostic.goto_next()<CR>
|
|
||||||
nnoremap <leader>cDp :lua vim.diagnostic.goto_prev()<CR>
|
|
||||||
nnoremap <leader>cl :lua vim.diagnostic.setloclist()<CR>
|
|
||||||
nnoremap <silent> <leader>cp :vert Copilot panel<CR>
|
|
||||||
nnoremap <silent> <leader>Ci :lua require('chatgpt').edit_with_instructions()<CR>
|
|
||||||
nnoremap <silent> <leader>Cd :ChatGPTRun docstring<CR>
|
|
||||||
nnoremap <silent> <leader>Ct :ChatGPTRun add_tests<CR>
|
|
||||||
nnoremap <silent> <leader>Co :ChatGPTRun optimize_code<CR>
|
|
||||||
nnoremap <silent> <leader>Cs :ChatGPTRun summarize<CR>
|
|
||||||
nnoremap <silent> <leader>Cf :ChatGPTRun fix_bugs<CR>
|
|
||||||
nnoremap <silent> <leader>Ce :ChatGPTRun explain_code<CR>
|
|
||||||
xnoremap <silent> <leader>Ci :lua require('chatgpt').edit_with_instructions()<CR>
|
|
||||||
xnoremap <silent> <leader>Cd :ChatGPTRun docstring<CR>
|
|
||||||
xnoremap <silent> <leader>Ct :ChatGPTRun add_tests<CR>
|
|
||||||
xnoremap <silent> <leader>Co :ChatGPTRun optimize_code<CR>
|
|
||||||
xnoremap <silent> <leader>Cs :ChatGPTRun summarize<CR>
|
|
||||||
xnoremap <silent> <leader>Cf :ChatGPTRun fix_bugs<CR>
|
|
||||||
xnoremap <silent> <leader>Ce :ChatGPTRun explain_code<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>db :lua require("dap").toggle_breakpoint()<CR>
|
|
||||||
nnoremap <leader>dc :lua require("dap").continue()<CR>
|
|
||||||
nnoremap <leader>di :lua require("dap").step_into()<CR>
|
|
||||||
nnoremap <leader>do :lua require("dap").step_over()<CR>
|
|
||||||
nnoremap <leader>dO :lua require("dap").step_out()<CR>
|
|
||||||
nnoremap <leader>dr :lua require("dap").repl.open()<CR>
|
|
||||||
nnoremap <leader>dl :lua require("dap").run_last()<CR>
|
|
||||||
nnoremap <leader>dh :lua require("dap.ui.widgets").hover()<CR>
|
|
||||||
nnoremap <leader>dp :lua require("dap.ui.widgets").preview()<CR>
|
|
||||||
nnoremap <leader>df :lua require('dap.ui.widgets').centered_float(require('dap.ui.widgets').frames)<CR>
|
|
||||||
nnoremap <leader>ds :lua require('dap.ui.widgets').centered_float(require('dap.ui.widgets').scopes)<CR>
|
|
||||||
nnoremap <leader>dut :lua require("dapui").toggle()<CR>
|
|
||||||
nnoremap <leader>duo :lua require("dapui").open()<CR>
|
|
||||||
nnoremap <leader>duc :lua require("dapui").close()<CR>
|
|
||||||
nnoremap <leader>dPm :lua require("dap-python").test_method()<CR>
|
|
||||||
nnoremap <leader>dPc :lua require("dap-python").test_class()<CR>
|
|
||||||
nnoremap <leader>dPs :lua require("dap-python").debug_selection()<CR>
|
|
||||||
|
|
||||||
vnoremap <leader>dh :lua require("dap.ui.widgets").hover()<CR>
|
|
||||||
vnoremap <leader>dp :lua require("dap.ui.widgets").preview()<CR>
|
|
||||||
vnoremap <leader>dpe :lua require("dapui").eval()<CR>
|
|
||||||
|
|
||||||
nnoremap <F10> :lua require('dap').step_over()<CR>
|
|
||||||
nnoremap <F11> :lua require('dap').step_into()<CR>
|
|
||||||
nnoremap <F12> :lua require('dap').step_out()<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>D :Dotenv .env<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>ec :e ~/.config/nvim/init.vim<CR>
|
|
||||||
nnoremap <leader>ek :e ~/.config/nvim/keybindings.vim<CR>
|
|
||||||
nnoremap <leader>ep :e ~/.config/nvim/lua/plugins.lua<CR>
|
|
||||||
nnoremap <leader>es :e ~/.config/nvim/lua/settings.lua<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>fb :Telescope file_browser<CR>
|
|
||||||
nnoremap <leader>fc :Telescope color_names theme=dropdown layout_config={width=0.45,height=25,prompt_position="bottom"} layout_strategy=vertical<CR>
|
|
||||||
nnoremap <leader>ff :Telescope find_files<CR>
|
|
||||||
nnoremap <leader>fg :Telescope glyph theme=dropdown layout_config={width=0.45,height=35,prompt_position="bottom"} layout_strategy=vertical<CR>
|
|
||||||
nnoremap <leader>fr :Telescope oldfiles<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>gb :Gitsigns blame_line<CR>
|
|
||||||
nnoremap <leader>gc :Telescope git_commits<CR>
|
|
||||||
nnoremap <leader>gf :Telescope git_files<CR>
|
|
||||||
nnoremap <leader>gg :FloatermNew --title=lazygit --width=1.0 --height=1.0 --opener=vsplit lazygit<CR>
|
|
||||||
nnoremap gP <cmd>lua require('goto-preview').close_all_win()<CR>
|
|
||||||
nnoremap gR <cmd>Telescope lsp_references<CR>
|
|
||||||
nnoremap gpc <cmd>lua require('goto-preview').close_all_win()<CR>
|
|
||||||
nnoremap gpd <cmd>lua require('goto-preview').goto_preview_definition()<CR>
|
|
||||||
nnoremap gpi <cmd>lua require('goto-preview').goto_preview_implementation()<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>hc :Telescope commands<CR>
|
|
||||||
nnoremap <leader>hdc :Telescope dap commands<CR>
|
|
||||||
nnoremap <leader>hdC :Telescope dap configurations<CR>
|
|
||||||
nnoremap <leader>hdb :Telescope dap list_breakpoints<CR>
|
|
||||||
nnoremap <leader>hdv :Telescope dap variables<CR>
|
|
||||||
nnoremap <leader>hdf :Telescope dap frames<CR>
|
|
||||||
nnoremap <leader>hv :Telescope vim_options<CR>
|
|
||||||
nnoremap <leader>hk :Telescope keymaps<CR>
|
|
||||||
nnoremap <leader>hs :Telescope spell_suggest<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>isp :-1read $HOME/Templates/python.py<CR>4jw
|
|
||||||
|
|
||||||
nnoremap <leader>j :AnyJump<CR>
|
|
||||||
|
|
||||||
nnoremap K :lua vim.lsp.buf.hover()<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>ld :Telescope lsp_definitions<CR>
|
|
||||||
nnoremap <leader>lD :Telescope diagnostics<CR>
|
|
||||||
nnoremap <leader>la :lua vim.lsp.buf.code_action()<CR>
|
|
||||||
nnoremap <leader>lci :Telescope lsp_incoming_calls<CR>
|
|
||||||
nnoremap <leader>lco :Telescope lsp_outgoing_calls<CR>
|
|
||||||
nnoremap <leader>lh :lua vim.lsp.buf.signature_help()<CR>
|
|
||||||
nnoremap <leader>li :Telescope lsp_implementations<CR>
|
|
||||||
nnoremap <leader>lr :Telescope lsp_references<CR>
|
|
||||||
nnoremap <leader>lR :lua vim.lsp.buf.rename()<CR>
|
|
||||||
nnoremap <leader>ls :Telescope lsp_document_symbols<CR>
|
|
||||||
nnoremap <leader>lt :Telescope lsp_type_definitions<CR>
|
|
||||||
nnoremap <leader>lw :Telescope lsp_dynamic_workspace_symbols<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>n :NvimTreeToggle<CR>
|
|
||||||
" nnoremap <leader>r :NvimTreeRefresh<CR>
|
|
||||||
|
|
||||||
|
|
||||||
nnoremap <leader>ob :Telescope file_browser<CR>
|
|
||||||
nnoremap <leader>oc :ChatGPT<CR>
|
|
||||||
nnoremap <leader>oC :e ~/.config/nvim/init.vim<CR>
|
|
||||||
nnoremap <leader>oB :FloatermNew --title=btop --opener=vsplit btop<CR>
|
|
||||||
nnoremap <leader>od :FloatermNew --title=lazydocker --opener=vsplit lazydocker<CR>
|
|
||||||
nnoremap <leader>of :wa<CR>:FloatermToggle floatterm<CR>
|
|
||||||
nnoremap <leader>oh :FloatermNew --title=floaterm --name=split-term --opener=edit --wintype=split --position=botright --height=0.45<CR>
|
|
||||||
nnoremap <leader>on :FloatermNew --title=ncmpcpp --opener=vsplit ncmpcpp<CR>
|
|
||||||
nnoremap <leader>op :FloatermNew --title=ipython --name=ipython --opener=split --wintype=vsplit --position=botright --width=0.5 ipython<CR>
|
|
||||||
nnoremap <leader>oP :FloatermNew --title=ipython-full --name=ipython-full --opener=edit --width=1.0 --height=1.0 ipython<CR>
|
|
||||||
nnoremap <leader>or :FloatermNew --title=ranger --opener=vsplit ranger --cmd="cd $PWD"<CR>
|
|
||||||
nnoremap <leader>ot :FloatermNew --title=floaterm --name=split-term --opener=edit --wintype=vsplit --position=botright --width=0.5<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>sc :nohls<CR>
|
|
||||||
nnoremap <leader>sC :Telescope commands<CR>
|
|
||||||
nnoremap <leader>sf :Telescope find_files<CR>
|
|
||||||
nnoremap <leader>sg :Telescope live_grep<CR>
|
|
||||||
nnoremap <leader>sG :Telescope glyph<CR>
|
|
||||||
nnoremap <leader>sh :Telescope command_history<CR>
|
|
||||||
nnoremap <leader>sm :Telescope man_pages<CR>
|
|
||||||
nnoremap <leader>s/ :Telescope search_history<CR>
|
|
||||||
|
|
||||||
nnoremap <silent> <Leader>tc :Telescope colorscheme<CR>
|
|
||||||
nnoremap <silent> <leader>tf :wa<CR>:FloatermToggle floatterm<CR>
|
|
||||||
nnoremap <silent> <leader>tp :FloatermToggle ipython<CR>
|
|
||||||
nnoremap <silent> <leader>tP :FloatermToggle ipython-full<CR>
|
|
||||||
nnoremap <silent> <leader>tt :FloatermToggle split-term<CR>
|
|
||||||
nnoremap <silent> <leader>td :DBUIToggle<CR>
|
|
||||||
nnoremap <silent> <leader>Tc :Telescope color_names theme=dropdown layout_config={width=0.45,height=25,prompt_position="bottom"} layout_strategy=vertical<CR>
|
|
||||||
nnoremap <silent> <leader>Tg :Telescope glyph theme=dropdown layout_config={width=0.45,height=35,prompt_position="bottom"} layout_strategy=vertical<CR>
|
|
||||||
nnoremap <silent> <leader>Tn :Telescope notify<CR>
|
|
||||||
nnoremap <silent> <leader>Tt :Telescope<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>wa :lua vim.lsp.buf.add_workspace_folder()<CR>
|
|
||||||
nnoremap <leader>wl :lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>
|
|
||||||
nnoremap <leader>wr :lua vim.lsp.buf.remove_workspace_folder()<CR>
|
|
||||||
|
|
||||||
nmap <silent> <leader>x <cmd>!chmod +x %<CR>
|
|
||||||
|
|
||||||
nnoremap <leader>y "+
|
|
||||||
vmap <leader>y "+
|
|
||||||
65
lazy-lock.json
Normal file
65
lazy-lock.json
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
{
|
||||||
|
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
|
||||||
|
"any-jump.vim": { "branch": "master", "commit": "f95674d9a4251ac02f452d5f1861e4422f4652c7" },
|
||||||
|
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||||
|
"catppuccin": { "branch": "main", "commit": "b7bbdf93b42866f166af98d39a2563eedb7cabac" },
|
||||||
|
"cmp-async-path": { "branch": "main", "commit": "0ed1492f59e730c366d261a5ad822fa37e44c325" },
|
||||||
|
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||||
|
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
|
||||||
|
"cmp-nvim-lsp-document-symbol": { "branch": "main", "commit": "f94f7ba948e32cd302caba1c2ca3f7c697fb4fcf" },
|
||||||
|
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" },
|
||||||
|
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||||
|
"codecompanion.nvim": { "branch": "main", "commit": "e55bbf5f6969ab41414d3fd68011366d3b80d024" },
|
||||||
|
"conform.nvim": { "branch": "master", "commit": "372fc521f8421b7830ea6db4d6ea3bae1c77548c" },
|
||||||
|
"copilot-cmp": { "branch": "master", "commit": "15fc12af3d0109fa76b60b5cffa1373697e261d1" },
|
||||||
|
"copilot-lualine": { "branch": "main", "commit": "6bc29ba1fcf8f0f9ba1f0eacec2f178d9be49333" },
|
||||||
|
"copilot.lua": { "branch": "master", "commit": "a5c390f8d8e85b501b22dcb2f30e0cbbd69d5ff0" },
|
||||||
|
"dashboard-nvim": { "branch": "master", "commit": "591b5b29e2f17b97496ec3179f6ecd08bb8502cc" },
|
||||||
|
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||||
|
"fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
|
||||||
|
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||||
|
"gitsigns.nvim": { "branch": "main", "commit": "1796c7cedfe7e5dd20096c5d7b8b753d8f8d22eb" },
|
||||||
|
"goto-preview": { "branch": "main", "commit": "d1faf6ea992b5bcaaaf2c682e1aba3131a01143e" },
|
||||||
|
"image.nvim": { "branch": "master", "commit": "4c51d6202628b3b51e368152c053c3fb5c5f76f2" },
|
||||||
|
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
|
||||||
|
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||||
|
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
|
||||||
|
"lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" },
|
||||||
|
"lualine.nvim": { "branch": "master", "commit": "15884cee63a8c205334ab13ab1c891cd4d27101a" },
|
||||||
|
"mcphub.nvim": { "branch": "main", "commit": "81394b54e292a50361aba11198e5fa4ebb97d304" },
|
||||||
|
"mini.diff": { "branch": "main", "commit": "7e268d0241255abaa07b8aa0ddff028f7315fe21" },
|
||||||
|
"mini.nvim": { "branch": "main", "commit": "90ab64f944a5a63a9efebe6735e1f2c6d4db3613" },
|
||||||
|
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
|
||||||
|
"none-ls.nvim": { "branch": "main", "commit": "a49f5a79cdb76e0dc1a98899c8598f4db014c5e7" },
|
||||||
|
"nui.nvim": { "branch": "main", "commit": "8d5b0b568517935d3c84f257f272ef004d9f5a59" },
|
||||||
|
"nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" },
|
||||||
|
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
|
||||||
|
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
|
||||||
|
"nvim-html-css": { "branch": "main", "commit": "23f53cbb8cf4ae7c302ba483ea8a28e5b03713a7" },
|
||||||
|
"nvim-lint": { "branch": "master", "commit": "9dfb77ef6c5092a19502883c02dc5a02ec648729" },
|
||||||
|
"nvim-lspconfig": { "branch": "master", "commit": "46434074f188e6bfccf9d9153dd8be6b1381498b" },
|
||||||
|
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||||
|
"nvim-notify": { "branch": "master", "commit": "b5825cf9ee881dd8e43309c93374ed5b87b7a896" },
|
||||||
|
"nvim-tree.lua": { "branch": "master", "commit": "be5b788f2dc1522c73fb7afad9092331c8aebe80" },
|
||||||
|
"nvim-treesitter": { "branch": "master", "commit": "94ea4f436d2b59c80f02e293466c374584f03b8c" },
|
||||||
|
"nvim-treesitter-context": { "branch": "master", "commit": "6daca3ad780f045550b820f262002f35175a6c04" },
|
||||||
|
"nvim-web-devicons": { "branch": "master", "commit": "2c2b4eafce6cdd0cb165036faa17396eff18f847" },
|
||||||
|
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
|
||||||
|
"odis": { "branch": "master", "commit": "5176a07a729860d0c0cdefe96252fc7ff9e16d43" },
|
||||||
|
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
||||||
|
"presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" },
|
||||||
|
"rainbow-delimiters.nvim": { "branch": "master", "commit": "55ad4fb76ab68460f700599b7449385f0c4e858e" },
|
||||||
|
"render-markdown.nvim": { "branch": "main", "commit": "b2d857c848c2c27440c8e5efc8e49a9b5bcf13c6" },
|
||||||
|
"telescope-color-names.nvim": { "branch": "main", "commit": "95b372b9a8ba0fc7cf6a67be637ee37453f322da" },
|
||||||
|
"telescope-file-browser.nvim": { "branch": "master", "commit": "626998e5c1b71c130d8bc6cf7abb6709b98287bb" },
|
||||||
|
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
|
||||||
|
"telescope-glyph.nvim": { "branch": "master", "commit": "f63f01e129e71cc25b79637610674bbf0be5ce9d" },
|
||||||
|
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
||||||
|
"telescope.nvim": { "branch": "master", "commit": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5" },
|
||||||
|
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
|
||||||
|
"vim-commentary": { "branch": "master", "commit": "64a654ef4a20db1727938338310209b6a63f60c9" },
|
||||||
|
"vim-dotenv": { "branch": "master", "commit": "5c51cfcf8d87280d6414e03cd6b253eb70ecb800" },
|
||||||
|
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
|
||||||
|
"vim-wakatime": { "branch": "master", "commit": "e46d7c4f98ee0f40782008dd60cb2a79c377fb1d" },
|
||||||
|
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
|
||||||
|
}
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
local M = {}
|
|
||||||
|
|
||||||
local lsp_util = vim.lsp.util
|
|
||||||
|
|
||||||
function M.code_action_listener()
|
|
||||||
local context = { diagnostics = vim.lsp.diagnostic.get_line_diagnostics() }
|
|
||||||
local params = lsp_util.make_range_params()
|
|
||||||
params.context = context
|
|
||||||
vim.lsp.buf_request(0, 'textDocument/codeAction', params,
|
|
||||||
function(err, result, ctx, config)
|
|
||||||
-- do something with result - e.g. check if empty and show some indication such as a sign
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
76
lua/core/autocmds.lua
Normal file
76
lua/core/autocmds.lua
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
local augroup = vim.api.nvim_create_augroup
|
||||||
|
local autocmd = vim.api.nvim_create_autocmd
|
||||||
|
|
||||||
|
-- {{{ Restore cursor position
|
||||||
|
local restore_cursor = augroup("RestoreCursor", { clear = true })
|
||||||
|
autocmd("BufReadPost", {
|
||||||
|
group = restore_cursor,
|
||||||
|
callback = function()
|
||||||
|
local mark = vim.api.nvim_buf_get_mark(0, '"')
|
||||||
|
local lcount = vim.api.nvim_buf_line_count(0)
|
||||||
|
if mark[1] > 0 and mark[1] <= lcount then
|
||||||
|
pcall(vim.api.nvim_win_set_cursor, 0, mark)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Open help and man in vertical split
|
||||||
|
local help_config = augroup("HelpConfig", { clear = true })
|
||||||
|
autocmd("FileType", {
|
||||||
|
group = help_config,
|
||||||
|
pattern = { "help", "man" },
|
||||||
|
command = "wincmd L",
|
||||||
|
})
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ set term options
|
||||||
|
local term_config = augroup("TermConfig", { clear = true })
|
||||||
|
autocmd("TermOpen", {
|
||||||
|
group = term_config,
|
||||||
|
pattern = "*",
|
||||||
|
command = "setlocal nonumber norelativenumber",
|
||||||
|
})
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Highlight yanked text
|
||||||
|
local highlight_yank = augroup("HighlightYank", { clear = true })
|
||||||
|
autocmd("TextYankPost", {
|
||||||
|
group = highlight_yank,
|
||||||
|
pattern = "*",
|
||||||
|
callback = function()
|
||||||
|
vim.highlight.on_yank({ higroup = "IncSearch", timeout = 420 })
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Disable indent-blankline for dashboard
|
||||||
|
function disable_for_dashboard()
|
||||||
|
local buftype = vim.api.nvim_buf_get_option(0, "buftype")
|
||||||
|
local filetype = vim.api.nvim_buf_get_option(0, "filetype")
|
||||||
|
if buftype == "nofile" and filetype == "dashboard" then
|
||||||
|
vim.b.indent_blankline_enabled = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
vim.cmd([[
|
||||||
|
augroup IndentBlankline
|
||||||
|
autocmd!
|
||||||
|
autocmd FileType dashboard lua disable_for_dashboard()
|
||||||
|
augroup END
|
||||||
|
]])
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Code companion hook
|
||||||
|
local group = augroup("CodeCompanionHooks", {})
|
||||||
|
|
||||||
|
autocmd({ "User" }, {
|
||||||
|
pattern = "CodeCompanionInline*",
|
||||||
|
group = group,
|
||||||
|
callback = function(request)
|
||||||
|
if request.match == "CodeCompanionInlineFinished" then
|
||||||
|
-- Format the buffer after the inline request has completed
|
||||||
|
require("conform").format({ bufnr = request.buf })
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
-- }}}
|
||||||
59
lua/core/highlights.lua
Normal file
59
lua/core/highlights.lua
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
-- gray
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemAbbrDeprecated", { bg = "NONE", strikethrough = true, fg = "#808080" })
|
||||||
|
-- blue
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemAbbrMatch", { bg = "NONE", fg = "#569CD6" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemAbbrMatchFuzzy", { link = "CmpIntemAbbrMatch" })
|
||||||
|
-- light blue
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindVariable", { bg = "NONE", fg = "#9CDCFE" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindInterface", { link = "CmpItemKindVariable" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindText", { link = "CmpItemKindVariable" })
|
||||||
|
-- pink
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindFunction", { bg = "NONE", fg = "#C586C0" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindMethod", { link = "CmpItemKindFunction" })
|
||||||
|
-- front
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindKeyword", { bg = "NONE", fg = "#D4D4D4" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindProperty", { link = "CmpItemKindKeyword" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindUnit", { link = "CmpItemKindKeyword" })
|
||||||
|
|
||||||
|
-- Customization for Pmenu
|
||||||
|
vim.api.nvim_set_hl(0, "PmenuSel", { bg = "#282C34", fg = "NONE" })
|
||||||
|
vim.api.nvim_set_hl(0, "Pmenu", { fg = "#C5CDD9", bg = "#22252A" })
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemAbbrDeprecated", { fg = "#7E8294", bg = "NONE", strikethrough = true })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemAbbrMatch", { fg = "#82AAFF", bg = "NONE", bold = true })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemAbbrMatchFuzzy", { fg = "#82AAFF", bg = "NONE", bold = true })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemMenu", { fg = "#C792EA", bg = "NONE", italic = true })
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindField", { fg = "#EED8DA", bg = "#B5585F" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindProperty", { fg = "#EED8DA", bg = "#B5585F" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindEvent", { fg = "#EED8DA", bg = "#B5585F" })
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindText", { fg = "#C3E88D", bg = "#9FBD73" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindEnum", { fg = "#C3E88D", bg = "#9FBD73" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindKeyword", { fg = "#C3E88D", bg = "#9FBD73" })
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindConstant", { fg = "#FFE082", bg = "#D4BB6C" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindConstructor", { fg = "#FFE082", bg = "#D4BB6C" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindReference", { fg = "#FFE082", bg = "#D4BB6C" })
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindFunction", { fg = "#EADFF0", bg = "#A377BF" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindStruct", { fg = "#EADFF0", bg = "#A377BF" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindClass", { fg = "#EADFF0", bg = "#A377BF" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindModule", { fg = "#EADFF0", bg = "#A377BF" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindOperator", { fg = "#EADFF0", bg = "#A377BF" })
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindVariable", { fg = "#C5CDD9", bg = "#7E8294" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindFile", { fg = "#C5CDD9", bg = "#7E8294" })
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindUnit", { fg = "#F5EBD9", bg = "#D4A959" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindSnippet", { fg = "#F5EBD9", bg = "#D4A959" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindFolder", { fg = "#F5EBD9", bg = "#D4A959" })
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindMethod", { fg = "#DDE5F5", bg = "#6C8ED4" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindValue", { fg = "#DDE5F5", bg = "#6C8ED4" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindEnumMember", { fg = "#DDE5F5", bg = "#6C8ED4" })
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindInterface", { fg = "#D8EEEB", bg = "#58B5A8" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindColor", { fg = "#D8EEEB", bg = "#58B5A8" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindTypeParameter", { fg = "#D8EEEB", bg = "#58B5A8" })
|
||||||
|
vim.api.nvim_set_hl(0, "CmpItemKindCopilot", { fg = "#6CC644", bg = "#181926" })
|
||||||
557
lua/core/keymaps.lua
Normal file
557
lua/core/keymaps.lua
Normal file
@@ -0,0 +1,557 @@
|
|||||||
|
local map = vim.keymap.set
|
||||||
|
local term = require("utils.terminal")
|
||||||
|
local map_from_table = require("utils.keymaps.converters.from_table").set_keybindings
|
||||||
|
local add_to_whichkey = require("utils.keymaps.converters.whichkey").addToWhichKey
|
||||||
|
local term_factory = term.term_factory
|
||||||
|
local term_toggle = term.term_toggle
|
||||||
|
|
||||||
|
local opts = { silent = true, noremap = true }
|
||||||
|
local nosilent = { noremap = true }
|
||||||
|
|
||||||
|
-- Leader key
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
vim.g.maplocalleader = ","
|
||||||
|
|
||||||
|
function create_custom_command(trigger, command, description)
|
||||||
|
-- Create a custom command with the given trigger, command, and description
|
||||||
|
vim.api.nvim_create_user_command(trigger, command, { desc = description })
|
||||||
|
end
|
||||||
|
-- Custom commands
|
||||||
|
create_custom_command("Config", "edit ~/.config/nvim", "Edit nvim configuration")
|
||||||
|
create_custom_command("Keymaps", "edit ~/.config/nvim/lua/core/keymaps.lua", "Edit Hyprland keybindings")
|
||||||
|
create_custom_command("Hypr", "edit ~/.config/hypr/hyprland.conf", "Edit Hyprland configuration")
|
||||||
|
|
||||||
|
-- {{{ Basic Mappings
|
||||||
|
local basic_mappings = {
|
||||||
|
{ key = "<C-u>", cmd = "<C-u>zz", desc = "Scroll up and center", mode = "n" },
|
||||||
|
{ key = "n", cmd = "nzzzv", desc = "Next search result and center", mode = "n" },
|
||||||
|
{ key = "N", cmd = "Nzzzv", desc = "Previous search result and center", mode = "n" },
|
||||||
|
{ key = "<leader>p", cmd = '"_dP', desc = "Paste without yanking", mode = "x", group = "Paste in place" },
|
||||||
|
{ key = "<", cmd = "<gv", desc = "Reselect after indent", mode = "v" },
|
||||||
|
{ key = ">", cmd = ">gv", desc = "Reselect after indent", mode = "v" },
|
||||||
|
{ key = "J", cmd = ":m '>+1<CR>gv=gv", desc = "Move line down", mode = "v" },
|
||||||
|
{ key = "K", cmd = ":m '<-2<CR>gv=gv", desc = "Move line up", mode = "v" },
|
||||||
|
}
|
||||||
|
--}}}
|
||||||
|
|
||||||
|
--{{{ Buffer Navigation Mappings
|
||||||
|
local buffer_navigation_mappings = {
|
||||||
|
{ key = "<C-J>", cmd = ":bnext<CR>", desc = "Next buffer", mode = "n" },
|
||||||
|
{ key = "<C-K>", cmd = ":bprev<CR>", desc = "Previous buffer", mode = "n" },
|
||||||
|
{ key = "<leader>bb", cmd = ":Telescope buffers<CR>", desc = "List buffers", mode = "n" },
|
||||||
|
{ key = "<leader>bk", cmd = ":bdelete<CR>", desc = "Delete buffer", mode = "n" },
|
||||||
|
{ key = "<leader>bn", cmd = ":bnext<CR>", desc = "Next buffer", mode = "n" },
|
||||||
|
{ key = "<leader>bp", cmd = ":bprev<CR>", desc = "Previous buffer", mode = "n" },
|
||||||
|
}
|
||||||
|
--}}}
|
||||||
|
|
||||||
|
--{{{ Terminal Mappings
|
||||||
|
local terminal_mappings = {
|
||||||
|
-- {
|
||||||
|
-- key = "op",
|
||||||
|
-- cmd = "<C-\\><C-N>:ToggleTerm name=ipython",
|
||||||
|
-- desc = "Open IPython",
|
||||||
|
-- mode = "v",
|
||||||
|
-- group = "Open",
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- key = "oP",
|
||||||
|
-- cmd = "<C-\\><C-N>:ToggleTerm name=ipython-full",
|
||||||
|
-- desc = "Open full IPython",
|
||||||
|
-- mode = "v",
|
||||||
|
-- group = "Open",
|
||||||
|
-- },
|
||||||
|
{
|
||||||
|
key = "<C-T>",
|
||||||
|
cmd = ":ToggleTerm name=toggleterm<CR>",
|
||||||
|
desc = "Toggle terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>tt",
|
||||||
|
cmd = ":ToggleTerm name=toggleterm<CR>",
|
||||||
|
desc = "Toggle terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>tT",
|
||||||
|
cmd = ":ToggleTerm name=toggleterm-full direction=tab<CR>",
|
||||||
|
desc = "Toggle full terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>ot",
|
||||||
|
cmd = ":ToggleTerm name=toggleterm<CR>",
|
||||||
|
desc = "Open terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>oT",
|
||||||
|
cmd = ":ToggleTerm name=toggleterm-full direction=tab<CR>",
|
||||||
|
desc = "Open full terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>ts",
|
||||||
|
cmd = ":TermSelect<CR>",
|
||||||
|
desc = "Select terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>tv",
|
||||||
|
cmd = ":ToggleTerm direction=vertical name=toggleterm-vert<CR>",
|
||||||
|
desc = "Toggle vertical terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>th",
|
||||||
|
cmd = ":ToggleTerm direction=horizontal name=toggleterm-hori<CR>",
|
||||||
|
desc = "Toggle horizontal terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>ov",
|
||||||
|
cmd = ":ToggleTerm direction=vertical name=toggleterm-vert<CR>",
|
||||||
|
desc = "Open vertical terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>oh",
|
||||||
|
cmd = ":ToggleTerm direction=horizontal name=toggleterm-hori<CR>",
|
||||||
|
desc = "Open horizontal terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>tf",
|
||||||
|
cmd = ":ToggleTerm name=toggleterm<CR>",
|
||||||
|
desc = "Toggle terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>-",
|
||||||
|
cmd = ":ToggleTerm direction='horizontal'<CR>",
|
||||||
|
desc = "Toggle horizontal terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = "<leader>|",
|
||||||
|
cmd = ":ToggleTerm direction='vertical'<CR>",
|
||||||
|
desc = "Toggle vertical terminal",
|
||||||
|
mode = "n",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
--}}}
|
||||||
|
|
||||||
|
-- {{{ LSP Mappings
|
||||||
|
local lsp_mappings = {
|
||||||
|
{ mode = "n", key = "gA", cmd = vim.lsp.buf.code_action, group = "Code Action" },
|
||||||
|
{ mode = "n", key = "gd", cmd = ":Telescope lsp_definitions<CR>", group = "LSP Definitions" },
|
||||||
|
{ mode = "n", key = "gDc", cmd = ":Telescope lsp_implementations<CR>", group = "LSP Implementations" },
|
||||||
|
{ mode = "n", key = "gDf", cmd = ":Telescope lsp_definitions<CR>", group = "LSP Definitions" },
|
||||||
|
{ mode = "n", key = "gF", cmd = ":edit <cfile><CR>", group = "Edit File" },
|
||||||
|
{ mode = "n", key = "gT", cmd = ":Telescope lsp_type_definitions<CR>", group = "LSP Type Definitions" },
|
||||||
|
{ mode = "n", key = "gb", cmd = ":Gitsigns blame_line<CR>", group = "Git Blame" },
|
||||||
|
{ mode = "n", key = "gi", cmd = ":Telescope lsp_implementations<CR>", group = "Telescope Implementations" },
|
||||||
|
{ mode = "n", key = "gj", cmd = ":Telescope jumplist<CR>", group = "Telescope Jumplist" },
|
||||||
|
{ mode = "n", key = "gr", cmd = ":Telescope lsp_references<CR>", goup = "LSP References" },
|
||||||
|
{ mode = "n", key = "gs", cmd = vim.lsp.buf.signature_help },
|
||||||
|
-- { mode = "n", key = "K", cmd = vim.lsp.buf.hover },
|
||||||
|
{ mode = "n", key = "<leader>ca", cmd = vim.lsp.buf.code_action, group = "Code" },
|
||||||
|
{ mode = "n", key = "<leader>ch", cmd = ":lua vim.lsp.buf.signature_help()<CR>", group = "Signature Help" },
|
||||||
|
{ mode = "n", key = "<leader>cR", cmd = ":lua vim.lsp.buf.rename()<CR>", group = "Rename" },
|
||||||
|
{ mode = "n", key = "<leader>cr", cmd = ":Telescope lsp_references<CR>", group = "LSP References" },
|
||||||
|
{ mode = "n", key = "<leader>cs", cmd = ":Telescope lsp_document_symbols<CR>", group = "LsP Document Symbols" },
|
||||||
|
{ mode = "n", key = "<leader>ct", cmd = ":Telescope lsp_type_definitions<CR>", group = "LSP Definitions" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>cw",
|
||||||
|
cmd = ":Telescope lsp_dynamic_workspace_symbols<CR>",
|
||||||
|
group = "LSP Workspace Symbols",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>ci", cmd = ":Telescope lsp_implementations<CR>", group = "LSP Implementations" },
|
||||||
|
{ mode = "n", key = "<leader>cci", cmd = ":Telescope lsp_incoming_calls<CR>", group = "LSP Incoming Calls" },
|
||||||
|
{ mode = "n", key = "<leader>cco", cmd = ":Telescope lsp_outgoing_calls<CR>", group = "LSP Outgoing Calls" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>cd",
|
||||||
|
cmd = ":Telescope diagnostics theme=dropdown layout_config={width=0.8}<CR>",
|
||||||
|
group = "Telecope Diagnostics",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>cDs",
|
||||||
|
cmd = ":Telescope diagnostics theme=dropdown layout_config={width=0.8}<CR>",
|
||||||
|
group = "Telecope Diagnostics",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>cDn", cmd = ":lua vim.diagnostic.goto_next()<CR>", group = "Goto Next Preview" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>cDp",
|
||||||
|
cmd = ":lua vim.diagnostic.goto_prev()<CR<CR>",
|
||||||
|
group = "Goto Previous Preview",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>cl", cmd = ":lua vim.diagnostic.setloclist()<CR>", group = "Set Loclist" },
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Code Companion Mappings
|
||||||
|
local code_companion_mappings = {
|
||||||
|
{ mode = "n", key = "<leader>cp", cmd = ":vert Copilot panel<CR>", group = "Code" },
|
||||||
|
{ mode = "n", key = "<leader>oc", cmd = ":CodeCompanionChat Toggle<CR>", group = "Open" },
|
||||||
|
{ mode = "n", key = "<leader>Cc", cmd = ":CodeCompanionChat Toggle<CR>", group = "CodeCompanionChat" },
|
||||||
|
{ mode = "n", key = "<leader>Ci", cmd = ":CodeCompanion ", group = "Inline CodeCompanion", opts = nosilent },
|
||||||
|
{ mode = "n", key = "<leader>CT", cmd = ":CodeCompanionChat Toggle<CR>", group = "CodeCompanion Toggle" },
|
||||||
|
{ mode = "n", key = "<leader>Ca", cmd = ":CodeCompanionActions<CR>", group = "CodeCompanion Actions" },
|
||||||
|
{ mode = "v", key = "<leader>Cc", cmd = ":CodeCompanionChat Add<CR>", group = "CodeCompanion Add" },
|
||||||
|
{
|
||||||
|
mode = "v",
|
||||||
|
key = "<leader>Ci",
|
||||||
|
cmd = ":CodeCompanion #buffer ",
|
||||||
|
group = "CodeCompanion #buffer",
|
||||||
|
opts = nosilent,
|
||||||
|
},
|
||||||
|
{ mode = "v", key = "<leader>Ce", cmd = ":CodeCompanion /explain<CR>", group = "CodeCompanion /explain" },
|
||||||
|
{ mode = "v", key = "<leader>Cf", cmd = ":CodeCompanion /fix<CR>", group = "CodeCompanion /fix" },
|
||||||
|
{ mode = "v", key = "<leader>Cl", cmd = ":CodeCompanion /lsp<CR>", group = "CodeCompanion /lsp" },
|
||||||
|
{ mode = "v", key = "<leader>Ct", cmd = ":CodeCompanion /tests<CR>", group = "CodeCompanion /tests" },
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Telescope mappings
|
||||||
|
local telescope_mappings = {
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "//",
|
||||||
|
cmd = ":Telescope current_buffer_fuzzy_find previewer=false<CR>",
|
||||||
|
"Current buffer fuzzy find",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "??",
|
||||||
|
cmd = ":Telescope lsp_document_symbols theme=dropdown layout_config={width=0.5}<CR>",
|
||||||
|
group = "Lsp document symbols",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>fc",
|
||||||
|
cmd = ':Telescope color_names theme=dropdown layout_config={width=0.45,height=25,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
||||||
|
group = "Telescope color names",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>Tc",
|
||||||
|
cmd = ":Telescope colorscheme<CR>",
|
||||||
|
group = "Telescope colorscheme",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>TC",
|
||||||
|
cmd = ':Telescope color_names theme=dropdown layout_config={width=0.45,height=25,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
||||||
|
group = "Telescope color names",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>Tn",
|
||||||
|
cmd = ":Telescope notify theme=dropdown layout_config={width=0.75}<CR>",
|
||||||
|
group = "Telescope notify",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>TN",
|
||||||
|
cmd = ":Telescope noice theme=dropdown layout_config={width=0.75}<CR>",
|
||||||
|
group = "Telescope Noice",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>ff",
|
||||||
|
cmd = ":Telescope find_files find_command=rg,--ignore,--follow,--hidden,--files prompt_prefix=🔍<CR>",
|
||||||
|
group = "Find files",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>fg", cmd = ":Telescope live_grep<CR>", group = "Live Grep" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>Tg",
|
||||||
|
cmd = ':Telescope glyph theme=dropdown layout_config={width=0.45,height=35,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
||||||
|
group = "Telescope Glyph",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>fG",
|
||||||
|
cmd = ':Telescope glyph theme=dropdown layout_config={width=0.45,height=35,prompt_position="bottom"} layout_strategy=vertical<CR>',
|
||||||
|
group = "Glhph",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>fb", cmd = ":Telescope file_browser<CR>", group = "File browser" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>fr",
|
||||||
|
cmd = ":Telescope oldfiles theme=dropdown layout_config={width=0.5}<CR>",
|
||||||
|
group = "Oldfiles",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>hc",
|
||||||
|
cmd = ":Telescope commands<CR>",
|
||||||
|
group = "Commands",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>hv",
|
||||||
|
cmd = ":Telescope vim_options<CR>",
|
||||||
|
group = "Vim options",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>hk",
|
||||||
|
cmd = ":Telescope keymaps<CR>",
|
||||||
|
group = "Keymaps",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>hs",
|
||||||
|
cmd = ":Telescope spell_suggest<CR>",
|
||||||
|
group = "Spell suggest",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>ht",
|
||||||
|
cmd = ":Telescope help_tags<CR>",
|
||||||
|
group = "Help tags",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>hm",
|
||||||
|
cmd = ":Telescope man_pages theme=dropdown layout_config={width=0.75}<CR>",
|
||||||
|
group = "Man pages",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>sf",
|
||||||
|
cmd = ":Telescope find_files find_command=rg,--ignore,--follow,--hidden,--files prompt_prefix=🔍<CR>",
|
||||||
|
group = "Search files",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>sF", cmd = ":Telescope fidget<CR>", group = "Fidget" },
|
||||||
|
{ mode = "n", key = "<leader>sg", cmd = ":Telescope live_grep<CR>", group = "Live grep" },
|
||||||
|
{ mode = "n", key = "<leader>sh", cmd = ":Telescope command_history<CR>", group = "Command history" },
|
||||||
|
{ mode = "n", key = "<leader>sm", cmd = ":Telescope man_pages<CR>", group = "Man pages" },
|
||||||
|
{ mode = "n", key = "<leader>s/", cmd = ":Telescope search_history<CR>", group = "Search history" },
|
||||||
|
{ mode = "n", key = "<leader>gc", cmd = ":Telescope git_commits<CR>", group = "Git commits" },
|
||||||
|
{ mode = "n", key = "<leader>gf", cmd = ":Telescope git_files<CR>", group = "Git files" },
|
||||||
|
{ mode = "n", key = "<leader>Tr", cmd = ":Telescope reloader<CR>", group = "Telescope reloader" },
|
||||||
|
}
|
||||||
|
--}}}
|
||||||
|
|
||||||
|
-- {{{ File Explorer Mappings (i guess)
|
||||||
|
local file_explorer_mappings = {
|
||||||
|
{ mode = "n", key = "<leader>nt", cmd = ":NvimTreeToggle<CR>" },
|
||||||
|
{ mode = "n", key = "<leader>nc", cmd = ":lua require('notify').dismiss()<CR>" },
|
||||||
|
{ mode = "n", key = "<leader>D", cmd = ":Dotenv .env<CR>", group = "Dotenv" },
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Misc Utilities Mappings
|
||||||
|
local misc_utilities_mappings = {
|
||||||
|
{ mode = "n", key = "<leader>x", cmd = "<cmd>!chmod +x %<CR>", group = "Make Executable" },
|
||||||
|
{ mode = "n", key = "<leader>y", cmd = '"+', group = "System Yank" },
|
||||||
|
{ mode = "v", key = "<leader>y", cmd = '"+', group = "System Yank" },
|
||||||
|
{ mode = "n", key = "<leader>sc", cmd = ":nohls<CR>", group = "Search" },
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Goto Preview Mappings
|
||||||
|
local goto_preview_mappings = {
|
||||||
|
{ mode = "n", key = "gpc", cmd = ':lua require("goto-preview").close_all_win()<CR>', group = "Goto Preview" },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "gpd",
|
||||||
|
cmd = ':lua require("goto-preview").goto_preview_definition()<CR>',
|
||||||
|
group = "Goto Preview",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "gpi",
|
||||||
|
cmd = ':lua require("goto-preview").goto_preview_implementation()<CR>',
|
||||||
|
group = "Goto Preview",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Workspace Management Mappings
|
||||||
|
local workspace_management_mappings = {
|
||||||
|
{ mode = "n", key = "<leader>wa", cmd = vim.lsp.buf.add_workspace_folder },
|
||||||
|
{ mode = "n", key = "<leader>wr", cmd = vim.lsp.buf.remove_workspace_folder },
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>wl",
|
||||||
|
cmd = function()
|
||||||
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Noice Mappings
|
||||||
|
local noice_mappings = {
|
||||||
|
{ mode = "n", key = "<leader>Nh", cmd = ":Noice telescope<CR>", group = "Noice" },
|
||||||
|
{ mode = "n", key = "<leader>Nl", cmd = ":Noice last<CR>", group = "Noice" },
|
||||||
|
{ mode = "n", key = "<leader>Nd", cmd = ":Noice dismiss<CR>", group = "Noice" },
|
||||||
|
{ mode = "n", key = "<leader>Ne", cmd = ":Noice errors<CR>", group = "Noice" },
|
||||||
|
{ mode = "n", key = "<leader>Ns", cmd = ":Noice stats<CR>", group = "Noice" },
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ ODIS Mappings
|
||||||
|
local odis_mappings = {
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>dv",
|
||||||
|
cmd = ':lua require("odis").show_documentation("vsplit")<CR>',
|
||||||
|
group = "Vertical split",
|
||||||
|
},
|
||||||
|
{ mode = "n", key = "<leader>dh", cmd = ':lua require("odis").show_documentation("split")<CR>', group = "Split" },
|
||||||
|
{ mode = "n", key = "<leader>db", cmd = ':lua require("odis").show_documentation("buffer")<CR>', group = "Buffer" },
|
||||||
|
{ mode = "n", key = "<leader>dt", cmd = ':lua require("odis").show_documentation("tab")<CR>', group = "Tab" },
|
||||||
|
{ mode = "n", key = "<leader>df", cmd = ':lua require("odis").show_documentation("float")<CR>', group = "Float" },
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
-- {{{ Diffview Mappings
|
||||||
|
local diffview_mappings = {
|
||||||
|
{
|
||||||
|
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>gdo",
|
||||||
|
cmd = ":DiffviewOpen<CR>",
|
||||||
|
group = "DiffviewOpen",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>gdf",
|
||||||
|
cmd = ":DiffviewFileHistory %<CR>",
|
||||||
|
group = "Git",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>gdh",
|
||||||
|
cmd = ":DiffviewHistory<CR>",
|
||||||
|
group = "Git",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>gdc",
|
||||||
|
cmd = ":DiffviewClose<CR>",
|
||||||
|
group = "Git",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>gdt",
|
||||||
|
cmd = ":DiffviewToggleFiles<CR>",
|
||||||
|
group = "Git",
|
||||||
|
desc = "Toggle files view",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
mode = "n",
|
||||||
|
key = "<leader>gdr",
|
||||||
|
cmd = ":DiffviewRefresh<CR>",
|
||||||
|
desc = "Refresh diffview",
|
||||||
|
group = "Git",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
--{{{ Custom Terminals
|
||||||
|
local programs_map = {
|
||||||
|
gg = { cmd = "lazygit", display_name = "lazygit", direction = "tab", hidden = true, group = "Lazygit" },
|
||||||
|
op = { cmd = "ipython", display_name = "ipython", direction = "vertical", hidden = true, group = "Ipython" },
|
||||||
|
oP = {
|
||||||
|
cmd = "ipython",
|
||||||
|
display_name = "ipython-full",
|
||||||
|
direction = "tab",
|
||||||
|
hidden = true,
|
||||||
|
group = "Ipython Fullscreen",
|
||||||
|
},
|
||||||
|
oi = { cmd = "sudo iotop", display_name = "ncmpcpp", direction = "tab", hidden = true, group = "Ncmpcpp" },
|
||||||
|
on = { cmd = "ncmpcpp", display_name = "ncmpcpp", direction = "tab", hidden = true, group = "Ncmpcpp" },
|
||||||
|
oN = { cmd = "nvtop", display_name = "nvtop", direction = "tab", hidden = true, group = "Nvtop" },
|
||||||
|
ob = { cmd = "/usr/bin/btop", display_name = "btop", direction = "tab", hidden = true, group = "Btop" },
|
||||||
|
od = { cmd = "lazydocker", display_name = "lazydocker", direction = "tab", hidden = true, group = "Lazydocker" },
|
||||||
|
}
|
||||||
|
|
||||||
|
for key, value in pairs(programs_map) do
|
||||||
|
map("n", "<leader>" .. key, function()
|
||||||
|
term_toggle(term_factory(value))
|
||||||
|
end, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
local tbl = {}
|
||||||
|
for key, value in pairs(programs_map) do
|
||||||
|
local temp = {
|
||||||
|
cmd = value.cmd,
|
||||||
|
key = "<leader>" .. key,
|
||||||
|
group = value.group,
|
||||||
|
mode = "n",
|
||||||
|
desc = "Open " .. value.display_name,
|
||||||
|
}
|
||||||
|
table.insert(tbl, temp)
|
||||||
|
end
|
||||||
|
add_to_whichkey(tbl, { key = "<leader>o", group = "Open" })
|
||||||
|
|
||||||
|
function _G.set_terminal_keymaps()
|
||||||
|
local opts = { buffer = 0 }
|
||||||
|
map("t", "<esc>", [[<C-\><C-n>]], opts)
|
||||||
|
map("t", "<C-w>", [[<C-\><C-n><C-w>]], opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.cmd("autocmd! TermOpen term://* lua set_terminal_keymaps()")
|
||||||
|
--}}}
|
||||||
|
|
||||||
|
--{{{ Groups
|
||||||
|
add_to_whichkey(nil, { key = "<leader>a", group = "AnyJump" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>b", group = "Buffers" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>c", group = "Code" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>ca", group = "Code Actions" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>C", group = "CodeCompanion" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>d", group = "ODIS" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>f", group = "Find" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>g", group = "Git" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>gd", group = "DiffView" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>gg", group = "Lazygit" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>h", group = "Help" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>j", group = "AnyJump" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>N", group = "Noice" })
|
||||||
|
-- add_to_whichkey(nil, { key = "<leader>o", group = "Open" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>ob", group = "Btop" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>on", group = "Ncmpcpp" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>od", group = "Lazydocker" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>op", group = "Ipython" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>oP", group = "Ipython Full" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>p", group = "Paste in Place" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>s", group = "Search" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>t", group = "Terminal" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>T", group = "Telescope" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>w", group = "Workspace" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>x", group = "Make Executable" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>y", group = "System Yank" })
|
||||||
|
add_to_whichkey(nil, { key = "<leader>0", group = "Horizontal Terminal" })
|
||||||
|
--}}}
|
||||||
|
|
||||||
|
--{{{ Whichkey Mappings
|
||||||
|
add_to_whichkey(map_from_table(basic_mappings))
|
||||||
|
add_to_whichkey(map_from_table(buffer_navigation_mappings))
|
||||||
|
add_to_whichkey(map_from_table(terminal_mappings))
|
||||||
|
add_to_whichkey(map_from_table(lsp_mappings))
|
||||||
|
add_to_whichkey(map_from_table(code_companion_mappings))
|
||||||
|
add_to_whichkey(map_from_table(telescope_mappings))
|
||||||
|
add_to_whichkey(map_from_table(file_explorer_mappings))
|
||||||
|
add_to_whichkey(map_from_table(misc_utilities_mappings))
|
||||||
|
add_to_whichkey(map_from_table(goto_preview_mappings))
|
||||||
|
add_to_whichkey(map_from_table(workspace_management_mappings))
|
||||||
|
add_to_whichkey(map_from_table(noice_mappings))
|
||||||
|
add_to_whichkey(map_from_table(odis_mappings))
|
||||||
|
add_to_whichkey(map_from_table(diffview_mappings))
|
||||||
|
add_to_whichkey(nil, { key = "<leader>dc", group = "Close" })
|
||||||
|
--}}}
|
||||||
62
lua/core/lazy.lua
Normal file
62
lua/core/lazy.lua
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
-- Bootstrap lazy.nvim
|
||||||
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
|
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||||
|
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||||
|
if vim.v.shell_error ~= 0 then
|
||||||
|
vim.api.nvim_echo({
|
||||||
|
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||||
|
{ out, "WarningMsg" },
|
||||||
|
{ "\nPress any key to exit..." },
|
||||||
|
}, true, {})
|
||||||
|
vim.fn.getchar()
|
||||||
|
os.exit(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
require("core.options")
|
||||||
|
require("core.autocmds")
|
||||||
|
require("core.highlights")
|
||||||
|
|
||||||
|
-- Setup lazy.nvim
|
||||||
|
require("lazy").setup({
|
||||||
|
spec = {
|
||||||
|
-- import your plugins
|
||||||
|
{ import = "plugins" },
|
||||||
|
},
|
||||||
|
-- Configure any other settings here. See the documentation for more details.
|
||||||
|
-- colorscheme that will be used when installing plugins.
|
||||||
|
install = { colorscheme = { "habamax" } },
|
||||||
|
-- automatically check for plugin updates
|
||||||
|
checker = { enabled = true },
|
||||||
|
dev = {
|
||||||
|
-- Directory where you store your local plugin projects. If a function is used,
|
||||||
|
-- the plugin directory (e.g. `~/projects/plugin-name`) must be returned.
|
||||||
|
---@type string | fun(plugin: LazyPlugin): string
|
||||||
|
path = "~/.config/nvim/test",
|
||||||
|
---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub
|
||||||
|
patterns = {}, -- For example {"folke"}
|
||||||
|
fallback = false, -- Fallback to git when local plugin doesn't exist
|
||||||
|
},
|
||||||
|
-- lazy can generate helptags from the headings in markdown readme files,
|
||||||
|
-- so :help works even for plugins that don't have vim docs.
|
||||||
|
-- when the readme opens with :help it will be correctly displayed as markdown
|
||||||
|
readme = {
|
||||||
|
enabled = true,
|
||||||
|
root = vim.fn.stdpath("state") .. "/lazy/readme",
|
||||||
|
files = { "README.md", "lua/**/README.md" },
|
||||||
|
-- only generate markdown helptags for plugins that don't have docs
|
||||||
|
skip_if_doc_exists = true,
|
||||||
|
},
|
||||||
|
state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things
|
||||||
|
-- Enable profiling of lazy.nvim. This will add some overhead,
|
||||||
|
-- so only enable this when you are debugging lazy.nvim
|
||||||
|
profiling = {
|
||||||
|
-- Enables extra stats on the debug tab related to the loader cache.
|
||||||
|
-- Additionally gathers stats about all package.loaders
|
||||||
|
loader = false,
|
||||||
|
-- Track each new require in the Lazy profiling tab
|
||||||
|
require = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
104
lua/core/lsp-notifications.lua
Normal file
104
lua/core/lsp-notifications.lua
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
-- Utility functions shared between progress reports for LSP and DAP
|
||||||
|
vim.notify = require("notify")
|
||||||
|
|
||||||
|
local client_notifs = {}
|
||||||
|
|
||||||
|
local function get_notif_data(client_id, token)
|
||||||
|
if not client_notifs[client_id] then
|
||||||
|
client_notifs[client_id] = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not client_notifs[client_id][token] then
|
||||||
|
client_notifs[client_id][token] = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
return client_notifs[client_id][token]
|
||||||
|
end
|
||||||
|
|
||||||
|
local spinner_frames = { "⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷" }
|
||||||
|
|
||||||
|
local function update_spinner(client_id, token)
|
||||||
|
local notif_data = get_notif_data(client_id, token)
|
||||||
|
|
||||||
|
if notif_data.spinner then
|
||||||
|
local new_spinner = (notif_data.spinner + 1) % #spinner_frames
|
||||||
|
notif_data.spinner = new_spinner
|
||||||
|
|
||||||
|
notif_data.notification = vim.notify("", nil, {
|
||||||
|
hide_from_history = true,
|
||||||
|
icon = spinner_frames[new_spinner],
|
||||||
|
replace = notif_data.notification,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.defer_fn(function()
|
||||||
|
update_spinner(client_id, token)
|
||||||
|
end, 100)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function format_title(title, client_name)
|
||||||
|
return client_name .. (#title > 0 and ": " .. title or "")
|
||||||
|
end
|
||||||
|
|
||||||
|
local function format_message(message, percentage)
|
||||||
|
return (percentage and percentage .. "%\t" or "") .. (message or "")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- LSP integration
|
||||||
|
-- Make sure to also have the snippet with the common helper functions in your config!
|
||||||
|
|
||||||
|
vim.lsp.handlers["$/progress"] = function(_, result, ctx)
|
||||||
|
local client_id = ctx.client_id
|
||||||
|
|
||||||
|
local val = result.value
|
||||||
|
|
||||||
|
if not val.kind then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local notif_data = get_notif_data(client_id, result.token)
|
||||||
|
|
||||||
|
if val.kind == "begin" then
|
||||||
|
local message = format_message(val.message, val.percentage)
|
||||||
|
|
||||||
|
notif_data.notification = vim.notify(message, "info", {
|
||||||
|
title = format_title(val.title, vim.lsp.get_client_by_id(client_id).name),
|
||||||
|
icon = spinner_frames[1],
|
||||||
|
timeout = false,
|
||||||
|
hide_from_history = false,
|
||||||
|
})
|
||||||
|
|
||||||
|
notif_data.spinner = 1
|
||||||
|
update_spinner(client_id, result.token)
|
||||||
|
elseif val.kind == "report" and notif_data then
|
||||||
|
notif_data.notification = vim.notify(format_message(val.message, val.percentage), "info", {
|
||||||
|
replace = notif_data.notification,
|
||||||
|
hide_from_history = false,
|
||||||
|
})
|
||||||
|
elseif val.kind == "end" and notif_data then
|
||||||
|
notif_data.notification = vim.notify(val.message and format_message(val.message) or "Complete", "info", {
|
||||||
|
icon = "",
|
||||||
|
replace = notif_data.notification,
|
||||||
|
timeout = 3000,
|
||||||
|
})
|
||||||
|
|
||||||
|
notif_data.spinner = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.lsp.handlers["window/showMessage"] = function(err, result, ctx)
|
||||||
|
local client = vim.lsp.get_client_by_id(ctx.client_id)
|
||||||
|
local lvl = ({
|
||||||
|
"ERROR",
|
||||||
|
"WARN",
|
||||||
|
"INFO",
|
||||||
|
"DEBUG",
|
||||||
|
})[result.type]
|
||||||
|
vim.notify("LSP Message: " .. result.message, lvl, {
|
||||||
|
title = "LSP | " .. client.name,
|
||||||
|
timeout = 5000,
|
||||||
|
keep = function()
|
||||||
|
return lvl == "ERROR" or lvl == "WARN"
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
85
lua/core/options.lua
Normal file
85
lua/core/options.lua
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
local g = vim.g
|
||||||
|
local o = vim.o
|
||||||
|
local A = vim.api
|
||||||
|
local l = vim.lsp
|
||||||
|
|
||||||
|
g.mapleader = " "
|
||||||
|
g.maplocalleader = ","
|
||||||
|
g.fzf_command = 'fzf --height 90% --width=85% --layout=reverse --preview "bat --color=always {}"'
|
||||||
|
o.completeopt = "menu,menuone,noselect"
|
||||||
|
o.showmode = false
|
||||||
|
o.termguicolors = true
|
||||||
|
o.background = "dark"
|
||||||
|
o.mouse = "a"
|
||||||
|
o.syntax = "on"
|
||||||
|
o.laststatus = 3
|
||||||
|
o.number = true
|
||||||
|
o.relativenumber = true
|
||||||
|
o.colorcolumn = "88"
|
||||||
|
o.textwidth = 80
|
||||||
|
o.shiftwidth = 4
|
||||||
|
o.expandtab = true
|
||||||
|
o.tabstop = 4
|
||||||
|
o.autoindent = true
|
||||||
|
o.ignorecase = true
|
||||||
|
o.smartcase = true
|
||||||
|
o.incsearch = true
|
||||||
|
o.hlsearch = true
|
||||||
|
o.title = true
|
||||||
|
o.splitright = true
|
||||||
|
o.cursorline = true
|
||||||
|
o.scrolloff = 8
|
||||||
|
o.sidescrolloff = 8
|
||||||
|
o.wildmenu = false --cmp
|
||||||
|
o.wildmode = "" --cmp
|
||||||
|
o.wildoptions = ""
|
||||||
|
o.wildignore = ".git,.hg,.svn,CVS,.DS_Store,.idea,.vscode,.vscode-test,node_modules"
|
||||||
|
o.showmatch = true
|
||||||
|
o.list = true
|
||||||
|
o.listchars = "tab:»·,trail:·,nbsp:·,extends:>,precedes:<"
|
||||||
|
o.encoding = "utf-8"
|
||||||
|
o.guifont = "JetBrainsMono Nerd Font 14"
|
||||||
|
o.expandtab = true
|
||||||
|
o.hidden = true
|
||||||
|
o.cmdheight = 1
|
||||||
|
o.updatetime = 300
|
||||||
|
o.timeoutlen = 500
|
||||||
|
o.pumwidth = 35
|
||||||
|
o.foldmethod = "marker"
|
||||||
|
o.conceallevel = 1
|
||||||
|
g.db_ui_use_nerd_fonts = 1
|
||||||
|
|
||||||
|
-- vim.cmd.colorscheme = 'catppuccin-macchiato'
|
||||||
|
vim.cmd.colorscheme = "catppuccin"
|
||||||
|
|
||||||
|
-- Define the highlight color for float border
|
||||||
|
vim.api.nvim_set_hl(0, "FloatBorder", { fg = "#89b4fa", bold = true })
|
||||||
|
|
||||||
|
local border = {
|
||||||
|
{ "╭", "FloatBorder" },
|
||||||
|
{ "─", "FloatBorder" },
|
||||||
|
{ "╮", "FloatBorder" },
|
||||||
|
{ "│", "FloatBorder" },
|
||||||
|
{ "╯", "FloatBorder" },
|
||||||
|
{ "─", "FloatBorder" },
|
||||||
|
{ "╰", "FloatBorder" },
|
||||||
|
{ "│", "FloatBorder" },
|
||||||
|
}
|
||||||
|
|
||||||
|
-- set border for floating windows and signature help
|
||||||
|
-- UNSUPPPORTED: https://github.com/neovim/neovim/issues/32242#issuecomment-2777120640
|
||||||
|
-- l.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = border })
|
||||||
|
-- l.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = border })
|
||||||
|
o.winborder = "rounded"
|
||||||
|
|
||||||
|
vim.diagnostic.config({
|
||||||
|
virtual_text = true,
|
||||||
|
signs = true,
|
||||||
|
underline = true,
|
||||||
|
float = { border = "rounded", source = true },
|
||||||
|
severity_sort = true,
|
||||||
|
})
|
||||||
|
vim.keymap.set("", "<Leader>tl", function()
|
||||||
|
local current = vim.diagnostic.config().virtual_text
|
||||||
|
vim.diagnostic.config({ virtual_text = not current })
|
||||||
|
end, { desc = "Toggle diagnostics virtual text" })
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
local function map(m, k, v)
|
|
||||||
vim.keymap.set(m, k, v, { silent = true, noremap = true })
|
|
||||||
end
|
|
||||||
424
lua/plugins.lua
424
lua/plugins.lua
@@ -1,424 +0,0 @@
|
|||||||
local lsp_dev = {}
|
|
||||||
|
|
||||||
vim.cmd [[packadd packer.nvim]]
|
|
||||||
require('packer').startup(function(use)
|
|
||||||
use 'wbthomason/packer.nvim'
|
|
||||||
use 'nvim-lua/plenary.nvim'
|
|
||||||
use {
|
|
||||||
'nvim-treesitter/nvim-treesitter',
|
|
||||||
run = function()
|
|
||||||
require('nvim-treesitter.install').update({ with_sync = true })
|
|
||||||
end
|
|
||||||
}
|
|
||||||
use { 'nvim-treesitter/nvim-treesitter-context' }
|
|
||||||
|
|
||||||
-- TELESCOPE {{{
|
|
||||||
|
|
||||||
use { 'nvim-telescope/telescope.nvim' }
|
|
||||||
use { 'nvim-telescope/telescope-file-browser.nvim' }
|
|
||||||
use 'nvim-telescope/telescope-dap.nvim'
|
|
||||||
use { 'ghassan0/telescope-glyph.nvim' }
|
|
||||||
use { 'nat-418/telescope-color-names.nvim' }
|
|
||||||
use {
|
|
||||||
'nvim-telescope/telescope-fzf-native.nvim',
|
|
||||||
run = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build'
|
|
||||||
}
|
|
||||||
|
|
||||||
-- }}}
|
|
||||||
|
|
||||||
-- LSP/DEV {{{
|
|
||||||
|
|
||||||
-- COPILOT {{{
|
|
||||||
use {
|
|
||||||
"zbirenbaum/copilot.lua",
|
|
||||||
event = "VimEnter",
|
|
||||||
config = function()
|
|
||||||
require('copilot').setup({
|
|
||||||
panel = {
|
|
||||||
enabled = false,
|
|
||||||
auto_refresh = false,
|
|
||||||
keymap = {
|
|
||||||
jump_prev = "[[",
|
|
||||||
jump_next = "]]",
|
|
||||||
accept = "<CR>",
|
|
||||||
refresh = "gr",
|
|
||||||
open = "<C-CR>"
|
|
||||||
},
|
|
||||||
layout = {
|
|
||||||
position = "right", -- | top | left | right
|
|
||||||
ratio = 0.4
|
|
||||||
}
|
|
||||||
},
|
|
||||||
suggestion = {
|
|
||||||
enabled = false,
|
|
||||||
auto_trigger = false,
|
|
||||||
debounce = 75,
|
|
||||||
keymap = {
|
|
||||||
accept = "<C-l>",
|
|
||||||
-- accept = "<Right>",
|
|
||||||
next = "<M-]>",
|
|
||||||
prev = "<M-[>",
|
|
||||||
dismiss = "<C-]>"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
-- filetypes = {
|
|
||||||
-- yaml = false,
|
|
||||||
-- markdown = false,
|
|
||||||
-- help = false,
|
|
||||||
-- gitcommit = false,
|
|
||||||
-- gitrebase = false,
|
|
||||||
-- hgcommit = false,
|
|
||||||
-- svn = false,
|
|
||||||
-- cvs = false,
|
|
||||||
-- ["."] = false,
|
|
||||||
-- },
|
|
||||||
copilot_node_command = 'node', -- Node version must be < 18
|
|
||||||
plugin_manager_path = vim.fn.stdpath("data") ..
|
|
||||||
"/site/pack/packer",
|
|
||||||
server_opts_overrides = {
|
|
||||||
trace = "verbose",
|
|
||||||
settings = {
|
|
||||||
advanced = {
|
|
||||||
listCount = 10, -- #completions for panel
|
|
||||||
inlineSuggestCount = 4 -- #completions for getCompletions
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
use { "zbirenbaum/copilot-cmp" }
|
|
||||||
-- }}}
|
|
||||||
-- CHATGPT {{{
|
|
||||||
|
|
||||||
use({
|
|
||||||
"jackMort/ChatGPT.nvim",
|
|
||||||
commit = "24bcca7",
|
|
||||||
config = function()
|
|
||||||
require("chatgpt").setup({
|
|
||||||
api_key_cmd = "cat /home/sudacode/.openaikey",
|
|
||||||
yank_register = "+",
|
|
||||||
edit_with_instructions = {
|
|
||||||
diff = false,
|
|
||||||
keymaps = {
|
|
||||||
close = "<C-c>",
|
|
||||||
accept = "<C-y>",
|
|
||||||
toggle_diff = "<C-d>",
|
|
||||||
toggle_settings = "<C-o>",
|
|
||||||
toggle_help = "<C-h>",
|
|
||||||
cycle_windows = "<Tab>",
|
|
||||||
use_output_as_input = "<C-i>"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
chat = {
|
|
||||||
welcome_message = WELCOME_MESSAGE,
|
|
||||||
loading_text = "Loading, please wait ...",
|
|
||||||
question_sign = "", -- 🙂
|
|
||||||
answer_sign = "ﮧ", -- 🤖
|
|
||||||
border_left_sign = "",
|
|
||||||
border_right_sign = "",
|
|
||||||
max_line_length = 120,
|
|
||||||
sessions_window = {
|
|
||||||
active_sign = " ",
|
|
||||||
inactive_sign = " ",
|
|
||||||
current_line_sign = "",
|
|
||||||
border = {
|
|
||||||
style = "rounded",
|
|
||||||
text = { top = " Sessions " }
|
|
||||||
},
|
|
||||||
win_options = {
|
|
||||||
winhighlight = "Normal:Normal,FloatBorder:FloatBorder"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
keymaps = {
|
|
||||||
close = "<C-c>",
|
|
||||||
yank_last = "<C-y>",
|
|
||||||
yank_last_code = "<C-k>",
|
|
||||||
scroll_up = "<C-u>",
|
|
||||||
scroll_down = "<C-d>",
|
|
||||||
new_session = "<C-n>",
|
|
||||||
cycle_windows = "<Tab>",
|
|
||||||
cycle_modes = "<C-f>",
|
|
||||||
next_message = "<C-j>",
|
|
||||||
prev_message = "<C-k>",
|
|
||||||
select_session = "<Space>",
|
|
||||||
rename_session = "r",
|
|
||||||
delete_session = "d",
|
|
||||||
draft_message = "<C-r>",
|
|
||||||
edit_message = "e",
|
|
||||||
delete_message = "d",
|
|
||||||
toggle_settings = "<C-o>",
|
|
||||||
toggle_sessions = "<C-p>",
|
|
||||||
toggle_help = "<C-h>",
|
|
||||||
toggle_message_role = "<C-r>",
|
|
||||||
toggle_system_role_open = "<C-s>",
|
|
||||||
stop_generating = "<C-x>"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
popup_layout = {
|
|
||||||
default = "center",
|
|
||||||
center = { width = "80%", height = "80%" },
|
|
||||||
right = { width = "30%", width_settings_open = "50%" }
|
|
||||||
},
|
|
||||||
popup_window = {
|
|
||||||
border = {
|
|
||||||
highlight = "FloatBorder",
|
|
||||||
style = "rounded",
|
|
||||||
text = { top = " ChatGPT " }
|
|
||||||
},
|
|
||||||
win_options = {
|
|
||||||
wrap = true,
|
|
||||||
linebreak = true,
|
|
||||||
foldcolumn = "1",
|
|
||||||
winhighlight = "Normal:Normal,FloatBorder:FloatBorder"
|
|
||||||
},
|
|
||||||
buf_options = { filetype = "markdown" }
|
|
||||||
},
|
|
||||||
system_window = {
|
|
||||||
border = {
|
|
||||||
highlight = "FloatBorder",
|
|
||||||
style = "rounded",
|
|
||||||
text = { top = " SYSTEM " }
|
|
||||||
},
|
|
||||||
win_options = {
|
|
||||||
wrap = true,
|
|
||||||
linebreak = true,
|
|
||||||
foldcolumn = "2",
|
|
||||||
winhighlight = "Normal:Normal,FloatBorder:FloatBorder"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
popup_input = {
|
|
||||||
prompt = " ",
|
|
||||||
border = {
|
|
||||||
highlight = "FloatBorder",
|
|
||||||
style = "rounded",
|
|
||||||
text = { top_align = "center", top = " Prompt " }
|
|
||||||
},
|
|
||||||
win_options = {
|
|
||||||
winhighlight = "Normal:Normal,FloatBorder:FloatBorder"
|
|
||||||
},
|
|
||||||
submit = "<C-Enter>",
|
|
||||||
submit_n = "<Enter>",
|
|
||||||
max_visible_lines = 20
|
|
||||||
},
|
|
||||||
settings_window = {
|
|
||||||
setting_sign = " ",
|
|
||||||
border = { style = "rounded", text = { top = " Settings " } },
|
|
||||||
win_options = {
|
|
||||||
winhighlight = "Normal:Normal,FloatBorder:FloatBorder"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
help_window = {
|
|
||||||
setting_sign = " ",
|
|
||||||
border = { style = "rounded", text = { top = " Help " } },
|
|
||||||
win_options = {
|
|
||||||
winhighlight = "Normal:Normal,FloatBorder:FloatBorder"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
openai_params = {
|
|
||||||
model = "gpt-3.5-turbo",
|
|
||||||
frequency_penalty = 0,
|
|
||||||
presence_penalty = 0,
|
|
||||||
max_tokens = 300,
|
|
||||||
temperature = 0,
|
|
||||||
top_p = 1,
|
|
||||||
n = 1
|
|
||||||
},
|
|
||||||
openai_edit_params = {
|
|
||||||
model = "gpt-3.5-turbo",
|
|
||||||
frequency_penalty = 0,
|
|
||||||
presence_penalty = 0,
|
|
||||||
temperature = 0,
|
|
||||||
top_p = 1,
|
|
||||||
n = 1
|
|
||||||
},
|
|
||||||
use_openai_functions_for_edits = false,
|
|
||||||
actions_paths = {},
|
|
||||||
show_quickfixes_cmd = "Trouble quickfix",
|
|
||||||
predefined_chat_gpt_prompts =
|
|
||||||
"https://raw.githubusercontent.com/f/awesome-chatgpt-prompts/main/prompts.csv",
|
|
||||||
highlights = {
|
|
||||||
help_key = "@symbol",
|
|
||||||
help_description = "@comment"
|
|
||||||
}
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
requires = {
|
|
||||||
"MunifTanjim/nui.nvim", "nvim-lua/plenary.nvim",
|
|
||||||
"nvim-telescope/telescope.nvim"
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
-- }}}
|
|
||||||
use({
|
|
||||||
"iamcco/markdown-preview.nvim",
|
|
||||||
run = function() vim.fn["mkdp#util#install"]() end
|
|
||||||
})
|
|
||||||
use {
|
|
||||||
"L3MON4D3/LuaSnip",
|
|
||||||
-- tag = "v2.*",
|
|
||||||
run = "make install_jsregexp",
|
|
||||||
dependencies = { "rafamadriz/friendly-snippets" }
|
|
||||||
}
|
|
||||||
use { 'folke/neodev.nvim' }
|
|
||||||
use { 'saadparwaiz1/cmp_luasnip' }
|
|
||||||
use { 'hrsh7th/cmp-buffer' }
|
|
||||||
use { 'hrsh7th/cmp-cmdline' }
|
|
||||||
use { 'hrsh7th/cmp-nvim-lsp' }
|
|
||||||
use { 'hrsh7th/cmp-nvim-lsp-document-symbol' }
|
|
||||||
use { 'hrsh7th/cmp-nvim-lsp-signature-help' }
|
|
||||||
use { 'hrsh7th/cmp-nvim-lua' }
|
|
||||||
use { 'hrsh7th/cmp-path' }
|
|
||||||
use { 'hrsh7th/nvim-cmp' }
|
|
||||||
use { 'https://git.sr.ht/~whynothugo/lsp_lines.nvim' }
|
|
||||||
-- use { 'jose-elias-alvarez/null-ls.nvim' }
|
|
||||||
use { 'nvimtools/none-ls.nvim' }
|
|
||||||
use { 'neovim/nvim-lspconfig' }
|
|
||||||
use { 'onsails/lspkind-nvim' }
|
|
||||||
|
|
||||||
-- DAP {{{
|
|
||||||
|
|
||||||
use 'mfussenegger/nvim-dap'
|
|
||||||
use 'nvim-neotest/nvim-nio'
|
|
||||||
use { "rcarriga/nvim-dap-ui", requires = { "mfussenegger/nvim-dap" } }
|
|
||||||
use { 'mfussenegger/nvim-dap-python' }
|
|
||||||
use { 'theHamsta/nvim-dap-virtual-text' }
|
|
||||||
|
|
||||||
-- }}}
|
|
||||||
|
|
||||||
-- DADBOD {{{
|
|
||||||
|
|
||||||
use { 'tpope/vim-dadbod' }
|
|
||||||
use { 'kristijanhusak/vim-dadbod-ui' }
|
|
||||||
use { 'kristijanhusak/vim-dadbod-completion' }
|
|
||||||
|
|
||||||
-- }}}
|
|
||||||
|
|
||||||
-- }}}
|
|
||||||
|
|
||||||
-- UI {{{
|
|
||||||
use {
|
|
||||||
"lukas-reineke/indent-blankline.nvim",
|
|
||||||
config = function()
|
|
||||||
opts = {}
|
|
||||||
-- Other blankline configuration here
|
|
||||||
require("ibl").setup(require("indent-rainbowline").make_opts(opts))
|
|
||||||
end,
|
|
||||||
requires = { "TheGLander/indent-rainbowline.nvim" }
|
|
||||||
}
|
|
||||||
|
|
||||||
use {
|
|
||||||
'glepnir/dashboard-nvim',
|
|
||||||
-- event = 'VimEnter',
|
|
||||||
requires = { 'nvim-tree/nvim-web-devicons' }
|
|
||||||
}
|
|
||||||
use {
|
|
||||||
'j-hui/fidget.nvim',
|
|
||||||
tag = 'legacy',
|
|
||||||
config = function()
|
|
||||||
require("fidget").setup {
|
|
||||||
-- options
|
|
||||||
}
|
|
||||||
end
|
|
||||||
}
|
|
||||||
use {
|
|
||||||
'nvim-lualine/lualine.nvim',
|
|
||||||
requires = { 'kyazdani42/nvim-web-devicons', opt = true }
|
|
||||||
}
|
|
||||||
use { 'AndreM222/copilot-lualine' }
|
|
||||||
use { 'kyazdani42/nvim-web-devicons' }
|
|
||||||
use { 'norcalli/nvim-colorizer.lua' }
|
|
||||||
use { 'akinsho/nvim-bufferline.lua' }
|
|
||||||
use { 'andweeb/presence.nvim' }
|
|
||||||
use { 'folke/which-key.nvim' }
|
|
||||||
use { 'kyazdani42/nvim-tree.lua' }
|
|
||||||
use { 'lewis6991/gitsigns.nvim' }
|
|
||||||
use { 'rcarriga/nvim-notify' }
|
|
||||||
use { 'stevearc/dressing.nvim' }
|
|
||||||
use { 'HiPhish/rainbow-delimiters.nvim' }
|
|
||||||
use { 'echasnovski/mini.nvim' }
|
|
||||||
|
|
||||||
-- }}}
|
|
||||||
|
|
||||||
-- EXTRAS {{{
|
|
||||||
|
|
||||||
use {
|
|
||||||
"nvim-neorg/neorg",
|
|
||||||
-- tag = "*",
|
|
||||||
ft = "norg",
|
|
||||||
after = "nvim-treesitter", -- You may want to specify Telescope here as well
|
|
||||||
config = function()
|
|
||||||
require('neorg').setup {
|
|
||||||
load = {
|
|
||||||
["core.defaults"] = {}, -- Loads default behaviour
|
|
||||||
["core.concealer"] = {}, -- Adds pretty icons to your documents
|
|
||||||
["core.completion"] = { config = { engine = "nvim-cmp" } }, -- Adds completion
|
|
||||||
["core.dirman"] = { -- Manages Neorg workspaces
|
|
||||||
config = { workspaces = { notes = "~/notes" } }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
end
|
|
||||||
}
|
|
||||||
use 'jiangmiao/auto-pairs'
|
|
||||||
use 'pechorin/any-jump.vim'
|
|
||||||
use 'tpope/vim-commentary'
|
|
||||||
use 'tpope/vim-dotenv'
|
|
||||||
use 'tpope/vim-surround'
|
|
||||||
use 'voldikss/vim-floaterm'
|
|
||||||
use 'wakatime/vim-wakatime'
|
|
||||||
use 'rmagatti/goto-preview'
|
|
||||||
|
|
||||||
-- }}}
|
|
||||||
|
|
||||||
-- COLORSCHEMES {{{
|
|
||||||
|
|
||||||
use { 'Mofiqul/dracula.nvim' }
|
|
||||||
use({
|
|
||||||
'NTBBloodbath/doom-one.nvim',
|
|
||||||
setup = function()
|
|
||||||
-- Add color to cursor
|
|
||||||
vim.g.doom_one_cursor_coloring = false
|
|
||||||
-- Set :terminal colors
|
|
||||||
vim.g.doom_one_terminal_colors = true
|
|
||||||
-- Enable italic comments
|
|
||||||
vim.g.doom_one_italic_comments = false
|
|
||||||
-- Enable TS support
|
|
||||||
vim.g.doom_one_enable_treesitter = true
|
|
||||||
-- Color whole diagnostic text or only underline
|
|
||||||
vim.g.doom_one_diagnostics_text_color = false
|
|
||||||
-- Enable transparent background
|
|
||||||
vim.g.doom_one_transparent_background = false
|
|
||||||
|
|
||||||
-- Pumblend transparency
|
|
||||||
vim.g.doom_one_pumblend_enable = false
|
|
||||||
vim.g.doom_one_pumblend_transparency = 20
|
|
||||||
|
|
||||||
-- Plugins integration
|
|
||||||
vim.g.doom_one_plugin_neorg = true
|
|
||||||
vim.g.doom_one_plugin_barbar = false
|
|
||||||
vim.g.doom_one_plugin_telescope = true
|
|
||||||
vim.g.doom_one_plugin_neogit = true
|
|
||||||
vim.g.doom_one_plugin_nvim_tree = true
|
|
||||||
vim.g.doom_one_plugin_dashboard = true
|
|
||||||
vim.g.doom_one_plugin_startify = true
|
|
||||||
vim.g.doom_one_plugin_whichkey = true
|
|
||||||
vim.g.doom_one_plugin_indent_blankline = true
|
|
||||||
vim.g.doom_one_plugin_vim_illuminate = false
|
|
||||||
vim.g.doom_one_plugin_lspsaga = false
|
|
||||||
end,
|
|
||||||
config = function()
|
|
||||||
vim.cmd("colorscheme doom-one")
|
|
||||||
vim.cmd(
|
|
||||||
"highlight Pmenu ctermfg=white ctermbg=black gui=NONE guifg=white guibg=#282C34")
|
|
||||||
vim.cmd("highlight PmenuSel guifg=purple guibg=red")
|
|
||||||
end
|
|
||||||
})
|
|
||||||
use { 'olimorris/onedarkpro.nvim' }
|
|
||||||
use { 'projekt0n/github-nvim-theme' }
|
|
||||||
|
|
||||||
use { "catppuccin/nvim", as = "catppuccin" }
|
|
||||||
|
|
||||||
-- }}}
|
|
||||||
end)
|
|
||||||
1
lua/plugins/anyjump.lua
Normal file
1
lua/plugins/anyjump.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return { "pechorin/any-jump.vim" }
|
||||||
100
lua/plugins/bufferline.lua
Normal file
100
lua/plugins/bufferline.lua
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
return {
|
||||||
|
"akinsho/bufferline.nvim",
|
||||||
|
version = "*",
|
||||||
|
dependencies = { "nvim-tree/nvim-web-devicons", "catppuccin/nvim" },
|
||||||
|
opts = {
|
||||||
|
options = {
|
||||||
|
-- numbers = function(opts)
|
||||||
|
-- return string.format("%s", opts.id)
|
||||||
|
-- end,
|
||||||
|
numbers = function(opts)
|
||||||
|
return ""
|
||||||
|
end,
|
||||||
|
-- number_style = "superscript" | "subscript" | "" | { "none", "subscript" }, -- buffer_id at index 1, ordinal at index 2
|
||||||
|
-- number_style = "none",
|
||||||
|
close_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
|
||||||
|
right_mouse_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
|
||||||
|
left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions"
|
||||||
|
middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
|
||||||
|
-- NOTE: this plugin is designed with this icon in mind,
|
||||||
|
-- and so changing this is NOT recommended, this is intended
|
||||||
|
-- as an escape hatch for people who cannot bear it for whatever reason
|
||||||
|
indicator = {
|
||||||
|
-- icon = "▎",
|
||||||
|
style = "underline",
|
||||||
|
},
|
||||||
|
-- indicator_style = "▎",
|
||||||
|
buffer_close_icon = "",
|
||||||
|
modified_icon = "●",
|
||||||
|
close_icon = "",
|
||||||
|
left_trunc_marker = "",
|
||||||
|
right_trunc_marker = "",
|
||||||
|
--- name_formatter can be used to change the buffer's label in the bufferline.
|
||||||
|
--- Please note some names can/will break the
|
||||||
|
--- bufferline so use this at your discretion knowing that it has
|
||||||
|
--- some limitations that will *NOT* be fixed.
|
||||||
|
name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr"
|
||||||
|
-- remove extension from markdown files for example
|
||||||
|
if buf.name:match("%.md") then
|
||||||
|
return vim.fn.fnamemodify(buf.name, ":t:r")
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
max_name_length = 18,
|
||||||
|
max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
|
||||||
|
tab_size = 18,
|
||||||
|
-- diagnostics = false | "nvim_lsp" | "coc",
|
||||||
|
diagnostics = "nvim_lsp",
|
||||||
|
diagnostics_update_in_insert = false,
|
||||||
|
diagnostics_indicator = function(count, level, diagnostics_dict, context)
|
||||||
|
local s = " "
|
||||||
|
for e, n in pairs(diagnostics_dict) do
|
||||||
|
local sym = e == "error" and " "
|
||||||
|
or e == "hint" and " "
|
||||||
|
or (e == "warning" and " " or "")
|
||||||
|
s = s .. n .. sym
|
||||||
|
end
|
||||||
|
return s
|
||||||
|
end,
|
||||||
|
custom_filter = function(buf_number, buf_numbers)
|
||||||
|
-- filter out filetypes you don't want to see
|
||||||
|
if vim.bo[buf_number].filetype ~= "<i-dont-want-to-see-this>" then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
-- filter out by buffer name
|
||||||
|
if vim.fn.bufname(buf_number) ~= "<buffer-name-I-dont-want>" then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
-- filter out based on arbitrary rules
|
||||||
|
-- e.g. filter out vim wiki buffer from tabline in your work repo
|
||||||
|
if vim.fn.getcwd() == "<work-repo>" and vim.bo[buf_number].filetype ~= "wiki" then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
-- filter out by it's index number in list (don't show first buffer)
|
||||||
|
if buf_numbers[1] ~= buf_number then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
-- offsets = {{filetype = "NvimTree", text = "File Explorer" | function , text_align = "left" | "center" | "right"}},
|
||||||
|
-- offsets = text_align = "left" | "center" | "right"}},
|
||||||
|
show_buffer_icons = true,
|
||||||
|
show_buffer_close_icons = true,
|
||||||
|
show_close_icon = false,
|
||||||
|
show_tab_indicators = true,
|
||||||
|
persist_buffer_sort = false, -- whether or not custom sorted buffers should persist
|
||||||
|
-- can also be a table containing 2 custom separators
|
||||||
|
-- [focused and unfocused]. eg: { '|', '|' }
|
||||||
|
-- separator_style = "slant" | "thick" | "thin" | { 'any', 'any' },
|
||||||
|
separator_style = "slant",
|
||||||
|
enforce_regular_tabs = false,
|
||||||
|
always_show_bufferline = true,
|
||||||
|
-- sort_by = 'id' | 'extension' | 'relative_directory' | 'directory' | 'tabs' | function(buffer_a, buffer_b)
|
||||||
|
sort_by = "id",
|
||||||
|
-- highlights = require("catppuccin.groups.integrations.bufferline").get(),
|
||||||
|
hover = {
|
||||||
|
enabled = true,
|
||||||
|
delay = 200,
|
||||||
|
reveal = { "close" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
56
lua/plugins/catppuccin.lua
Normal file
56
lua/plugins/catppuccin.lua
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
return {
|
||||||
|
"catppuccin/nvim",
|
||||||
|
name = "catppuccin",
|
||||||
|
priority = 1000,
|
||||||
|
opts = {
|
||||||
|
flavour = "macchiato", -- latte, frappe, macchiato, mocha
|
||||||
|
term_colors = true, -- sets terminal colors (e.g. `g:terminal_color_0`)
|
||||||
|
integrations = {
|
||||||
|
cmp = true,
|
||||||
|
gitsigns = true,
|
||||||
|
nvimtree = true,
|
||||||
|
mini = {
|
||||||
|
enabled = true,
|
||||||
|
indentscope_color = "",
|
||||||
|
},
|
||||||
|
bufferline = true,
|
||||||
|
dashboard = true,
|
||||||
|
fidget = true,
|
||||||
|
indent_blankline = {
|
||||||
|
enabled = true,
|
||||||
|
scope_color = "lavendar", -- catppuccin color (eg. `lavender`) Default: text
|
||||||
|
colored_indent_levels = true,
|
||||||
|
},
|
||||||
|
copilot_vim = true,
|
||||||
|
native_lsp = {
|
||||||
|
enabled = true,
|
||||||
|
virtual_text = {
|
||||||
|
errors = { "italic" },
|
||||||
|
hints = { "italic" },
|
||||||
|
warnings = { "italic" },
|
||||||
|
information = { "italic" },
|
||||||
|
ok = { "italic" },
|
||||||
|
},
|
||||||
|
underlines = {
|
||||||
|
errors = { "underline" },
|
||||||
|
hints = { "underline" },
|
||||||
|
warnings = { "underline" },
|
||||||
|
information = { "underline" },
|
||||||
|
ok = { "underline" },
|
||||||
|
},
|
||||||
|
inlay_hints = {
|
||||||
|
background = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
notify = true,
|
||||||
|
treesitter = true,
|
||||||
|
rainbow_delimiters = true,
|
||||||
|
telescope = {
|
||||||
|
enabled = true,
|
||||||
|
-- style = "nvchad"
|
||||||
|
},
|
||||||
|
which_key = true
|
||||||
|
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
211
lua/plugins/codecompanion.lua
Normal file
211
lua/plugins/codecompanion.lua
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
return {
|
||||||
|
"olimorris/codecompanion.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
"j-hui/fidget.nvim",
|
||||||
|
"ravitemer/mcphub.nvim",
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
adapters = {
|
||||||
|
copilot = function()
|
||||||
|
return require("codecompanion.adapters").extend("copilot", {
|
||||||
|
schema = {
|
||||||
|
name = "copilot",
|
||||||
|
opts = {
|
||||||
|
stream = true,
|
||||||
|
},
|
||||||
|
model = {
|
||||||
|
-- default = "claude-3.7-sonnet-thought",
|
||||||
|
-- default = "o3-mini",
|
||||||
|
-- default = "gemini-2.0-flash-001",
|
||||||
|
default = "gpt-4.1",
|
||||||
|
-- default = "gpt-4o",
|
||||||
|
-- default = "o3-mini-2025-01-31",
|
||||||
|
-- choices = {
|
||||||
|
-- ["o3-mini-2025-01-31"] = { opts = { can_reason = true } },
|
||||||
|
-- ["o1-2024-12-17"] = { opts = { can_reason = true } },
|
||||||
|
-- ["o1-mini-2024-09-12"] = { opts = { can_reason = true } },
|
||||||
|
-- "gpt-4o-2024-08-06",
|
||||||
|
-- "claude-3.7-sonnet-thought",
|
||||||
|
-- "claude-3.7-sonnet",
|
||||||
|
-- "claude-3.5-sonnet",
|
||||||
|
-- "gemini-2.0-flash-001",
|
||||||
|
-- },
|
||||||
|
},
|
||||||
|
-- max_tokens = {
|
||||||
|
-- default = 65536,
|
||||||
|
-- },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
llama_cpp = function()
|
||||||
|
return require("codecompanion.adapters").extend("openai_compatible", {
|
||||||
|
name = "llama.cpp",
|
||||||
|
formatted_name = "llama.cpp",
|
||||||
|
opts = {
|
||||||
|
stream = false,
|
||||||
|
},
|
||||||
|
schema = {
|
||||||
|
-- model = {
|
||||||
|
-- default = "qwen2.5-coder-14b-instruct",
|
||||||
|
-- choices = {
|
||||||
|
-- ["qwen2.5-coder-14b-instruct"] = { opts = { can_reason = true } },
|
||||||
|
-- ["/models/lmstudio-community/DeepSeek-R1-Distill-Qwen-7B-GGUF/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf"] = {
|
||||||
|
-- opts = { can_reason = true },
|
||||||
|
-- },
|
||||||
|
-- ["/models/lmstudio-community/Qwen2.5-7B-Instruct-1M-GGUF/Qwen2.5-7B-Instruct-1M-Q4_K_M.gguf"] = {
|
||||||
|
-- opts = { can_reason = true },
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
temperature = {
|
||||||
|
order = 2,
|
||||||
|
mapping = "parameters",
|
||||||
|
type = "number",
|
||||||
|
optional = true,
|
||||||
|
default = 0.2,
|
||||||
|
validate = function(n)
|
||||||
|
return n >= 0 and n <= 2, "Must be between 0 and 2"
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
env = {
|
||||||
|
url = "http://localhost:8080",
|
||||||
|
chat_url = "/v1/chat/completions",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
openrouter = function()
|
||||||
|
return require("codecompanion.adapters").extend("openai_compatible", {
|
||||||
|
env = {
|
||||||
|
url = "https://openrouter.ai/api",
|
||||||
|
api_key = "cmd:cat $HOME/.openrouterapikey",
|
||||||
|
chat_url = "/v1/chat/completions",
|
||||||
|
},
|
||||||
|
schema = {
|
||||||
|
model = {
|
||||||
|
default = "google/gemini-2.5-pro-exp-03-25:free",
|
||||||
|
-- default = "deepseek/deepseek-chat-v3-0324:free",
|
||||||
|
-- default = "google/gemini-2.0-flash-thinking-exp:free",
|
||||||
|
-- default = "deepseek/deepseek-r1-distill-qwen-32b:free",
|
||||||
|
-- default = "qwen/qwen-2.5-coder-32b-instruct:free",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
strategies = {
|
||||||
|
chat = {
|
||||||
|
adapter = "copilot",
|
||||||
|
-- adapter = "openrouter",
|
||||||
|
roles = {
|
||||||
|
llm = function(adapter)
|
||||||
|
if adapter.model == nil then
|
||||||
|
return " Assistant"
|
||||||
|
else
|
||||||
|
return " Assistant ("
|
||||||
|
.. adapter.formatted_name
|
||||||
|
.. " - "
|
||||||
|
.. adapter.parameters.model
|
||||||
|
.. ")"
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
user = " User",
|
||||||
|
},
|
||||||
|
slash_commands = {
|
||||||
|
["file"] = {
|
||||||
|
opts = {
|
||||||
|
provider = "telescope",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["symbols"] = {
|
||||||
|
opts = {
|
||||||
|
provider = "telescope",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["buffer"] = {
|
||||||
|
opts = {
|
||||||
|
provider = "telescope",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["terminal"] = {
|
||||||
|
opts = {
|
||||||
|
provider = "telescope",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
inline = {
|
||||||
|
adapter = "copilot",
|
||||||
|
-- adapter = "openrouter",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
display = {
|
||||||
|
action_palette = {
|
||||||
|
provider = "telescope",
|
||||||
|
width = 75,
|
||||||
|
heigth = 45,
|
||||||
|
},
|
||||||
|
chat = {
|
||||||
|
layout = "vertical",
|
||||||
|
border = "single",
|
||||||
|
intro_message = "Welcome to CodeCompanion ✨! Press ? for options",
|
||||||
|
show_header_separator = false, -- Show header separators in the chat buffer? Set this to false if you're using an external markdown formatting plugin
|
||||||
|
separator = "─", -- The separator between the different messages in the chat buffer
|
||||||
|
show_references = true, -- Show references (from slash commands and variables) in the chat buffer?
|
||||||
|
show_settings = false, -- Show LLM settings at the top of the chat buffer?
|
||||||
|
show_token_count = true, -- Show the token count for each response?
|
||||||
|
start_in_insert_mode = false, -- Open the chat buffer in insert mode?
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
layout = "vertical",
|
||||||
|
position = nil,
|
||||||
|
border = "rounded",
|
||||||
|
height = 0.45,
|
||||||
|
width = 0.45,
|
||||||
|
relative = "editor",
|
||||||
|
opts = {
|
||||||
|
breakindent = true,
|
||||||
|
cursorcolumn = false,
|
||||||
|
cursorline = false,
|
||||||
|
foldcolumn = "0",
|
||||||
|
linebreak = true,
|
||||||
|
list = false,
|
||||||
|
numberwidth = 1,
|
||||||
|
signcolumn = "no",
|
||||||
|
spell = false,
|
||||||
|
wrap = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
diff = {
|
||||||
|
enabled = true,
|
||||||
|
provider = "mini_diff",
|
||||||
|
},
|
||||||
|
---Customize how tokens are displayed
|
||||||
|
---@param tokens number
|
||||||
|
---@param adapter CodeCompanion.Adapter
|
||||||
|
---@return string
|
||||||
|
token_count = function(tokens, adapter)
|
||||||
|
return " (" .. tokens .. " tokens)"
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
log_level = "DEBUG",
|
||||||
|
-- log_level = "TRACE",
|
||||||
|
},
|
||||||
|
extensions = {
|
||||||
|
mcphub = {
|
||||||
|
callback = "mcphub.extensions.codecompanion",
|
||||||
|
opts = {
|
||||||
|
show_result_in_chat = true, -- Show the mcp tool result in the chat buffer
|
||||||
|
make_vars = true, -- make chat #variables from MCP server resources
|
||||||
|
make_slash_commands = true, -- make /slash_commands from MCP server prompts
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
init = function()
|
||||||
|
require("plugins.codecompanion.fidget-spinner"):init()
|
||||||
|
end,
|
||||||
|
}
|
||||||
126
lua/plugins/codecompanion/fidget-spinner-notify.lua
Normal file
126
lua/plugins/codecompanion/fidget-spinner-notify.lua
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
local notify = require("notify")
|
||||||
|
local spinner_frames = { "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" }
|
||||||
|
local spinner_len = #spinner_frames -- cache spinner length
|
||||||
|
local M = {}
|
||||||
|
local timeout = 2999
|
||||||
|
|
||||||
|
-- Helper function to safely call notify
|
||||||
|
local function safe_notify(msg, level, opts)
|
||||||
|
local ok, res = pcall(notify, msg, level, opts)
|
||||||
|
return ok, res
|
||||||
|
end
|
||||||
|
|
||||||
|
function M:init()
|
||||||
|
local group = vim.api.nvim_create_augroup("CodeCompanionFidgetHooks", {})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ "User" }, {
|
||||||
|
pattern = "CodeCompanionRequestStarted",
|
||||||
|
group = group,
|
||||||
|
callback = function(request)
|
||||||
|
local handle = M:create_progress_handle(request)
|
||||||
|
M:store_progress_handle(request.data.id, handle)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ "User" }, {
|
||||||
|
pattern = "CodeCompanionRequestFinished",
|
||||||
|
group = group,
|
||||||
|
callback = function(request)
|
||||||
|
local handle = M:pop_progress_handle(request.data.id)
|
||||||
|
if handle then
|
||||||
|
M:report_exit_status(handle, request)
|
||||||
|
handle:finish()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
M.handles = {}
|
||||||
|
|
||||||
|
function M:store_progress_handle(id, handle)
|
||||||
|
M.handles[id] = handle
|
||||||
|
end
|
||||||
|
|
||||||
|
function M:pop_progress_handle(id)
|
||||||
|
local handle = M.handles[id]
|
||||||
|
M.handles[id] = nil
|
||||||
|
return handle
|
||||||
|
end
|
||||||
|
|
||||||
|
function M:create_progress_handle(request)
|
||||||
|
local title = " Requesting assistance"
|
||||||
|
.. " ("
|
||||||
|
.. request.data.strategy
|
||||||
|
.. ") from "
|
||||||
|
.. request.data.adapter.formatted_name
|
||||||
|
.. " using "
|
||||||
|
.. request.data.adapter.model
|
||||||
|
local idx = 1
|
||||||
|
local start_time = os.time()
|
||||||
|
local notification_id =
|
||||||
|
notify(spinner_frames[idx] .. " In progress (" .. "0s" .. ")...", "info", { title = title, timeout = false })
|
||||||
|
local handle = { notification_id = notification_id, title = title, finished = false }
|
||||||
|
local timer = vim.loop.new_timer()
|
||||||
|
timer:start(
|
||||||
|
0,
|
||||||
|
100,
|
||||||
|
vim.schedule_wrap(function()
|
||||||
|
if handle.finished then
|
||||||
|
return
|
||||||
|
end -- stop updating if finished
|
||||||
|
idx = idx % spinner_len + 1
|
||||||
|
local elapsed = os.difftime(os.time(), start_time)
|
||||||
|
local opts = { replace = handle.notification_id, title = title, timeout = false }
|
||||||
|
local ok, new_id = safe_notify(spinner_frames[idx] .. " In progress (" .. elapsed .. "s)...", "info", opts)
|
||||||
|
if ok then
|
||||||
|
handle.notification_id = new_id
|
||||||
|
else
|
||||||
|
handle.notification_id = notify(
|
||||||
|
spinner_frames[idx] .. " In progress (" .. elapsed .. "s)...",
|
||||||
|
"info",
|
||||||
|
{ title = title, timeout = false }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
)
|
||||||
|
handle.timer = timer
|
||||||
|
handle.finish = function()
|
||||||
|
handle.finished = true -- mark as finished to abort future updates
|
||||||
|
if handle.timer then
|
||||||
|
handle.timer:stop()
|
||||||
|
handle.timer:close()
|
||||||
|
handle.timer = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return handle
|
||||||
|
end
|
||||||
|
|
||||||
|
function M:report_exit_status(handle, request)
|
||||||
|
local title = handle.title
|
||||||
|
or (
|
||||||
|
" Requesting assistance"
|
||||||
|
.. " ("
|
||||||
|
.. request.data.strategy
|
||||||
|
.. ") from "
|
||||||
|
.. request.data.adapter.formatted_name
|
||||||
|
.. " using "
|
||||||
|
.. request.data.adapter.model
|
||||||
|
)
|
||||||
|
local function report(msg, level)
|
||||||
|
local opts = { replace = handle.notification_id, title = title, timeout = timeout }
|
||||||
|
local ok = safe_notify(msg, level, opts)
|
||||||
|
if not ok then
|
||||||
|
notify(msg, level, { title = title, timeout = timeout })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if request.data.status == "success" then
|
||||||
|
report("Completed", "info")
|
||||||
|
elseif request.data.status == "error" then
|
||||||
|
report(" Error", "error")
|
||||||
|
else
|
||||||
|
report(" Cancelled", "warn")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
73
lua/plugins/codecompanion/fidget-spinner.lua
Normal file
73
lua/plugins/codecompanion/fidget-spinner.lua
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
-- lua/plugins/codecompanion/fidget-spinner.lua
|
||||||
|
|
||||||
|
local progress = require("fidget.progress")
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M:init()
|
||||||
|
local group = vim.api.nvim_create_augroup("CodeCompanionFidgetHooks", {})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ "User" }, {
|
||||||
|
pattern = "CodeCompanionRequestStarted",
|
||||||
|
group = group,
|
||||||
|
callback = function(request)
|
||||||
|
local handle = M:create_progress_handle(request)
|
||||||
|
M:store_progress_handle(request.data.id, handle)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ "User" }, {
|
||||||
|
pattern = "CodeCompanionRequestFinished",
|
||||||
|
group = group,
|
||||||
|
callback = function(request)
|
||||||
|
local handle = M:pop_progress_handle(request.data.id)
|
||||||
|
if handle then
|
||||||
|
M:report_exit_status(handle, request)
|
||||||
|
handle:finish()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
M.handles = {}
|
||||||
|
|
||||||
|
function M:store_progress_handle(id, handle)
|
||||||
|
M.handles[id] = handle
|
||||||
|
end
|
||||||
|
|
||||||
|
function M:pop_progress_handle(id)
|
||||||
|
local handle = M.handles[id]
|
||||||
|
M.handles[id] = nil
|
||||||
|
return handle
|
||||||
|
end
|
||||||
|
|
||||||
|
function M:create_progress_handle(request)
|
||||||
|
return progress.handle.create({
|
||||||
|
title = " Requesting assistance (" .. request.data.strategy .. ")",
|
||||||
|
message = "In progress...",
|
||||||
|
lsp_client = {
|
||||||
|
name = M:llm_role_title(request.data.adapter),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
function M:llm_role_title(adapter)
|
||||||
|
local parts = {}
|
||||||
|
table.insert(parts, adapter.formatted_name)
|
||||||
|
if adapter.model and adapter.model ~= "" then
|
||||||
|
table.insert(parts, "(" .. adapter.model .. ")")
|
||||||
|
end
|
||||||
|
return table.concat(parts, " ")
|
||||||
|
end
|
||||||
|
|
||||||
|
function M:report_exit_status(handle, request)
|
||||||
|
if request.data.status == "success" then
|
||||||
|
handle.message = "Completed"
|
||||||
|
elseif request.data.status == "error" then
|
||||||
|
handle.message = " Error"
|
||||||
|
else
|
||||||
|
handle.message = " Cancelled"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
4
lua/plugins/conform.lua
Normal file
4
lua/plugins/conform.lua
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
"stevearc/conform.nvim",
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
7
lua/plugins/copilot-cmp.lua
Normal file
7
lua/plugins/copilot-cmp.lua
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
return {
|
||||||
|
"zbirenbaum/copilot-cmp",
|
||||||
|
opts = {
|
||||||
|
suggestion = { enabled = false },
|
||||||
|
panel = { enabled = false },
|
||||||
|
},
|
||||||
|
}
|
||||||
3
lua/plugins/copilot-lualine.lua
Normal file
3
lua/plugins/copilot-lualine.lua
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
return {
|
||||||
|
'AndreM222/copilot-lualine'
|
||||||
|
}
|
||||||
55
lua/plugins/copilot.lua
Normal file
55
lua/plugins/copilot.lua
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
return {
|
||||||
|
"zbirenbaum/copilot.lua",
|
||||||
|
opts = {
|
||||||
|
panel = {
|
||||||
|
enabled = true,
|
||||||
|
auto_refresh = false,
|
||||||
|
keymap = {
|
||||||
|
jump_prev = "[[",
|
||||||
|
jump_next = "]]",
|
||||||
|
accept = "<CR>",
|
||||||
|
refresh = "gr",
|
||||||
|
open = "<M-CR>",
|
||||||
|
},
|
||||||
|
layout = {
|
||||||
|
position = "bottom", -- | top | left | right | horizontal | vertical
|
||||||
|
ratio = 0.4,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
suggestion = {
|
||||||
|
enabled = false,
|
||||||
|
auto_trigger = false,
|
||||||
|
hide_during_completion = true,
|
||||||
|
debounce = 75,
|
||||||
|
keymap = {
|
||||||
|
accept = "<M-l>",
|
||||||
|
accept_word = false,
|
||||||
|
accept_line = false,
|
||||||
|
next = "<M-]>",
|
||||||
|
prev = "<M-[>",
|
||||||
|
dismiss = "<C-]>",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- filetypes = {
|
||||||
|
-- yaml = false,
|
||||||
|
-- markdown = false,
|
||||||
|
-- help = false,
|
||||||
|
-- gitcommit = false,
|
||||||
|
-- gitrebase = false,
|
||||||
|
-- hgcommit = false,
|
||||||
|
-- svn = false,
|
||||||
|
-- cvs = false,
|
||||||
|
-- ["."] = false,
|
||||||
|
-- },
|
||||||
|
-- copilot_node_command = "node", -- Node.js version must be > 18.x
|
||||||
|
server_opts_overrides = {
|
||||||
|
trace = "verbose",
|
||||||
|
settings = {
|
||||||
|
advanced = {
|
||||||
|
listCount = 10, -- #completions for panel
|
||||||
|
inlineSuggestCount = 5, -- #completions for getCompletions
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
36
lua/plugins/dashboard.lua
Normal file
36
lua/plugins/dashboard.lua
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
return {
|
||||||
|
"nvimdev/dashboard-nvim",
|
||||||
|
event = "VimEnter",
|
||||||
|
opts = {
|
||||||
|
theme = "hyper",
|
||||||
|
config = {
|
||||||
|
week_header = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
shortcut = {
|
||||||
|
{ desc = " Update", group = "@property", action = "Lazy update", key = "u" },
|
||||||
|
{
|
||||||
|
icon = " ",
|
||||||
|
icon_hl = "@variable",
|
||||||
|
desc = "Files",
|
||||||
|
group = "Label",
|
||||||
|
action = "Telescope find_files",
|
||||||
|
key = "f",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc = " Apps",
|
||||||
|
group = "DiagnosticHint",
|
||||||
|
action = "Telescope app",
|
||||||
|
key = "a",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc = " dotfiles",
|
||||||
|
group = "Number",
|
||||||
|
action = "Telescope ~/.config",
|
||||||
|
key = "d",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
depends = { "nvim-tree/nvim-web-devicons" },
|
||||||
|
}
|
||||||
27
lua/plugins/diffview.lua
Normal file
27
lua/plugins/diffview.lua
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
return {
|
||||||
|
"sindrets/diffview.nvim",
|
||||||
|
dependencies = "nvim-tree/nvim-web-devicons",
|
||||||
|
opts = {
|
||||||
|
view = {
|
||||||
|
-- Disable the default normal mode mapping for `<tab>`:
|
||||||
|
-- ["<tab>"] = false,
|
||||||
|
-- Disable the default visual mode mapping for `gf`:
|
||||||
|
-- { "x", "gf", false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hooks = {
|
||||||
|
diff_buf_read = function(bufnr)
|
||||||
|
-- Change local options in diff buffers
|
||||||
|
vim.opt_local.wrap = false
|
||||||
|
vim.opt_local.list = false
|
||||||
|
vim.opt_local.colorcolumn = { 80 }
|
||||||
|
end,
|
||||||
|
view_opened = function(view)
|
||||||
|
require("notify").notify(
|
||||||
|
("A new %s was opened on tab page %d!"):format(view.class:name(), view.tabpage),
|
||||||
|
"info",
|
||||||
|
{ timeout = 5000, title = "Diffview" }
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
101
lua/plugins/fidget.lua
Normal file
101
lua/plugins/fidget.lua
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
return {
|
||||||
|
"j-hui/fidget.nvim",
|
||||||
|
opts = {
|
||||||
|
-- text = {
|
||||||
|
-- spinner = "pipe", -- animation shown when tasks are ongoing
|
||||||
|
-- done = "✔", -- character shown when all tasks are complete
|
||||||
|
-- commenced = "Started", -- message shown when task starts
|
||||||
|
-- completed = "Completed", -- message shown when task completes
|
||||||
|
-- },
|
||||||
|
-- align = {
|
||||||
|
-- bottom = true, -- align fidgets along bottom edge of buffer
|
||||||
|
-- right = true, -- align fidgets along right edge of buffer
|
||||||
|
-- },
|
||||||
|
progress = {
|
||||||
|
poll_rate = 0, -- How and when to poll for progress messages
|
||||||
|
suppress_on_insert = false, -- Suppress new messages while in insert mode
|
||||||
|
ignore_done_already = false, -- Ignore new tasks that are already complete
|
||||||
|
ignore_empty_message = false, -- Ignore new tasks that don't contain a message
|
||||||
|
clear_on_detach = -- Clear notification group when LSP server detaches
|
||||||
|
function(client_id)
|
||||||
|
local client = vim.lsp.get_client_by_id(client_id)
|
||||||
|
return client and client.name or nil
|
||||||
|
end,
|
||||||
|
notification_group = -- How to get a progress message's notification group key
|
||||||
|
function(msg) return msg.lsp_client.name end,
|
||||||
|
ignore = {}, -- List of LSP servers to ignore
|
||||||
|
|
||||||
|
-- Options related to how LSP progress messages are displayed as notifications
|
||||||
|
display = {
|
||||||
|
render_limit = 16, -- How many LSP messages to show at once
|
||||||
|
done_ttl = 3, -- How long a message should persist after completion
|
||||||
|
done_icon = "✔", -- Icon shown when all LSP progress tasks are complete
|
||||||
|
done_style = "Constant", -- Highlight group for completed LSP tasks
|
||||||
|
progress_ttl = math.huge, -- How long a message should persist when in progress
|
||||||
|
progress_icon = -- Icon shown when LSP progress tasks are in progress
|
||||||
|
{ "dots" },
|
||||||
|
progress_style = -- Highlight group for in-progress LSP tasks
|
||||||
|
"WarningMsg",
|
||||||
|
group_style = "Title", -- Highlight group for group name (LSP server name)
|
||||||
|
icon_style = "Question", -- Highlight group for group icons
|
||||||
|
priority = 30, -- Ordering priority for LSP notification group
|
||||||
|
skip_history = true, -- Whether progress notifications should be omitted from history
|
||||||
|
format_message = -- How to format a progress message
|
||||||
|
require("fidget.progress.display").default_format_message,
|
||||||
|
format_annote = -- How to format a progress annotation
|
||||||
|
function(msg) return msg.title end,
|
||||||
|
format_group_name = -- How to format a progress notification group's name
|
||||||
|
function(group) return tostring(group) end,
|
||||||
|
overrides = { -- Override options from the default notification config
|
||||||
|
rust_analyzer = { name = "rust-analyzer" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Options related to Neovim's built-in LSP client
|
||||||
|
lsp = {
|
||||||
|
progress_ringbuf_size = 0, -- Configure the nvim's LSP progress ring buffer size
|
||||||
|
log_handler = false, -- Log `$/progress` handler invocations (for debugging)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
notification = {
|
||||||
|
window = {
|
||||||
|
winblend = 0,
|
||||||
|
},
|
||||||
|
poll_rate = 10, -- How frequently to update and render notifications
|
||||||
|
filter = vim.log.levels.INFO, -- Minimum notifications level
|
||||||
|
history_size = 128, -- Number of removed messages to retain in history
|
||||||
|
override_vim_notify = false, -- Automatically override vim.notify() with Fidget
|
||||||
|
-- How to configure notification groups when instantiated
|
||||||
|
configs = { default = require("fidget.notification").default_config },
|
||||||
|
-- Conditionally redirect notifications to another backend
|
||||||
|
redirect = function(msg, level, opts)
|
||||||
|
if opts and opts.on_open then
|
||||||
|
return require("fidget.integration.nvim-notify").delegate(msg, level, opts)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
|
-- Options related to how notifications are rendered as text
|
||||||
|
view = {
|
||||||
|
stack_upwards = true, -- Display notification items from bottom to top
|
||||||
|
icon_separator = " ", -- Separator between group name and icon
|
||||||
|
group_separator = "---", -- Separator between notification groups
|
||||||
|
},
|
||||||
|
},
|
||||||
|
integration = {
|
||||||
|
["nvim-tree"] = {
|
||||||
|
enable = true, -- Integrate with nvim-tree/nvim-tree.lua (if installed)
|
||||||
|
},
|
||||||
|
["xcodebuild-nvim"] = {
|
||||||
|
enable = false, -- Integrate with wojciech-kulik/xcodebuild.nvim (if installed)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Options related to logging
|
||||||
|
logger = {
|
||||||
|
level = vim.log.levels.WARN, -- Minimum logging level
|
||||||
|
max_size = 10000, -- Maximum log file size, in KB
|
||||||
|
float_precision = 0.01, -- Limit the number of decimals displayed for floats
|
||||||
|
-- Where Fidget writes its logs to
|
||||||
|
path = string.format("%s/fidget.nvim.log", vim.fn.stdpath("cache")),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
50
lua/plugins/gitsigns.lua
Normal file
50
lua/plugins/gitsigns.lua
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
return {
|
||||||
|
"lewis6991/gitsigns.nvim",
|
||||||
|
opts = {
|
||||||
|
signs = {
|
||||||
|
add = { text = "┃" },
|
||||||
|
change = { text = "┃" },
|
||||||
|
delete = { text = "_" },
|
||||||
|
topdelete = { text = "‾" },
|
||||||
|
changedelete = { text = "~" },
|
||||||
|
untracked = { text = "┆" },
|
||||||
|
},
|
||||||
|
signs_staged = {
|
||||||
|
add = { text = "┃" },
|
||||||
|
change = { text = "┃" },
|
||||||
|
delete = { text = "_" },
|
||||||
|
topdelete = { text = "‾" },
|
||||||
|
changedelete = { text = "~" },
|
||||||
|
untracked = { text = "┆" },
|
||||||
|
},
|
||||||
|
signs_staged_enable = true,
|
||||||
|
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
|
||||||
|
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
|
||||||
|
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
|
||||||
|
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
|
||||||
|
watch_gitdir = { follow_files = true },
|
||||||
|
auto_attach = true,
|
||||||
|
attach_to_untracked = false,
|
||||||
|
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
|
||||||
|
current_line_blame_opts = {
|
||||||
|
virt_text = true,
|
||||||
|
virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
|
||||||
|
delay = 1000,
|
||||||
|
ignore_whitespace = false,
|
||||||
|
virt_text_priority = 100,
|
||||||
|
},
|
||||||
|
current_line_blame_formatter = "<author>, <author_time:%R> - <summary>",
|
||||||
|
sign_priority = 6,
|
||||||
|
update_debounce = 100,
|
||||||
|
status_formatter = nil, -- Use default
|
||||||
|
max_file_length = 40000, -- Disable if file is longer than this (in lines)
|
||||||
|
preview_config = {
|
||||||
|
-- Options passed to nvim_open_win
|
||||||
|
border = "single",
|
||||||
|
style = "minimal",
|
||||||
|
relative = "cursor",
|
||||||
|
row = 0,
|
||||||
|
col = 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
1
lua/plugins/goto-preview.lua
Normal file
1
lua/plugins/goto-preview.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return { "rmagatti/goto-preview" }
|
||||||
41
lua/plugins/image.lua
Normal file
41
lua/plugins/image.lua
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
return {
|
||||||
|
"3rd/image.nvim",
|
||||||
|
opts = {
|
||||||
|
backend = "kitty",
|
||||||
|
-- processor = "magick_rock", -- or "magick_cli"
|
||||||
|
processor = "magick_cli", -- or "magick_cli"
|
||||||
|
integrations = {
|
||||||
|
markdown = {
|
||||||
|
enabled = true,
|
||||||
|
clear_in_insert_mode = false,
|
||||||
|
download_remote_images = true,
|
||||||
|
only_render_image_at_cursor = false,
|
||||||
|
floating_windows = false, -- if true, images will be rendered in floating markdown windows
|
||||||
|
filetypes = { "markdown", "vimwiki" }, -- markdown extensions (ie. quarto) can go here
|
||||||
|
},
|
||||||
|
neorg = {
|
||||||
|
enabled = true,
|
||||||
|
filetypes = { "norg" },
|
||||||
|
},
|
||||||
|
typst = {
|
||||||
|
enabled = true,
|
||||||
|
filetypes = { "typst" },
|
||||||
|
},
|
||||||
|
html = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
css = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
max_width = nil,
|
||||||
|
max_height = nil,
|
||||||
|
max_width_window_percentage = nil,
|
||||||
|
max_height_window_percentage = 50,
|
||||||
|
window_overlap_clear_enabled = false, -- toggles images when windows are overlapped
|
||||||
|
window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "snacks_notif", "scrollview", "scrollview_sign" },
|
||||||
|
editor_only_render_when_focused = false, -- auto show/hide images when the editor gains/looses focus
|
||||||
|
tmux_show_only_in_active_window = false, -- auto show/hide images in the correct Tmux window (needs visual-activity off)
|
||||||
|
hijack_file_patterns = { "*.png", "*.jpg", "*.jpeg", "*.gif", "*.webp", "*.avif" }, -- render image files as images when opened
|
||||||
|
},
|
||||||
|
}
|
||||||
35
lua/plugins/indent-blanklines.lua
Normal file
35
lua/plugins/indent-blanklines.lua
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
return {
|
||||||
|
"lukas-reineke/indent-blankline.nvim",
|
||||||
|
config = function()
|
||||||
|
local highlight = {
|
||||||
|
"RainbowRed",
|
||||||
|
"RainbowYellow",
|
||||||
|
"RainbowBlue",
|
||||||
|
"RainbowOrange",
|
||||||
|
"RainbowGreen",
|
||||||
|
"RainbowViolet",
|
||||||
|
"RainbowCyan",
|
||||||
|
}
|
||||||
|
|
||||||
|
local hooks = require("ibl.hooks")
|
||||||
|
-- create the highlight groups in the highlight setup hook, so they are reset
|
||||||
|
-- every time the colorscheme changes
|
||||||
|
hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
|
||||||
|
vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#ED8796" })
|
||||||
|
vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#EED49F" })
|
||||||
|
vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#8AADF4" })
|
||||||
|
vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#F5A97F" })
|
||||||
|
vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#A6DA95" })
|
||||||
|
vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C6A0F6" })
|
||||||
|
vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#8BD5CA" })
|
||||||
|
end)
|
||||||
|
|
||||||
|
vim.g.rainbow_delimiters = { highlight = highlight }
|
||||||
|
require("ibl").setup({
|
||||||
|
scope = { highlight = highlight },
|
||||||
|
exclude = { filetypes = { "dashboard" } },
|
||||||
|
})
|
||||||
|
|
||||||
|
hooks.register(hooks.type.SCOPE_HIGHLIGHT, hooks.builtin.scope_highlight_from_extmark)
|
||||||
|
end,
|
||||||
|
}
|
||||||
14
lua/plugins/lazydev.lua
Normal file
14
lua/plugins/lazydev.lua
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"folke/lazydev.nvim",
|
||||||
|
ft = "lua", -- only load on lua files
|
||||||
|
opts = {
|
||||||
|
library = {
|
||||||
|
-- See the configuration section for more details
|
||||||
|
-- Load luvit types when the `vim.uv` word is found
|
||||||
|
{ path = "${3rd}/luv/library", words = { "vim%.uv" } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ "folke/neodev.nvim", enabled = false }, -- make sure to uninstall or disable neodev.nvim
|
||||||
|
}
|
||||||
107
lua/plugins/lspconfig.lua
Normal file
107
lua/plugins/lspconfig.lua
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
return {
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
config = function()
|
||||||
|
local lspconfig = require("lspconfig")
|
||||||
|
vim.notify = require("notify")
|
||||||
|
local servers = {
|
||||||
|
"bashls",
|
||||||
|
-- "jedi_language_server",
|
||||||
|
"basedpyright",
|
||||||
|
"jsonls",
|
||||||
|
-- "yamlls",
|
||||||
|
"vimls",
|
||||||
|
"dotls",
|
||||||
|
"dockerls",
|
||||||
|
"html",
|
||||||
|
"cssls",
|
||||||
|
"lua_ls",
|
||||||
|
"eslint",
|
||||||
|
"ts_ls",
|
||||||
|
"angularls",
|
||||||
|
"ansiblels",
|
||||||
|
"docker_compose_language_service",
|
||||||
|
"golangci_lint_ls",
|
||||||
|
"gopls",
|
||||||
|
}
|
||||||
|
-- Define the highlight color for float border
|
||||||
|
vim.api.nvim_set_hl(0, "FloatBorder", { fg = "#89b4fa", bold = true })
|
||||||
|
local border = {
|
||||||
|
{ "╭", "FloatBorder" },
|
||||||
|
{ "─", "FloatBorder" },
|
||||||
|
{ "╮", "FloatBorder" },
|
||||||
|
{ "│", "FloatBorder" },
|
||||||
|
{ "╯", "FloatBorder" },
|
||||||
|
{ "─", "FloatBorder" },
|
||||||
|
{ "╰", "FloatBorder" },
|
||||||
|
{ "│", "FloatBorder" },
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, lsp in ipairs(servers) do
|
||||||
|
if lsp == "lua_ls" then
|
||||||
|
vim.lsp.enable(lsp)
|
||||||
|
vim.lsp.config("lua_ls", {
|
||||||
|
on_init = function(client)
|
||||||
|
if client.workspace_folders then
|
||||||
|
local path = client.workspace_folders[1].name
|
||||||
|
if
|
||||||
|
path ~= vim.fn.stdpath("config")
|
||||||
|
and (vim.uv.fs_stat(path .. "/.luarc.json") or vim.uv.fs_stat(path .. "/.luarc.jsonc"))
|
||||||
|
then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, {
|
||||||
|
runtime = {
|
||||||
|
-- Tell the language server which version of Lua you're using
|
||||||
|
-- (most likely LuaJIT in the case of Neovim)
|
||||||
|
version = "LuaJIT",
|
||||||
|
},
|
||||||
|
-- Make the server aware of Neovim runtime files
|
||||||
|
workspace = {
|
||||||
|
checkThirdParty = false,
|
||||||
|
library = {
|
||||||
|
vim.env.VIMRUNTIME,
|
||||||
|
-- Depending on the usage, you might want to add additional paths here.
|
||||||
|
-- "${3rd}/luv/library",
|
||||||
|
-- "${3rd}/busted/library",
|
||||||
|
},
|
||||||
|
-- or pull in all of 'runtimepath'. NOTE: this is a lot slower and will cause issues when working on your own configuration (see https://github.com/neovim/nvim-lspconfig/issues/3189)
|
||||||
|
-- library = vim.api.nvim_get_runtime_file("", true)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
settings = {
|
||||||
|
Lua = {},
|
||||||
|
},
|
||||||
|
handlers = {},
|
||||||
|
})
|
||||||
|
elseif lsp == "basedpyright" then
|
||||||
|
vim.lsp.enable(lsp)
|
||||||
|
vim.lsp.config(lsp, {
|
||||||
|
analysis = {
|
||||||
|
autoSearchPaths = true,
|
||||||
|
diagnosticMode = "openFilesOnly",
|
||||||
|
useLibraryCodeForTypes = true,
|
||||||
|
},
|
||||||
|
diagnosticMode = "openFilesOnly",
|
||||||
|
inlayHints = {
|
||||||
|
callArgumentNames = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
else
|
||||||
|
vim.lsp.enable(lsp)
|
||||||
|
-- vim.lsp.config(lsp, {
|
||||||
|
-- handlers = {
|
||||||
|
-- UNNSUUPPORTED
|
||||||
|
-- ["textDocument/signatureHelp"] = vim.lsp.with(
|
||||||
|
-- vim.lsp.handlers.signature_help,
|
||||||
|
-- { border = border }
|
||||||
|
-- ),
|
||||||
|
-- ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = border }),
|
||||||
|
-- },
|
||||||
|
-- })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
1
lua/plugins/lspkind.lua
Normal file
1
lua/plugins/lspkind.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return { "onsails/lspkind.nvim" }
|
||||||
90
lua/plugins/lualine.lua
Normal file
90
lua/plugins/lualine.lua
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
return {
|
||||||
|
"nvim-lualine/lualine.nvim",
|
||||||
|
config = function()
|
||||||
|
require("lualine").setup({
|
||||||
|
options = {
|
||||||
|
icons_enabled = true,
|
||||||
|
theme = "catppuccin",
|
||||||
|
-- theme = 'dracula',
|
||||||
|
-- theme = 'horizon',
|
||||||
|
-- theme = 'onedark',
|
||||||
|
component_separators = { left = "", right = "" },
|
||||||
|
section_separators = { left = "", right = "" },
|
||||||
|
disabled_filetypes = {},
|
||||||
|
always_divide_middle = true,
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
lualine_a = { "mode" },
|
||||||
|
lualine_b = { "branch", "diff" },
|
||||||
|
lualine_c = { "filename" },
|
||||||
|
lualine_x = {
|
||||||
|
{
|
||||||
|
"seachcount",
|
||||||
|
{ require("mcphub.extensions.lualine") },
|
||||||
|
"copilot",
|
||||||
|
symbols = {
|
||||||
|
status = {
|
||||||
|
icons = {
|
||||||
|
enabled = " ",
|
||||||
|
sleep = " ", -- auto-trigger disabled
|
||||||
|
disabled = " ",
|
||||||
|
warning = " ",
|
||||||
|
unknown = " ",
|
||||||
|
},
|
||||||
|
hl = {
|
||||||
|
enabled = "#50FA7B",
|
||||||
|
sleep = "#AEB7D0",
|
||||||
|
disabled = "#6272A4",
|
||||||
|
warning = "#FFB86C",
|
||||||
|
unknown = "#FF5555",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
spinners = "dots", -- has some premade spinners
|
||||||
|
spinner_color = "#6272A4",
|
||||||
|
},
|
||||||
|
show_colors = true,
|
||||||
|
show_loading = true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"diagnostics",
|
||||||
|
"fileformat",
|
||||||
|
symbols = {
|
||||||
|
unix = "", -- e712
|
||||||
|
dos = "", -- e70f
|
||||||
|
mac = "", -- e711
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"encoding",
|
||||||
|
"fileformat",
|
||||||
|
{ "filetype", colored = true, icon_only = false },
|
||||||
|
},
|
||||||
|
lualine_y = { "progress" },
|
||||||
|
lualine_z = { "location" },
|
||||||
|
},
|
||||||
|
inactive_sections = {
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_c = {
|
||||||
|
{
|
||||||
|
"filename",
|
||||||
|
file_status = true, -- Displays file status (readonly status, modified status)
|
||||||
|
path = 0, -- 0: Just the filename
|
||||||
|
shorting_target = 40, -- Shortens path to leave 40 spaces in the window
|
||||||
|
symbols = {
|
||||||
|
modified = "[+]", -- Text to show when the file is modified.
|
||||||
|
readonly = "[-]", -- Text to show when the file is non-modifiable or readonly.
|
||||||
|
unnamed = "[No Name]", -- Text to show for unnamed buffers.
|
||||||
|
},
|
||||||
|
},
|
||||||
|
M,
|
||||||
|
},
|
||||||
|
lualine_x = { "location" },
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {},
|
||||||
|
},
|
||||||
|
tabline = {},
|
||||||
|
extensions = { "quickfix", "fzf", "nvim-tree", "symbols-outline", "fugitive", "toggleterm", "man" },
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
depends = { "kyazdani42/nvim-web-devicons" },
|
||||||
|
}
|
||||||
7
lua/plugins/luasnip.lua
Normal file
7
lua/plugins/luasnip.lua
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
return {
|
||||||
|
"L3MON4D3/LuaSnip",
|
||||||
|
-- follow latest release.
|
||||||
|
version = "v2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release)
|
||||||
|
-- install jsregexp (optional!).
|
||||||
|
build = "make install_jsregexp",
|
||||||
|
}
|
||||||
51
lua/plugins/mcphub.lua
Normal file
51
lua/plugins/mcphub.lua
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
return {
|
||||||
|
"ravitemer/mcphub.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
},
|
||||||
|
cmd = "MCPHub",
|
||||||
|
build = "bundled_build.lua", -- Bundles mcp-hub locally
|
||||||
|
config = function()
|
||||||
|
vim.notify = require("notify")
|
||||||
|
require("mcphub").setup({
|
||||||
|
use_bundled_binary = true, -- Use local binary
|
||||||
|
port = 37373, -- Port for MCP Hub Express API
|
||||||
|
config = vim.fn.expand("~/.config/mcphub/servers.json"), -- Config file path
|
||||||
|
native_servers = {}, -- add your native servers here
|
||||||
|
auto_approve = true,
|
||||||
|
extensions = {
|
||||||
|
avante = {},
|
||||||
|
codecompanion = {
|
||||||
|
show_result_in_chat = true, -- Show tool results in chat
|
||||||
|
make_vars = true, -- Create chat variables from resources
|
||||||
|
make_slash_commands = true, -- make /slash_commands from MCP server prompts
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- UI configuration
|
||||||
|
ui = {
|
||||||
|
window = {
|
||||||
|
width = 0.8, -- Window width (0-1 ratio)
|
||||||
|
height = 0.8, -- Window height (0-1 ratio)
|
||||||
|
border = "rounded", -- Window border style
|
||||||
|
relative = "editor", -- Window positioning
|
||||||
|
zindex = 50, -- Window stack order
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Event callbacks
|
||||||
|
on_ready = function(hub) end, -- Called when hub is ready
|
||||||
|
on_error = function(err)
|
||||||
|
vim.notify(err, "ERROR")
|
||||||
|
end, -- Called on errors
|
||||||
|
|
||||||
|
-- Logging configuration
|
||||||
|
log = {
|
||||||
|
level = vim.log.levels.WARN, -- Minimum log level
|
||||||
|
to_file = false, -- Enable file logging
|
||||||
|
file_path = nil, -- Custom log file path
|
||||||
|
prefix = "MCPHub", -- Log message prefix
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
63
lua/plugins/mini.lua
Normal file
63
lua/plugins/mini.lua
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
return {
|
||||||
|
"echasnovski/mini.diff",
|
||||||
|
depends = { "echasnovski/mini.nvim" },
|
||||||
|
opts = {
|
||||||
|
|
||||||
|
-- Options for how hunks are visualized
|
||||||
|
view = {
|
||||||
|
-- Visualization style. Possible values are 'sign' and 'number'.
|
||||||
|
-- Default: 'number' if line numbers are enabled, 'sign' otherwise.
|
||||||
|
style = vim.go.number and "number" or "sign",
|
||||||
|
|
||||||
|
-- Signs used for hunks with 'sign' view
|
||||||
|
signs = { add = "▒", change = "▒", delete = "▒" },
|
||||||
|
|
||||||
|
-- Priority of used visualization extmarks
|
||||||
|
priority = 199,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Source for how reference text is computed/updated/etc
|
||||||
|
-- Uses content from Git index by default
|
||||||
|
source = nil,
|
||||||
|
|
||||||
|
-- Delays (in ms) defining asynchronous processes
|
||||||
|
delay = {
|
||||||
|
-- How much to wait before update following every text change
|
||||||
|
text_change = 200,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Module mappings. Use `''` (empty string) to disable one.
|
||||||
|
mappings = {
|
||||||
|
-- Apply hunks inside a visual/operator region
|
||||||
|
apply = "gh",
|
||||||
|
|
||||||
|
-- Reset hunks inside a visual/operator region
|
||||||
|
reset = "gH",
|
||||||
|
|
||||||
|
-- Hunk range textobject to be used inside operator
|
||||||
|
-- Works also in Visual mode if mapping differs from apply and reset
|
||||||
|
textobject = "gh",
|
||||||
|
|
||||||
|
-- Go to hunk range in corresponding direction
|
||||||
|
goto_first = "[H",
|
||||||
|
goto_prev = "[h",
|
||||||
|
goto_next = "]h",
|
||||||
|
goto_last = "]H",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Various options
|
||||||
|
options = {
|
||||||
|
-- Diff algorithm. See `:h vim.diff()`.
|
||||||
|
algorithm = "histogram",
|
||||||
|
|
||||||
|
-- Whether to use "indent heuristic". See `:h vim.diff()`.
|
||||||
|
indent_heuristic = true,
|
||||||
|
|
||||||
|
-- The amount of second-stage diff to align lines (in Neovim>=0.9)
|
||||||
|
linematch = 60,
|
||||||
|
|
||||||
|
-- Whether to wrap around edges during hunk navigation
|
||||||
|
wrap_goto = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
1
lua/plugins/nio.lua
Normal file
1
lua/plugins/nio.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return { "nvim-neotest/nvim-nio" }
|
||||||
93
lua/plugins/noice.lua
Normal file
93
lua/plugins/noice.lua
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
return {
|
||||||
|
"folke/noice.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = {
|
||||||
|
lsp = {
|
||||||
|
progress = {
|
||||||
|
enabled = true,
|
||||||
|
-- Lsp Progress is formatted using the builtins for lsp_progress. See config.format.builtin
|
||||||
|
-- See the section on formatting for more details on how to customize.
|
||||||
|
--- @type NoiceFormat|string
|
||||||
|
format = "lsp_progress",
|
||||||
|
--- @type NoiceFormat|string
|
||||||
|
format_done = "lsp_progress_done",
|
||||||
|
throttle = 1000 / 30, -- frequency to update lsp progress message
|
||||||
|
view = "mini",
|
||||||
|
},
|
||||||
|
-- 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,
|
||||||
|
["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
|
||||||
|
},
|
||||||
|
hover = {
|
||||||
|
enabled = false,
|
||||||
|
silent = false, -- set to true to not show a message if hover is not available
|
||||||
|
view = "split", -- when nil, use defaults from documentation
|
||||||
|
---@type NoiceViewOptions
|
||||||
|
opts = {}, -- merged with defaults from documentation
|
||||||
|
},
|
||||||
|
signature = {
|
||||||
|
enabled = true,
|
||||||
|
auto_open = {
|
||||||
|
enabled = false,
|
||||||
|
trigger = true, -- Automatically show signature help when typing a trigger character from the LSP
|
||||||
|
luasnip = true, -- Will open signature help when jumping to Luasnip insert nodes
|
||||||
|
throttle = 50, -- Debounce lsp signature help request by 50ms
|
||||||
|
},
|
||||||
|
view = nil, -- when nil, use defaults from documentation
|
||||||
|
---@type NoiceViewOptions
|
||||||
|
opts = {}, -- merged with defaults from documentation
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- 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 = true, -- add a border to hover docs and signature help
|
||||||
|
},
|
||||||
|
cmdline = {
|
||||||
|
enabled = true, -- enables the Noice cmdline UI
|
||||||
|
view = "cmdline_popup", -- view for rendering the cmdline. Change to `cmdline` to get a classic cmdline at the bottom
|
||||||
|
opts = {}, -- global options for the cmdline. See section on views
|
||||||
|
---@type table<string, CmdlineFormat>
|
||||||
|
format = {
|
||||||
|
-- conceal: (default=true) This will hide the text in the cmdline that matches the pattern.
|
||||||
|
-- view: (default is cmdline view)
|
||||||
|
-- opts: any options passed to the view
|
||||||
|
-- icon_hl_group: optional hl_group for the icon
|
||||||
|
-- title: set to anything or empty string to hide
|
||||||
|
cmdline = { pattern = "^:", icon = "", lang = "vim" },
|
||||||
|
search_down = { kind = "search", pattern = "^/", icon = " ", lang = "regex" },
|
||||||
|
search_up = { kind = "search", pattern = "^%?", icon = " ", lang = "regex" },
|
||||||
|
filter = { pattern = "^:%s*!", icon = "$", lang = "bash" },
|
||||||
|
lua = { pattern = { "^:%s*lua%s+", "^:%s*lua%s*=%s*", "^:%s*=%s*" }, icon = "", lang = "lua" },
|
||||||
|
help = { pattern = "^:%s*he?l?p?%s+", icon = "" },
|
||||||
|
input = { view = "cmdline_input", icon = " " }, -- Used by input()
|
||||||
|
-- lua = false, -- to disable a format, set to `false`
|
||||||
|
},
|
||||||
|
},
|
||||||
|
views = {
|
||||||
|
cmdline_popup = {
|
||||||
|
border = {
|
||||||
|
style = "none",
|
||||||
|
padding = { 0, 0 },
|
||||||
|
},
|
||||||
|
filter_options = {},
|
||||||
|
win_options = {
|
||||||
|
winhighlight = "NormalFloat:NormalFloat,FloatBorder:FloatBorder",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dependencies = {
|
||||||
|
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
-- OPTIONAL:
|
||||||
|
-- `nvim-notify` is only needed, if you want to use the notification view.
|
||||||
|
-- If not available, we use `mini` as the fallback
|
||||||
|
"rcarriga/nvim-notify",
|
||||||
|
},
|
||||||
|
}
|
||||||
73
lua/plugins/none-ls.lua
Normal file
73
lua/plugins/none-ls.lua
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
return {
|
||||||
|
"nvimtools/none-ls.nvim",
|
||||||
|
config = function()
|
||||||
|
local null_ls = require("null-ls")
|
||||||
|
local helpers = require("null-ls.helpers")
|
||||||
|
-- syncronous formatting
|
||||||
|
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
|
||||||
|
|
||||||
|
-- null_ls.setup({
|
||||||
|
-- on_attach = function(client)
|
||||||
|
-- if client.supports_method "textDocument/formatting" then
|
||||||
|
-- vim.cmd([[
|
||||||
|
-- augroup LspFormatting
|
||||||
|
-- autocmd! * <buffer>
|
||||||
|
-- autocmd BufWritePre <buffer> lua vim.lsp.buf.format()
|
||||||
|
-- augroup END
|
||||||
|
-- ]])
|
||||||
|
-- end
|
||||||
|
-- end,
|
||||||
|
-- })
|
||||||
|
-- you can reuse a shared lspconfig on_attach callback here
|
||||||
|
|
||||||
|
require("null-ls").setup({
|
||||||
|
on_attach = function(client, bufnr)
|
||||||
|
if client.supports_method("textDocument/formatting") then
|
||||||
|
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
||||||
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||||
|
group = augroup,
|
||||||
|
buffer = bufnr,
|
||||||
|
callback = function()
|
||||||
|
-- on 0.8, you should use vim.lsp.buf.format({ bufnr = bufnr }) instead
|
||||||
|
-- on later neovim version, you should use vim.lsp.buf.format({ async = false }) instead
|
||||||
|
-- vim.lsp.buf.formatting_sync()
|
||||||
|
vim.lsp.buf.format({
|
||||||
|
async = false,
|
||||||
|
bufnr = bufnr,
|
||||||
|
filter = function(client)
|
||||||
|
return client.name == "null-ls"
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
sources = {
|
||||||
|
null_ls.builtins.completion.luasnip,
|
||||||
|
null_ls.builtins.formatting.black,
|
||||||
|
null_ls.builtins.formatting.isort,
|
||||||
|
null_ls.builtins.diagnostics.mypy,
|
||||||
|
null_ls.builtins.diagnostics.markdownlint,
|
||||||
|
null_ls.builtins.diagnostics.pylint,
|
||||||
|
-- null_ls.builtins.diagnostics.pydocstyle.with({
|
||||||
|
-- extra_arags = { "--config=$ROOT/setup.cfg" },
|
||||||
|
-- }),
|
||||||
|
-- null_ls.builtins.diagnostics.pydoclint,
|
||||||
|
null_ls.builtins.formatting.stylua,
|
||||||
|
-- null_ls.builtins.formatting.stylua.with({
|
||||||
|
-- extra_args = { '--config-path', vim.fn.expand('~/.config/stylua.toml') },
|
||||||
|
-- }),
|
||||||
|
null_ls.builtins.formatting.markdownlint,
|
||||||
|
null_ls.builtins.formatting.prettier, -- handled by lsp server
|
||||||
|
null_ls.builtins.formatting.shfmt.with({
|
||||||
|
filetypes = { "sh", "bash" },
|
||||||
|
extra_args = { "-i", "0", "-ci", "-sr" },
|
||||||
|
}),
|
||||||
|
null_ls.builtins.formatting.gofmt,
|
||||||
|
null_ls.builtins.formatting.goimports,
|
||||||
|
null_ls.builtins.formatting.goimports_reviser,
|
||||||
|
-- null_ls.builtins.diagnostics.actionlint,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
20
lua/plugins/notify.lua
Normal file
20
lua/plugins/notify.lua
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
return {
|
||||||
|
"rcarriga/nvim-notify",
|
||||||
|
opts = {
|
||||||
|
background_colour = "#000000",
|
||||||
|
fps = 144,
|
||||||
|
icons = {
|
||||||
|
DEBUG = "",
|
||||||
|
ERROR = "",
|
||||||
|
INFO = "",
|
||||||
|
TRACE = "✎",
|
||||||
|
WARN = "",
|
||||||
|
},
|
||||||
|
level = 2,
|
||||||
|
minimum_width = 50,
|
||||||
|
render = "default",
|
||||||
|
stages = "fade_in_slide_out",
|
||||||
|
timeout = 3000,
|
||||||
|
top_down = true,
|
||||||
|
},
|
||||||
|
}
|
||||||
1
lua/plugins/nui.lua
Normal file
1
lua/plugins/nui.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return { "MunifTanjim/nui.nvim" }
|
||||||
26
lua/plugins/nvim-autopairs.lua
Normal file
26
lua/plugins/nvim-autopairs.lua
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
return {
|
||||||
|
"windwp/nvim-autopairs",
|
||||||
|
event = "InsertEnter",
|
||||||
|
config = true,
|
||||||
|
opts = {
|
||||||
|
enabled = function(bufnr)
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
disable_filetype = { "TelescopePrompt", "spectre_panel" },
|
||||||
|
disable_in_macro = true, -- disable when recording or executing a macro
|
||||||
|
disable_in_visualblock = false, -- disable when insert after visual block mode
|
||||||
|
disable_in_replace_mode = true,
|
||||||
|
ignored_next_char = [=[[%w%%%'%[%"%.%`%$]]=],
|
||||||
|
enable_moveright = true,
|
||||||
|
enable_afterquote = true, -- add bracket pairs after quote
|
||||||
|
enable_check_bracket_line = true, --- check bracket in same line
|
||||||
|
enable_bracket_in_quote = true, --
|
||||||
|
enable_abbr = false, -- trigger abbreviation
|
||||||
|
break_undo = true, -- switch for basic rule break undo sequence
|
||||||
|
check_ts = false,
|
||||||
|
map_cr = true,
|
||||||
|
map_bs = true, -- map the <BS> key
|
||||||
|
map_c_h = false, -- Map the <C-h> key to delete a pair
|
||||||
|
map_c_w = false, -- map <c-w> to delete a pair if possible
|
||||||
|
},
|
||||||
|
}
|
||||||
263
lua/plugins/nvim-cmp.lua
Normal file
263
lua/plugins/nvim-cmp.lua
Normal file
@@ -0,0 +1,263 @@
|
|||||||
|
return {
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
dependencies = {
|
||||||
|
"saadparwaiz1/cmp_luasnip",
|
||||||
|
"hrsh7th/cmp-buffer",
|
||||||
|
"hrsh7th/cmp-cmdline",
|
||||||
|
"hrsh7th/cmp-nvim-lsp-signature-help",
|
||||||
|
"hrsh7th/cmp-nvim-lsp-document-symbol",
|
||||||
|
-- "hrsh7th/cmp-nvim-lsp",
|
||||||
|
-- "hrsh7th/cmp-path",
|
||||||
|
"rafamadriz/friendly-snippets",
|
||||||
|
"Jezda1337/nvim-html-css",
|
||||||
|
"https://codeberg.org/FelipeLema/cmp-async-path",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
-- Setup nvim-cmp.
|
||||||
|
local cmp = require("cmp")
|
||||||
|
local lspkind = require("lspkind")
|
||||||
|
-- luasnip setup
|
||||||
|
local luasnip = require("luasnip")
|
||||||
|
|
||||||
|
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
|
||||||
|
|
||||||
|
local has_words_before = function()
|
||||||
|
if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||||
|
return col ~= 0 and vim.api.nvim_buf_get_text(0, line - 1, 0, line - 1, col, {})[1]:match("^%s*$") == nil
|
||||||
|
end
|
||||||
|
require("luasnip.loaders.from_vscode").lazy_load()
|
||||||
|
|
||||||
|
lspkind.init({ symbol_map = { Copilot = "" } })
|
||||||
|
|
||||||
|
cmp.setup.cmdline("/", {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = "nvim_lsp_document_symbol" },
|
||||||
|
}, {
|
||||||
|
{ name = "buffer" },
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
cmp.setup.cmdline(":", {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = cmp.config.sources({ { name = "path" } }, {
|
||||||
|
{ name = "cmdline", option = { ignore_cmds = { "Man", "!" } } },
|
||||||
|
}),
|
||||||
|
matching = { disallow_symbol_nonprefix_matching = false },
|
||||||
|
})
|
||||||
|
|
||||||
|
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
|
||||||
|
|
||||||
|
require("cmp").setup({
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
-- vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
|
||||||
|
luasnip.lsp_expand(args.body) -- For `luasnip` users.
|
||||||
|
-- require('snippy').expand_snippet(args.body) -- For `snippy` users.
|
||||||
|
-- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
mapping = {
|
||||||
|
["<C-p>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif luasnip.expand_or_jumpable() then
|
||||||
|
luasnip.expand_or_jump()
|
||||||
|
elseif has_words_before() then
|
||||||
|
cmp.complete()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
["<C-n>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif luasnip.expand_or_jumpable() then
|
||||||
|
luasnip.expand_or_jump()
|
||||||
|
elseif has_words_before() then
|
||||||
|
cmp.complete()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
||||||
|
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||||
|
["<C-Space>"] = cmp.mapping.complete(),
|
||||||
|
["<C-e>"] = cmp.mapping.abort(),
|
||||||
|
["<CR>"] = cmp.mapping.confirm({
|
||||||
|
behavior = cmp.ConfirmBehavior.Replace,
|
||||||
|
select = false,
|
||||||
|
}),
|
||||||
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() and has_words_before() then
|
||||||
|
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
|
||||||
|
elseif luasnip.locally_jumpable(1) then
|
||||||
|
luasnip.jump(1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif luasnip.locally_jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
completion = {
|
||||||
|
-- winhighlight = "Normal:Pmenu,FloatBorder:Pmenu,Search:None",
|
||||||
|
col_offset = 0,
|
||||||
|
side_padding = 0,
|
||||||
|
border = "rounded",
|
||||||
|
borderchars = {
|
||||||
|
"─",
|
||||||
|
"│",
|
||||||
|
"─",
|
||||||
|
"│",
|
||||||
|
"╭",
|
||||||
|
"╮",
|
||||||
|
"╯",
|
||||||
|
"╰",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
documentation = {
|
||||||
|
border = "rounded",
|
||||||
|
borderchars = {
|
||||||
|
"─",
|
||||||
|
"│",
|
||||||
|
"─",
|
||||||
|
"│",
|
||||||
|
"╭",
|
||||||
|
"╮",
|
||||||
|
"╯",
|
||||||
|
"╰",
|
||||||
|
},
|
||||||
|
-- padding = 15,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
formatting = {
|
||||||
|
-- options: 'text', 'text_symbol', 'symbol_text', 'symbol'
|
||||||
|
-- mode = 'symbol_text',
|
||||||
|
fields = { "kind", "abbr", "menu" },
|
||||||
|
expandable_indicator = true,
|
||||||
|
format = function(entry, vim_item)
|
||||||
|
local kind = require("lspkind").cmp_format({
|
||||||
|
mode = "symbol_text",
|
||||||
|
-- mode = "symbol",
|
||||||
|
maxwidth = 75,
|
||||||
|
symbol_map = {
|
||||||
|
Copilot = " ",
|
||||||
|
Text = " ",
|
||||||
|
Method = " ",
|
||||||
|
Function = " ",
|
||||||
|
Constructor = " ",
|
||||||
|
Field = " ",
|
||||||
|
Variable = " ",
|
||||||
|
Class = " ",
|
||||||
|
Interface = " ",
|
||||||
|
Module = " ",
|
||||||
|
Property = " ",
|
||||||
|
Unit = " ",
|
||||||
|
Value = " ",
|
||||||
|
Enum = " ",
|
||||||
|
Keyword = " ",
|
||||||
|
Snippet = " ",
|
||||||
|
Color = " ",
|
||||||
|
File = " ",
|
||||||
|
Reference = " ",
|
||||||
|
Folder = " ",
|
||||||
|
EnumMember = " ",
|
||||||
|
Constant = " ",
|
||||||
|
Struct = " ",
|
||||||
|
Event = " ",
|
||||||
|
Operator = " ",
|
||||||
|
TypeParameter = " ",
|
||||||
|
},
|
||||||
|
})(entry, vim_item)
|
||||||
|
local strings = vim.split(kind.kind, "%s", { trimempty = true })
|
||||||
|
kind.kind = " " .. strings[1] .. " "
|
||||||
|
kind.menu = " (" .. strings[2] .. ")"
|
||||||
|
|
||||||
|
return kind
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = "nvim_lsp_signature_help", group_index = 0 },
|
||||||
|
{ name = "lazydev", group_index = 0 },
|
||||||
|
{ name = "nvim_lsp", group_index = 1 },
|
||||||
|
{ name = "copilot", group_index = 1 },
|
||||||
|
{ name = "codecompanion", group_index = 2 },
|
||||||
|
{ name = "async_path", group_index = 2 },
|
||||||
|
-- { name = "path", group_index = 2 },
|
||||||
|
-- { name = "cmdline", option = { ignore_cmds = { "Man", "!" } } },
|
||||||
|
{ name = "nvim_lsp_document_symbol", group_index = 2 },
|
||||||
|
{ name = "luasnip", group_index = 2 }, -- For luasnip users.
|
||||||
|
{ name = "render-markdown", group_index = 2 },
|
||||||
|
{
|
||||||
|
name = "html-css",
|
||||||
|
group_indx = 2,
|
||||||
|
option = {
|
||||||
|
enable_on = { "html", "jsx", "tsx", "typescript", "typescriptreact" }, -- html is enabled by default
|
||||||
|
notify = false,
|
||||||
|
documentation = {
|
||||||
|
auto_show = true, -- show documentation on select
|
||||||
|
},
|
||||||
|
-- add any external scss like one below
|
||||||
|
style_sheets = {
|
||||||
|
"https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css",
|
||||||
|
"https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "buffer",
|
||||||
|
option = {
|
||||||
|
get_bufnrs = function()
|
||||||
|
local bufs = {}
|
||||||
|
for _, win in ipairs(vim.api.nvim_list_wins()) do
|
||||||
|
bufs[vim.api.nvim_win_get_buf(win)] = true
|
||||||
|
end
|
||||||
|
return vim.tbl_keys(bufs)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- { name = 'ultisnips' }, -- For ultisnips users.
|
||||||
|
-- { name = 'snippy' }, -- For snippy users.
|
||||||
|
}, { { name = "buffer" } }),
|
||||||
|
sorting = {
|
||||||
|
priority_weight = 2,
|
||||||
|
comparators = {
|
||||||
|
require("copilot_cmp.comparators").prioritize,
|
||||||
|
cmp.config.compare.offset,
|
||||||
|
cmp.config.compare.exact,
|
||||||
|
require("copilot_cmp.comparators").score,
|
||||||
|
require("copilot_cmp.comparators").recently_used,
|
||||||
|
cmp.config.compare.locality,
|
||||||
|
require("copilot_cmp.comparators").kind,
|
||||||
|
require("copilot_cmp.comparators").sort_text,
|
||||||
|
require("copilot_cmp.comparators").length,
|
||||||
|
require("copilot_cmp.comparators").order,
|
||||||
|
|
||||||
|
-- Below is the default comparitor list and order for nvim-cmp
|
||||||
|
cmp.config.compare.offset,
|
||||||
|
-- cmp.config.compare.scopes, --this is commented in nvim-cmp too
|
||||||
|
cmp.config.compare.exact,
|
||||||
|
cmp.config.compare.score,
|
||||||
|
cmp.config.compare.recently_used,
|
||||||
|
cmp.config.compare.locality,
|
||||||
|
cmp.config.compare.kind,
|
||||||
|
cmp.config.compare.sort_text,
|
||||||
|
cmp.config.compare.length,
|
||||||
|
cmp.config.compare.order,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
6
lua/plugins/nvim-colorizer.lua
Normal file
6
lua/plugins/nvim-colorizer.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
"norcalli/nvim-colorizer.lua",
|
||||||
|
config = function()
|
||||||
|
require("colorizer").setup()
|
||||||
|
end,
|
||||||
|
}
|
||||||
34
lua/plugins/nvim-lint.lua
Normal file
34
lua/plugins/nvim-lint.lua
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
return {
|
||||||
|
"mfussenegger/nvim-lint",
|
||||||
|
config = function()
|
||||||
|
local lint = require("lint")
|
||||||
|
lint.linters_by_ft = {
|
||||||
|
markdown = { "markdownlint" },
|
||||||
|
lua = { "luacheck" },
|
||||||
|
py = { "flake8", "pylint", "pydocstyle", "pycodestyle", "mypy" },
|
||||||
|
sh = { "shellcheck" },
|
||||||
|
json = { "jsonlint" },
|
||||||
|
yaml = { "yamllint" },
|
||||||
|
vim = { "vint" },
|
||||||
|
go = { "golangcilint" },
|
||||||
|
}
|
||||||
|
local shellcheck = require("lint").linters.shellcheck
|
||||||
|
shellcheck.args = {
|
||||||
|
"-s",
|
||||||
|
"bash",
|
||||||
|
"-o",
|
||||||
|
"all",
|
||||||
|
"-e",
|
||||||
|
"2250",
|
||||||
|
}
|
||||||
|
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
|
||||||
|
group = lint_augroup,
|
||||||
|
callback = function()
|
||||||
|
lint.try_lint()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
event = { "BufReadPre", "BufNewFile" },
|
||||||
|
}
|
||||||
11
lua/plugins/nvim-tree.lua
Normal file
11
lua/plugins/nvim-tree.lua
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
return {
|
||||||
|
"nvim-tree/nvim-tree.lua",
|
||||||
|
version = "*",
|
||||||
|
lazy = false,
|
||||||
|
dependencies = {
|
||||||
|
"nvim-tree/nvim-web-devicons",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("nvim-tree").setup({})
|
||||||
|
end,
|
||||||
|
}
|
||||||
1
lua/plugins/nvim-treesitter-context.lua
Normal file
1
lua/plugins/nvim-treesitter-context.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return { "nvim-treesitter/nvim-treesitter-context" }
|
||||||
102
lua/plugins/obsidian.lua
Normal file
102
lua/plugins/obsidian.lua
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
vim.notify = require("notify")
|
||||||
|
return {
|
||||||
|
"epwalsh/obsidian.nvim",
|
||||||
|
version = "*", -- recommended, use latest release instead of latest commit
|
||||||
|
lazy = true,
|
||||||
|
ft = "markdown",
|
||||||
|
-- Replace the above line with this if you only want to load obsidian.nvim for markdown files in your vault:
|
||||||
|
-- event = {
|
||||||
|
-- -- If you want to use the home shortcut '~' here you need to call 'vim.fn.expand'.
|
||||||
|
-- -- E.g. "BufReadPre " .. vim.fn.expand "~" .. "/my-vault/*.md"
|
||||||
|
-- -- refer to `:h file-pattern` for more examples
|
||||||
|
-- "BufReadPre path/to/my-vault/*.md",
|
||||||
|
-- "BufNewFile path/to/my-vault/*.md",
|
||||||
|
-- },
|
||||||
|
dependencies = {
|
||||||
|
-- Required.
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
|
||||||
|
-- see below for full list of optional dependencies 👇
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
workspaces = {
|
||||||
|
{
|
||||||
|
name = "vault",
|
||||||
|
path = "~/S/obsidian/Vault",
|
||||||
|
},
|
||||||
|
-- {
|
||||||
|
-- name = "work",
|
||||||
|
-- path = "~/vaults/work",
|
||||||
|
-- },
|
||||||
|
},
|
||||||
|
completion = {
|
||||||
|
-- Set to false to disable completion.
|
||||||
|
nvim_cmp = true,
|
||||||
|
-- Trigger completion at 2 chars.
|
||||||
|
min_chars = 2,
|
||||||
|
},
|
||||||
|
-- Optional, configure additional syntax highlighting / extmarks.
|
||||||
|
-- This requires you have `conceallevel` set to 1 or 2. See `:help conceallevel` for more details.
|
||||||
|
ui = {
|
||||||
|
enable = true, -- set to false to disable all additional syntax features
|
||||||
|
update_debounce = 200, -- update delay after a text change (in milliseconds)
|
||||||
|
max_file_length = 5000, -- disable UI features for files with more than this many lines
|
||||||
|
-- Define how various check-boxes are displayed
|
||||||
|
checkboxes = {
|
||||||
|
-- NOTE: the 'char' value has to be a single character, and the highlight groups are defined below.
|
||||||
|
[" "] = { char = "", hl_group = "ObsidianTodo" },
|
||||||
|
["x"] = { char = "", hl_group = "ObsidianDone" },
|
||||||
|
[">"] = { char = "", hl_group = "ObsidianRightArrow" },
|
||||||
|
["~"] = { char = "", hl_group = "ObsidianTilde" },
|
||||||
|
["!"] = { char = "", hl_group = "ObsidianImportant" },
|
||||||
|
-- Replace the above with this if you don't have a patched font:
|
||||||
|
-- [" "] = { char = "☐", hl_group = "ObsidianTodo" },
|
||||||
|
-- ["x"] = { char = "✔", hl_group = "ObsidianDone" },
|
||||||
|
|
||||||
|
-- You can also add more custom ones...
|
||||||
|
},
|
||||||
|
},
|
||||||
|
attachments = {
|
||||||
|
-- The default folder to place images in via `:ObsidianPasteImg`.
|
||||||
|
-- If this is a relative path it will be interpreted as relative to the vault root.
|
||||||
|
-- You can always override this per image by passing a full path to the command instead of just a filename.
|
||||||
|
img_folder = "screenshots", -- This is the default
|
||||||
|
|
||||||
|
-- Optional, customize the default name or prefix when pasting images via `:ObsidianPasteImg`.
|
||||||
|
---@return string
|
||||||
|
img_name_func = function()
|
||||||
|
-- Prefix image names with timestamp.
|
||||||
|
return string.format("%s-", os.time())
|
||||||
|
end,
|
||||||
|
|
||||||
|
-- A function that determines the text to insert in the note when pasting an image.
|
||||||
|
-- It takes two arguments, the `obsidian.Client` and an `obsidian.Path` to the image file.
|
||||||
|
-- This is the default implementation.
|
||||||
|
---@param client obsidian.Client
|
||||||
|
---@param path obsidian.Path the absolute path to the image file
|
||||||
|
---@return string
|
||||||
|
img_text_func = function(client, path)
|
||||||
|
path = client:vault_relative_path(path) or path
|
||||||
|
return string.format("", path.name, path)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
-- Optional, by default when you use `:ObsidianFollowLink` on a link to an external
|
||||||
|
-- URL it will be ignored but you can customize this behavior here.
|
||||||
|
---@param url string
|
||||||
|
follow_url_func = function(url)
|
||||||
|
-- Open the URL in the default web browser.
|
||||||
|
vim.fn.jobstart({ "open", url }) -- Mac OS
|
||||||
|
-- vim.fn.jobstart({"xdg-open", url}) -- linux
|
||||||
|
-- vim.cmd(':silent exec "!start ' .. url .. '"') -- Windows
|
||||||
|
-- vim.ui.open(url) -- need Neovim 0.10.0+
|
||||||
|
end,
|
||||||
|
-- Optional, by default when you use `:ObsidianFollowLink` on a link to an image
|
||||||
|
-- file it will be ignored but you can customize this behavior here.
|
||||||
|
---@param img string
|
||||||
|
follow_img_func = function(url)
|
||||||
|
-- vim.fn.jobstart({ "qlmanage", "-p", img }) -- Mac OS quick look preview
|
||||||
|
vim.fn.jobstart({ "xdg-open", url }) -- linux
|
||||||
|
-- vim.cmd(':silent exec "!start ' .. url .. '"') -- Windows
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
52
lua/plugins/odis.lua
Normal file
52
lua/plugins/odis.lua
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
return {
|
||||||
|
url = "https://gitea.suda.codes/sudacode/odis",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
opts = {
|
||||||
|
display = {
|
||||||
|
default_mode = "vsplit",
|
||||||
|
picker = true,
|
||||||
|
float = {
|
||||||
|
maxwidth = 80,
|
||||||
|
maxheight = 40,
|
||||||
|
border = "rounded",
|
||||||
|
title = true,
|
||||||
|
style = "minimal",
|
||||||
|
auto_focus = true,
|
||||||
|
anchor = "bottom_right",
|
||||||
|
offset = { row = -2, col = -2 },
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
width = 0.4,
|
||||||
|
height = 0.25,
|
||||||
|
position = "bottom|right",
|
||||||
|
floating = false,
|
||||||
|
border = "none",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
integrations = {
|
||||||
|
treesitter = {
|
||||||
|
enabled = true, -- Enable Treesitter integration
|
||||||
|
highlight = true, -- Enable syntax highlighting
|
||||||
|
langs = { -- Language mapping for different doc types
|
||||||
|
lsp = "markdown",
|
||||||
|
man = "man",
|
||||||
|
help = "vimdoc",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
lsp = { enabled = true },
|
||||||
|
vim = { enabled = true },
|
||||||
|
man = { enabled = true },
|
||||||
|
},
|
||||||
|
priority = { "LSP", "Vim", "Man" },
|
||||||
|
mappings = {
|
||||||
|
close = "<leader>dc",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
3
lua/plugins/plenary.lua
Normal file
3
lua/plugins/plenary.lua
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
return {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
}
|
||||||
25
lua/plugins/presence.lua
Normal file
25
lua/plugins/presence.lua
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
return {
|
||||||
|
"andweeb/presence.nvim",
|
||||||
|
opts = {
|
||||||
|
-- General options
|
||||||
|
auto_update = true, -- Update activity based on autocmd events (if `false`, map or manually execute `:lua package.loaded.presence:update()`)
|
||||||
|
neovim_image_text = "The One True Text Editor", -- Text displayed when hovered over the Neovim image
|
||||||
|
main_image = "neovim", -- Main image display (either "neovim" or "file")
|
||||||
|
-- client_id = "793271441293967371", -- Use your own Discord application client id (not recommended)
|
||||||
|
log_level = nil, -- Log messages at or above this level (one of the following: "debug", "info", "warn", "error")
|
||||||
|
debounce_timeout = 10, -- Number of seconds to debounce events (or calls to `:lua package.loaded.presence:update(<filename>, true)`)
|
||||||
|
enable_line_number = false, -- Displays the current line number instead of the current project
|
||||||
|
blacklist = {}, -- A list of strings or Lua patterns that disable Rich Presence if the current file name, path, or workspace matches
|
||||||
|
buttons = true, -- Configure Rich Presence button(s), either a boolean to enable/disable, a static table (`{{ label = "<label>", url = "<url>" }, ...}`, or a function(buffer: string, repo_url: string|nil): table)
|
||||||
|
file_assets = {}, -- Custom file asset definitions keyed by file names and extensions (see default config at `lua/presence/file_assets.lua` for reference)
|
||||||
|
|
||||||
|
-- Rich Presence text options
|
||||||
|
editing_text = "Editing %s", -- Format string rendered when an editable file is loaded in the buffer (either string or function(filename: string): string)
|
||||||
|
file_explorer_text = "Browsing %s", -- Format string rendered when browsing a file explorer (either string or function(file_explorer_name: string): string)
|
||||||
|
git_commit_text = "Committing changes", -- Format string rendered when committing changes in git (either string or function(filename: string): string)
|
||||||
|
plugin_manager_text = "Managing plugins", -- Format string rendered when managing plugins (either string or function(plugin_manager_name: string): string)
|
||||||
|
reading_text = "Reading %s", -- Format string rendered when a read-only or unmodifiable file is loaded in the buffer (either string or function(filename: string): string)
|
||||||
|
workspace_text = "Working on %s", -- Format string rendered when in a git repository (either string or function(project_name: string|nil, filename: string): string)
|
||||||
|
line_number_text = "Line %s out of %s", -- Format string rendered when `enable_line_number` is set to true (either string or function(line_number: number, line_count: number): string)
|
||||||
|
},
|
||||||
|
}
|
||||||
24
lua/plugins/rainbow-delimeters.lua
Normal file
24
lua/plugins/rainbow-delimeters.lua
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
return {
|
||||||
|
"HiPhish/rainbow-delimiters.nvim",
|
||||||
|
config = function()
|
||||||
|
-- This module contains a number of default definitions
|
||||||
|
local rainbow_delimiters = require("rainbow-delimiters")
|
||||||
|
|
||||||
|
vim.g.rainbow_delimiters = {
|
||||||
|
strategy = {
|
||||||
|
[""] = rainbow_delimiters.strategy["global"],
|
||||||
|
vim = rainbow_delimiters.strategy["local"],
|
||||||
|
},
|
||||||
|
query = { [""] = "rainbow-delimiters", lua = "rainbow-blocks" },
|
||||||
|
highlight = {
|
||||||
|
"RainbowDelimiterRed",
|
||||||
|
"RainbowDelimiterYellow",
|
||||||
|
"RainbowDelimiterBlue",
|
||||||
|
"RainbowDelimiterOrange",
|
||||||
|
"RainbowDelimiterGreen",
|
||||||
|
"RainbowDelimiterViolet",
|
||||||
|
"RainbowDelimiterCyan",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
||||||
197
lua/plugins/render-markdown.lua
Normal file
197
lua/plugins/render-markdown.lua
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
return {
|
||||||
|
"MeanderingProgrammer/render-markdown.nvim",
|
||||||
|
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.nvim" }, -- if you use the mini.nvim suite
|
||||||
|
ft = { "markdown", "codecompanion", "lsp" },
|
||||||
|
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins
|
||||||
|
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
|
||||||
|
---@module 'render-markdown'
|
||||||
|
---@type render.md.UserConfig
|
||||||
|
opts = {
|
||||||
|
injections = {
|
||||||
|
gitcommit = {
|
||||||
|
enabled = true,
|
||||||
|
query = [[
|
||||||
|
((message) @injection.content
|
||||||
|
(#set! injection.combined)
|
||||||
|
(#set! injection.include-children)
|
||||||
|
(#set! injection.language "markdown"))
|
||||||
|
]],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
heading = {
|
||||||
|
enabled = true,
|
||||||
|
render_modes = false,
|
||||||
|
sign = true,
|
||||||
|
icons = { " ", " ", " ", " ", " ", " " },
|
||||||
|
position = "overlay",
|
||||||
|
signs = { " " },
|
||||||
|
width = "full",
|
||||||
|
left_margin = 0,
|
||||||
|
left_pad = 0,
|
||||||
|
right_pad = 0,
|
||||||
|
min_width = 0,
|
||||||
|
border = false,
|
||||||
|
border_virtual = false,
|
||||||
|
border_prefix = false,
|
||||||
|
-- above = "▄",
|
||||||
|
-- below = "▀",
|
||||||
|
backgrounds = {
|
||||||
|
"RenderMarkdownH1Bg",
|
||||||
|
"RenderMarkdownH2Bg",
|
||||||
|
"RenderMarkdownH3Bg",
|
||||||
|
"RenderMarkdownH4Bg",
|
||||||
|
"RenderMarkdownH5Bg",
|
||||||
|
"RenderMarkdownH6Bg",
|
||||||
|
},
|
||||||
|
foregrounds = {
|
||||||
|
"RenderMarkdownH1",
|
||||||
|
"RenderMarkdownH2",
|
||||||
|
"RenderMarkdownH3",
|
||||||
|
"RenderMarkdownH4",
|
||||||
|
"RenderMarkdownH5",
|
||||||
|
"RenderMarkdownH6",
|
||||||
|
},
|
||||||
|
custom = {},
|
||||||
|
},
|
||||||
|
code = {
|
||||||
|
enabled = true,
|
||||||
|
render_modes = false,
|
||||||
|
sign = true,
|
||||||
|
style = "full",
|
||||||
|
position = "left",
|
||||||
|
language_pad = 0,
|
||||||
|
language_name = true,
|
||||||
|
disable_background = { "diff" },
|
||||||
|
width = "full",
|
||||||
|
left_margin = 0,
|
||||||
|
left_pad = 0,
|
||||||
|
right_pad = 0,
|
||||||
|
min_width = 0,
|
||||||
|
border = "thin",
|
||||||
|
above = "▄",
|
||||||
|
below = "▀",
|
||||||
|
highlight = "RenderMarkdownCode",
|
||||||
|
highlight_language = nil,
|
||||||
|
inline_pad = 0,
|
||||||
|
highlight_inline = "RenderMarkdownCodeInline",
|
||||||
|
},
|
||||||
|
bullet = {
|
||||||
|
enabled = true,
|
||||||
|
render_modes = false,
|
||||||
|
icons = { "●", "○", "◆", "◇" },
|
||||||
|
ordered_icons = function(ctx)
|
||||||
|
local value = vim.trim(ctx.value)
|
||||||
|
local index = tonumber(value:sub(1, #value - 1))
|
||||||
|
return string.format("%d.", index > 1 and index or ctx.index)
|
||||||
|
end,
|
||||||
|
left_pad = 0,
|
||||||
|
right_pad = 0,
|
||||||
|
highlight = "RenderMarkdownBullet",
|
||||||
|
},
|
||||||
|
callout = {
|
||||||
|
note = { raw = "[!NOTE]", rendered = " Note", highlight = "RenderMarkdownInfo" },
|
||||||
|
tip = { raw = "[!TIP]", rendered = " Tip", highlight = "RenderMarkdownSuccess" },
|
||||||
|
important = { raw = "[!IMPORTANT]", rendered = " Important", highlight = "RenderMarkdownHint" },
|
||||||
|
warning = { raw = "[!WARNING]", rendered = " Warning", highlight = "RenderMarkdownWarn" },
|
||||||
|
caution = { raw = "[!CAUTION]", rendered = " Caution", highlight = "RenderMarkdownError" },
|
||||||
|
abstract = { raw = "[!ABSTRACT]", rendered = " Abstract", highlight = "RenderMarkdownInfo" },
|
||||||
|
summary = { raw = "[!SUMMARY]", rendered = " Summary", highlight = "RenderMarkdownInfo" },
|
||||||
|
tldr = { raw = "[!TLDR]", rendered = " Tldr", highlight = "RenderMarkdownInfo" },
|
||||||
|
info = { raw = "[!INFO]", rendered = " Info", highlight = "RenderMarkdownInfo" },
|
||||||
|
todo = { raw = "[!TODO]", rendered = " Todo", highlight = "RenderMarkdownInfo" },
|
||||||
|
hint = { raw = "[!HINT]", rendered = " Hint", highlight = "RenderMarkdownSuccess" },
|
||||||
|
success = { raw = "[!SUCCESS]", rendered = " Success", highlight = "RenderMarkdownSuccess" },
|
||||||
|
check = { raw = "[!CHECK]", rendered = " Check", highlight = "RenderMarkdownSuccess" },
|
||||||
|
done = { raw = "[!DONE]", rendered = " Done", highlight = "RenderMarkdownSuccess" },
|
||||||
|
question = { raw = "[!QUESTION]", rendered = " Question", highlight = "RenderMarkdownWarn" },
|
||||||
|
help = { raw = "[!HELP]", rendered = " Help", highlight = "RenderMarkdownWarn" },
|
||||||
|
faq = { raw = "[!FAQ]", rendered = " Faq", highlight = "RenderMarkdownWarn" },
|
||||||
|
attention = { raw = "[!ATTENTION]", rendered = " Attention", highlight = "RenderMarkdownWarn" },
|
||||||
|
failure = { raw = "[!FAILURE]", rendered = " Failure", highlight = "RenderMarkdownError" },
|
||||||
|
fail = { raw = "[!FAIL]", rendered = " Fail", highlight = "RenderMarkdownError" },
|
||||||
|
missing = { raw = "[!MISSING]", rendered = " Missing", highlight = "RenderMarkdownError" },
|
||||||
|
danger = { raw = "[!DANGER]", rendered = " Danger", highlight = "RenderMarkdownError" },
|
||||||
|
error = { raw = "[!ERROR]", rendered = " Error", highlight = "RenderMarkdownError" },
|
||||||
|
bug = { raw = "[!BUG]", rendered = " Bug", highlight = "RenderMarkdownError" },
|
||||||
|
example = { raw = "[!EXAMPLE]", rendered = " Example", highlight = "RenderMarkdownHint" },
|
||||||
|
quote = { raw = "[!QUOTE]", rendered = " Quote", highlight = "RenderMarkdownQuote" },
|
||||||
|
cite = { raw = "[!CITE]", rendered = " Cite", highlight = "RenderMarkdownQuote" },
|
||||||
|
},
|
||||||
|
link = {
|
||||||
|
enabled = true,
|
||||||
|
render_modes = false,
|
||||||
|
footnote = {
|
||||||
|
superscript = true,
|
||||||
|
prefix = "",
|
||||||
|
suffix = "",
|
||||||
|
},
|
||||||
|
image = " ",
|
||||||
|
email = " ",
|
||||||
|
hyperlink = " ",
|
||||||
|
highlight = "RenderMarkdownLink",
|
||||||
|
wiki = { icon = " ", highlight = "RenderMarkdownWikiLink" },
|
||||||
|
custom = {
|
||||||
|
web = { pattern = "^http", icon = " " },
|
||||||
|
discord = { pattern = "discord%.com", icon = " " },
|
||||||
|
github = { pattern = "github%.com", icon = " " },
|
||||||
|
gitlab = { pattern = "gitlab%.com", icon = " " },
|
||||||
|
google = { pattern = "google%.com", icon = " " },
|
||||||
|
neovim = { pattern = "neovim%.io", icon = " " },
|
||||||
|
reddit = { pattern = "reddit%.com", icon = " " },
|
||||||
|
stackoverflow = { pattern = "stackoverflow%.com", icon = " " },
|
||||||
|
wikipedia = { pattern = "wikipedia%.org", icon = " " },
|
||||||
|
youtube = { pattern = "youtube%.com", icon = " " },
|
||||||
|
python = { pattern = "%.py$", icon = " " },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
pipe_table = {
|
||||||
|
enabled = true,
|
||||||
|
render_modes = false,
|
||||||
|
preset = "round",
|
||||||
|
style = "full",
|
||||||
|
cell = "padded",
|
||||||
|
padding = 1,
|
||||||
|
min_width = 0,
|
||||||
|
border = {
|
||||||
|
"┌",
|
||||||
|
"┬",
|
||||||
|
"┐",
|
||||||
|
"├",
|
||||||
|
"┼",
|
||||||
|
"┤",
|
||||||
|
"└",
|
||||||
|
"┴",
|
||||||
|
"┘",
|
||||||
|
"│",
|
||||||
|
"─",
|
||||||
|
},
|
||||||
|
alignment_indicator = "━",
|
||||||
|
head = "RenderMarkdownTableHead",
|
||||||
|
row = "RenderMarkdownTableRow",
|
||||||
|
filler = "RenderMarkdownTableFill",
|
||||||
|
},
|
||||||
|
checkbox = {
|
||||||
|
enabled = true,
|
||||||
|
render_modes = false,
|
||||||
|
position = "inline",
|
||||||
|
unchecked = {
|
||||||
|
icon = " ",
|
||||||
|
highlight = "RenderMarkdownUnchecked",
|
||||||
|
scope_highlight = nil,
|
||||||
|
},
|
||||||
|
checked = {
|
||||||
|
icon = " ",
|
||||||
|
highlight = "RenderMarkdownChecked",
|
||||||
|
scope_highlight = nil,
|
||||||
|
},
|
||||||
|
custom = {
|
||||||
|
todo = {
|
||||||
|
raw = "[-]",
|
||||||
|
rendered = " ",
|
||||||
|
highlight = "RenderMarkdownTodo",
|
||||||
|
scope_highlight = nil,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
5
lua/plugins/telescope-glyph.lua
Normal file
5
lua/plugins/telescope-glyph.lua
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
return {
|
||||||
|
"tpope/vim-commentary",
|
||||||
|
"tpope/vim-dotenv",
|
||||||
|
"tpope/vim-surround",
|
||||||
|
}
|
||||||
123
lua/plugins/telescope.lua
Normal file
123
lua/plugins/telescope.lua
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
return {
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
-- "jonarrien/telescope-cmdline.nvim",
|
||||||
|
"nat-418/telescope-color-names.nvim",
|
||||||
|
"nvim-telescope/telescope-file-browser.nvim",
|
||||||
|
"ghassan0/telescope-glyph.nvim",
|
||||||
|
"nvim-telescope/telescope-ui-select.nvim",
|
||||||
|
{
|
||||||
|
"nvim-telescope/telescope-fzf-native.nvim",
|
||||||
|
build = "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release",
|
||||||
|
},
|
||||||
|
"folke/noice.nvim",
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
defaults = {
|
||||||
|
-- Default configuration for telescope goes here:
|
||||||
|
-- config_key = value,
|
||||||
|
layout_strategy = "flex",
|
||||||
|
width = 0.9,
|
||||||
|
wrap_results = true,
|
||||||
|
preview = {
|
||||||
|
border = true,
|
||||||
|
borderchars = {
|
||||||
|
"─",
|
||||||
|
"│",
|
||||||
|
"─",
|
||||||
|
"│",
|
||||||
|
"╭",
|
||||||
|
"╮",
|
||||||
|
"╯",
|
||||||
|
"╰",
|
||||||
|
},
|
||||||
|
title = true,
|
||||||
|
dynamic_preview_title = true,
|
||||||
|
treesitter = true,
|
||||||
|
},
|
||||||
|
mappings = {
|
||||||
|
i = {
|
||||||
|
-- map actions.which_key to <C-h> (default: <C-/>)
|
||||||
|
-- actions.which_key shows the mappings for your picker,
|
||||||
|
-- e.g. git_{create, delete, ...}_branch for the git_branches picker
|
||||||
|
["<C-h>"] = "which_key",
|
||||||
|
["<C-u"] = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
file_ignore_patterns = { "^node_modules/", "^env/", "^__pycache__/" },
|
||||||
|
},
|
||||||
|
pickers = {
|
||||||
|
-- Default configuration for builtin pickers goes here:
|
||||||
|
-- picker_name = {
|
||||||
|
-- picker_config_key = value,
|
||||||
|
-- ...
|
||||||
|
-- }
|
||||||
|
-- Now the picker_config_key will be applied every time you call this
|
||||||
|
-- builtin picker
|
||||||
|
find_files = {
|
||||||
|
-- theme = "dropdown"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
extensions = {
|
||||||
|
fzf = {
|
||||||
|
fuzzy = true, -- false will only do exact matching
|
||||||
|
override_generic_sorter = true, -- override the generic sorter
|
||||||
|
override_file_sorter = true, -- override the file sorter
|
||||||
|
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
|
||||||
|
-- the default case_mode is "smart_case"
|
||||||
|
},
|
||||||
|
glyph = {
|
||||||
|
action = function(glyph)
|
||||||
|
-- argument glyph is a table.
|
||||||
|
-- {name="", value="", category="", description=""}
|
||||||
|
-- vim.fn.setreg("*", glyph.value)
|
||||||
|
-- print([[Press p or "*p to paste this glyph]] .. glyph.value)
|
||||||
|
-- insert glyph when picked
|
||||||
|
vim.api.nvim_put({ glyph.value }, "c", false, true)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
cmdline = {
|
||||||
|
-- Adjust telescope picker size and layout
|
||||||
|
picker = {
|
||||||
|
layout_config = {
|
||||||
|
width = 120,
|
||||||
|
height = 25,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Adjust your mappings
|
||||||
|
mappings = {
|
||||||
|
complete = "<Tab>",
|
||||||
|
run_selection = "<C-CR>",
|
||||||
|
run_input = "<CR>",
|
||||||
|
},
|
||||||
|
-- Triggers any shell command using overseer.nvim (`:!`)
|
||||||
|
overseer = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
file_browser = {
|
||||||
|
theme = "ivy",
|
||||||
|
-- disables netrw and use telescope-file-browser in its place
|
||||||
|
hijack_netrw = true,
|
||||||
|
mappings = {
|
||||||
|
["i"] = {
|
||||||
|
-- your custom insert mode mappings
|
||||||
|
},
|
||||||
|
["n"] = {
|
||||||
|
-- your custom normal mode mappings
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["ui-select"] = {
|
||||||
|
require("telescope.themes").get_dropdown({
|
||||||
|
winblend = 10,
|
||||||
|
width = 0.5,
|
||||||
|
prompt = " ",
|
||||||
|
results_height = 15,
|
||||||
|
previewer = true,
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
85
lua/plugins/toggleterm.lua
Normal file
85
lua/plugins/toggleterm.lua
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
return {
|
||||||
|
"akinsho/toggleterm.nvim",
|
||||||
|
version = "*",
|
||||||
|
opts = {
|
||||||
|
-- size can be a number or function which is passed the current terminal
|
||||||
|
size = function(term)
|
||||||
|
if term.direction == "horizontal" then
|
||||||
|
return 20
|
||||||
|
elseif term.direction == "vertical" then
|
||||||
|
return vim.o.columns * 0.45
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
open_mapping = { [[<c-t>]] }, -- or { [[<c-\>]], [[<c-¥>]] } if you also use a Japanese keyboard.
|
||||||
|
-- on_create = fun(t: Terminal), -- function to run when the terminal is first created
|
||||||
|
-- on_open = fun(t: Terminal), -- function to run when the terminal opens
|
||||||
|
-- on_close = fun(t: Terminal), -- function to run when the terminal closes
|
||||||
|
-- on_stdout = fun(t: Terminal, job: number, data: string[], name: string) -- callback for processing output on stdout
|
||||||
|
-- on_stderr = fun(t: Terminal, job: number, data: string[], name: string) -- callback for processing output on stderr
|
||||||
|
-- on_exit = fun(t: Terminal, job: number, exit_code: number, name: string) -- function to run when terminal process exits
|
||||||
|
hide_numbers = true, -- hide the number column in toggleterm buffers
|
||||||
|
-- shade_filetypes = {},
|
||||||
|
autochdir = false, -- when neovim changes it current directory the terminal will change it's own when next it's opened
|
||||||
|
highlights = {
|
||||||
|
-- highlights which map to a highlight group name and a table of it's values
|
||||||
|
-- NOTE: this is only a subset of values, any group placed here will be set for the terminal window split
|
||||||
|
Normal = {
|
||||||
|
guibg = "#24273A",
|
||||||
|
},
|
||||||
|
NormalFloat = {
|
||||||
|
link = "Normal",
|
||||||
|
},
|
||||||
|
-- FloatBorder = {
|
||||||
|
-- guifg = "<VALUE-HERE>",
|
||||||
|
-- guibg = "<VALUE-HERE>",
|
||||||
|
-- },
|
||||||
|
},
|
||||||
|
shade_terminals = false, -- NOTE: this option takes priority over highlights specified so if you specify Normal highlights you should set this to false
|
||||||
|
-- shading_factor = '-10', -- the percentage by which to lighten dark terminal background, default: -30
|
||||||
|
-- shading_ratio = '-3', -- the ratio of shading factor for light/dark terminal background, default: -3
|
||||||
|
start_in_insert = true,
|
||||||
|
insert_mappings = true, -- whether or not the open mapping applies in insert mode
|
||||||
|
terminal_mappings = true, -- whether or not the open mapping applies in the opened terminals
|
||||||
|
persist_size = false,
|
||||||
|
persist_mode = true, -- if set to true (default) the previous terminal mode will be remembered
|
||||||
|
-- direction = 'vertical' | 'horizontal' | 'tab' | 'float',
|
||||||
|
direction = "float",
|
||||||
|
-- close_on_exit = true, -- close the terminal window when the process exits
|
||||||
|
-- clear_env = false, -- use only environmental variables from `env`, passed to jobstart()
|
||||||
|
-- Change the default shell. Can be a string or a function returning a string
|
||||||
|
shell = vim.o.shell,
|
||||||
|
auto_scroll = true, -- automatically scroll to the bottom on terminal output
|
||||||
|
-- This field is only relevant if direction is set to 'float'
|
||||||
|
float_opts = {
|
||||||
|
-- The border key is *almost* the same as 'nvim_open_win'
|
||||||
|
-- see :h nvim_open_win for details on borders however
|
||||||
|
-- the 'curved' border is a custom border type
|
||||||
|
-- not natively supported but implemented in this plugin.
|
||||||
|
-- border = 'single' | 'double' | 'shadow' | 'curved' | ... other options supported by win open
|
||||||
|
border = "curved",
|
||||||
|
-- like `size`, width, height, row, and col can be a number or function which is passed the current terminal
|
||||||
|
width = function()
|
||||||
|
return vim.o.columns - 35
|
||||||
|
end,
|
||||||
|
-- height = 75,
|
||||||
|
-- row = <value>,
|
||||||
|
-- col = vim.o.columns * 0.8,
|
||||||
|
winblend = 3,
|
||||||
|
zindex = 10,
|
||||||
|
-- title_pos = 'left' | 'center' | 'right', position of the title of the floating window
|
||||||
|
title_pos = "center",
|
||||||
|
},
|
||||||
|
winbar = {
|
||||||
|
enabled = false,
|
||||||
|
name_formatter = function(term) -- term: Terminal
|
||||||
|
return term.name
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
responsiveness = {
|
||||||
|
-- breakpoint in terms of `vim.o.columns` at which terminals will start to stack on top of each other
|
||||||
|
-- instead of next to each other
|
||||||
|
-- default = 0 which means the feature is turned off
|
||||||
|
horizontal_breakpoint = 135,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
48
lua/plugins/treesitter.lua
Normal file
48
lua/plugins/treesitter.lua
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
return {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
build = ":TSUpdate",
|
||||||
|
config = function()
|
||||||
|
local configs = require("nvim-treesitter.configs")
|
||||||
|
|
||||||
|
configs.setup({
|
||||||
|
ensure_installed = {
|
||||||
|
"c",
|
||||||
|
"lua",
|
||||||
|
"vim",
|
||||||
|
"vimdoc",
|
||||||
|
"query",
|
||||||
|
"cpp",
|
||||||
|
"python",
|
||||||
|
"bash",
|
||||||
|
"sql",
|
||||||
|
"yaml",
|
||||||
|
"toml",
|
||||||
|
"dockerfile",
|
||||||
|
"gitcommit",
|
||||||
|
"gitignore",
|
||||||
|
"html",
|
||||||
|
"css",
|
||||||
|
"javascript",
|
||||||
|
"typescript",
|
||||||
|
"rust",
|
||||||
|
"go",
|
||||||
|
"json",
|
||||||
|
"regex",
|
||||||
|
"latex",
|
||||||
|
"comment",
|
||||||
|
"cmake",
|
||||||
|
"graphql",
|
||||||
|
"haskell",
|
||||||
|
"java",
|
||||||
|
"php",
|
||||||
|
"ruby",
|
||||||
|
"vue",
|
||||||
|
"markdown",
|
||||||
|
"markdown_inline",
|
||||||
|
},
|
||||||
|
sync_install = false,
|
||||||
|
highlight = { enable = true },
|
||||||
|
indent = { enable = true },
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
1
lua/plugins/vim-commentary.lua
Normal file
1
lua/plugins/vim-commentary.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return { "tpope/vim-commentary" }
|
||||||
1
lua/plugins/vim-wakatime.lua
Normal file
1
lua/plugins/vim-wakatime.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return { "wakatime/vim-wakatime" }
|
||||||
144
lua/plugins/whichkey.lua
Normal file
144
lua/plugins/whichkey.lua
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
return {
|
||||||
|
"folke/which-key.nvim",
|
||||||
|
opts = {},
|
||||||
|
-- config = function()
|
||||||
|
-- local wk = require("which-key")
|
||||||
|
|
||||||
|
-- wk.add({
|
||||||
|
-- { "<leader>C", group = "CodeCompanion", desc = "CodeCompanion", icon = "" },
|
||||||
|
-- { "<leader>Ca", desc = "CodeCompanion Actions" },
|
||||||
|
-- { "<leader>Cc", desc = "CodeCompanionChat" },
|
||||||
|
-- { "<leader>Cd", desc = "Docstring" },
|
||||||
|
-- { "<leader>Ce", desc = "Explain Code" },
|
||||||
|
-- { "<leader>Ci", desc = "Inline Chat" },
|
||||||
|
-- { "<leader>Cf", desc = "Fix Code" },
|
||||||
|
-- { "<leader>Cl", desc = "Explain LSP Diagnostics" },
|
||||||
|
-- { "<leader>Ct", desc = "Generate Tests" },
|
||||||
|
-- { "<leader>CT", desc = "Toggle CodeCompanionChat" },
|
||||||
|
-- -- { "<leader>Ci", desc = "Edit with Instructions" },
|
||||||
|
-- -- { "<leader>Co", desc = "Optimize Code" },
|
||||||
|
-- -- { "<leader>Cs", desc = "Summarize" },
|
||||||
|
-- { "<leader>K", desc = "Show Docs", icon = "" },
|
||||||
|
-- { "<leader>T", group = "Telescope", icon = "" },
|
||||||
|
-- { "<leader>Tc", desc = "Color Names" },
|
||||||
|
-- { "<leader>Tg", desc = "Glyph" },
|
||||||
|
-- { "<leader>Tn", desc = "Notifications" },
|
||||||
|
-- { "<leader>Tt", desc = "Telescope" },
|
||||||
|
-- { "<leader>a", group = "AnyJump", icon = "" },
|
||||||
|
-- { "<leader>ab", desc = "Back" },
|
||||||
|
-- { "<leader>al", desc = "Last Result" },
|
||||||
|
-- { "<leader>b", group = "Buffers" },
|
||||||
|
-- { "<leader>bb", desc = "Show Buffers" },
|
||||||
|
-- { "<leader>bd", desc = "Delete Buffer" },
|
||||||
|
-- { "<leader>bn", desc = "Next Buffer" },
|
||||||
|
-- { "<leader>bp", desc = "Previous Buffer" },
|
||||||
|
-- { "<leader>c", group = "Code", icon = "" },
|
||||||
|
-- { "<leader>cD", group = "Diagnostic List" },
|
||||||
|
-- { "<leader>cDn", desc = "Next Diagnostic" },
|
||||||
|
-- { "<leader>cDp", desc = "Previous Diagnostic" },
|
||||||
|
-- { "<leader>ca", desc = "Code Action" },
|
||||||
|
-- { "<leader>cd", desc = "Diagnostics" },
|
||||||
|
-- { "<leader>cl", desc = "Set Loclist" },
|
||||||
|
-- { "<leader>cp", desc = "Copilot Panel" },
|
||||||
|
-- { "<leader>d", group = "Debug" },
|
||||||
|
-- { "<leader>dO", desc = "Step Out" },
|
||||||
|
-- { "<leader>dP", group = "Dap-python" },
|
||||||
|
-- { "<leader>dPc", desc = "Test Class" },
|
||||||
|
-- { "<leader>dPm", desc = "Test Method" },
|
||||||
|
-- { "<leader>dPs", desc = "Debug Selection" },
|
||||||
|
-- { "<leader>db", desc = "Toggle Breakpoint" },
|
||||||
|
-- { "<leader>dc", desc = "Continue" },
|
||||||
|
-- { "<leader>df", desc = "Frames" },
|
||||||
|
-- { "<leader>dh", desc = "Hover" },
|
||||||
|
-- { "<leader>di", desc = "Step Into" },
|
||||||
|
-- { "<leader>dl", desc = "Run Last" },
|
||||||
|
-- { "<leader>do", desc = "Step Over" },
|
||||||
|
-- { "<leader>dp", desc = "Preview" },
|
||||||
|
-- { "<leader>dr", desc = "REPL Open" },
|
||||||
|
-- { "<leader>ds", desc = "Scopes" },
|
||||||
|
-- { "<leader>du", group = "Dap UI" },
|
||||||
|
-- { "<leader>duc", desc = "Close" },
|
||||||
|
-- { "<leader>duo", desc = "Open" },
|
||||||
|
-- { "<leader>dut", desc = "Toggle" },
|
||||||
|
-- { "<leader>f", group = "Find File" },
|
||||||
|
-- { "<leader>fb", desc = "File Browser" },
|
||||||
|
-- { "<leader>fc", desc = "File Color" },
|
||||||
|
-- { "<leader>ff", desc = "Find in Current Directory" },
|
||||||
|
-- { "<leader>fg", desc = "Live Grep" },
|
||||||
|
-- { "<leader>fr", desc = "File Recent" },
|
||||||
|
-- { "<leader>g", group = "Git" },
|
||||||
|
-- { "<leader>gP", desc = "Close goto-preview window" },
|
||||||
|
-- { "<leader>gR", desc = "Telescope References" },
|
||||||
|
-- { "<leader>gb", desc = "Blame" },
|
||||||
|
-- { "<leader>gc", desc = "Commit" },
|
||||||
|
-- { "<leader>gf", desc = "Files" },
|
||||||
|
-- { "<leader>gg", desc = "Lazygit" },
|
||||||
|
-- { "<leader>gp", desc = "Peek" },
|
||||||
|
-- { "<leader>gpc", desc = "Close Preview" },
|
||||||
|
-- { "<leader>gpd", desc = "Preview Definition" },
|
||||||
|
-- { "<leader>gpi", desc = "Preview Implementation" },
|
||||||
|
-- { "<leader>h", group = "Help", icon = "" },
|
||||||
|
-- { "<leader>hc", desc = "Commands" },
|
||||||
|
-- { "<leader>hd", group = "Dap", icon = "" },
|
||||||
|
-- { "<leader>hdC", desc = "Configurations" },
|
||||||
|
-- { "<leader>hdb", desc = "Breakpoints" },
|
||||||
|
-- { "<leader>hdc", desc = "Commands" },
|
||||||
|
-- { "<leader>hdf", desc = "Frames" },
|
||||||
|
-- { "<leader>hdv", desc = "Variables" },
|
||||||
|
-- { "<leader>hk", desc = "Keymaps" },
|
||||||
|
-- { "<leader>hs", desc = "Spell Suggest" },
|
||||||
|
-- { "<leader>hv", desc = "Vim Options" },
|
||||||
|
-- { "<leader>i", group = "Insert", icon = "" },
|
||||||
|
-- { "<leader>is", group = "Snippet" },
|
||||||
|
-- { "<leader>isp", desc = "Python File" },
|
||||||
|
-- { "<leader>j", desc = "Any Jump", icon = "" },
|
||||||
|
-- { "<leader>cD", desc = "Diagnostics" },
|
||||||
|
-- { "<leader>cR", desc = "Rename" },
|
||||||
|
-- { "<leader>ca", desc = "Code Actions" },
|
||||||
|
-- { "<leader>cc", group = "Calls" },
|
||||||
|
-- { "<leader>cci", desc = "Incoming" },
|
||||||
|
-- { "<leader>cco", desc = "Outgoing" },
|
||||||
|
-- { "<leader>cd", desc = "Definitions" },
|
||||||
|
-- { "<leader>ch", desc = "Signature Help" },
|
||||||
|
-- { "<leader>ci", desc = "Implementations" },
|
||||||
|
-- { "<leader>cr", desc = "References" },
|
||||||
|
-- { "<leader>cs", desc = "Document Symbols" },
|
||||||
|
-- { "<leader>ct", desc = "Type Definitions" },
|
||||||
|
-- { "<leader>cw", desc = "Workspace Symbols" },
|
||||||
|
-- { "<leader>n", desc = "NvimTree" },
|
||||||
|
-- { "<leader>o", group = "Open", icon = "" },
|
||||||
|
-- { "<leader>oB", desc = "Btop" },
|
||||||
|
-- { "<leader>oC", desc = "Nvim Config" },
|
||||||
|
-- { "<leader>oP", desc = "Ipython (fullscreen)" },
|
||||||
|
-- { "<leader>ob", desc = "File Browser" },
|
||||||
|
-- { "<leader>oc", desc = "CodeCompanionChat" },
|
||||||
|
-- { "<leader>od", desc = "Lazydocker" },
|
||||||
|
-- { "<leader>of", desc = "Floating Terminal" },
|
||||||
|
-- { "<leader>oh", desc = "Horizontal Terminal" },
|
||||||
|
-- { "<leader>op", desc = "Ipython" },
|
||||||
|
-- { "<leader>or", desc = "Ranger" },
|
||||||
|
-- { "<leader>ot", desc = "Vertical Terminal" },
|
||||||
|
-- { "<leader>s", group = "Search" },
|
||||||
|
-- { "<leader>sc", desc = "Clear Highlights" },
|
||||||
|
-- { "<leader>sf", desc = "Files" },
|
||||||
|
-- { "<leader>tG", desc = "Glyph" },
|
||||||
|
-- { "<leader>sg", desc = "Grep" },
|
||||||
|
-- { "<leader>sh", desc = "Command History" },
|
||||||
|
-- { "<leader>sm", desc = "Man Pages" },
|
||||||
|
-- { "<leader>t", group = "Toggle" },
|
||||||
|
-- { "<leader>tP", desc = "Ipython (fullscreen)" },
|
||||||
|
-- { "<leader>tc", desc = "Colorscheme" },
|
||||||
|
-- { "<leader>td", desc = "DBUI" },
|
||||||
|
-- { "<leader>tf", desc = "Floating Terminal" },
|
||||||
|
-- { "<leader>tp", desc = "Ipython" },
|
||||||
|
-- { "<leader>tt", desc = "Split Terminal" },
|
||||||
|
-- { "<leader>w", group = "Workspace" },
|
||||||
|
-- { "<leader>wa", desc = "Add Folder" },
|
||||||
|
-- { "<leader>wl", desc = "List Folders" },
|
||||||
|
-- { "<leader>wr", desc = "Remove Folder" },
|
||||||
|
-- { "<leader>x", group = "Set Executable Bit", desc = "Set Executable Bit" },
|
||||||
|
-- { "<leader>y", desc = "System Yank", icon = "" },
|
||||||
|
-- { "<leader>e", desc = "Edit", icon = "" },
|
||||||
|
-- })
|
||||||
|
-- end,
|
||||||
|
}
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
local g = vim.g
|
|
||||||
local o = vim.o
|
|
||||||
local A = vim.api
|
|
||||||
local l = vim.lsp
|
|
||||||
|
|
||||||
g.mapleader = " "
|
|
||||||
g.maplocalleader = ','
|
|
||||||
g.fzf_command =
|
|
||||||
'fzf --height 90% --width=85% --layout=reverse --preview "bat --color=always {}"'
|
|
||||||
o.completeopt = "menu,menuone,noselect"
|
|
||||||
o.showmode = false
|
|
||||||
o.termguicolors = true
|
|
||||||
o.background = 'dark'
|
|
||||||
o.mouse = 'a'
|
|
||||||
o.syntax = 'on'
|
|
||||||
o.laststatus = 3
|
|
||||||
o.number = true
|
|
||||||
o.relativenumber = true
|
|
||||||
o.colorcolumn = '80'
|
|
||||||
o.textwidth = 80
|
|
||||||
o.shiftwidth = 4
|
|
||||||
o.expandtab = true
|
|
||||||
o.tabstop = 4
|
|
||||||
o.autoindent = true
|
|
||||||
o.ignorecase = true
|
|
||||||
o.smartcase = true
|
|
||||||
o.incsearch = true
|
|
||||||
o.hlsearch = true
|
|
||||||
o.title = true
|
|
||||||
o.splitright = true
|
|
||||||
o.cursorline = true
|
|
||||||
o.scrolloff = 8
|
|
||||||
o.sidescrolloff = 8
|
|
||||||
o.wildmenu = true
|
|
||||||
o.wildignore =
|
|
||||||
'.git,.hg,.svn,CVS,.DS_Store,.idea,.vscode,.vscode-test,node_modules'
|
|
||||||
o.showmatch = true
|
|
||||||
o.list = true
|
|
||||||
o.listchars = 'tab:»·,trail:·,nbsp:·,extends:>,precedes:<'
|
|
||||||
o.encoding = 'utf-8'
|
|
||||||
o.guifont = 'JetBrainsMono Nerd Font 14'
|
|
||||||
o.expandtab = true
|
|
||||||
o.hidden = true
|
|
||||||
o.cmdheight = 1
|
|
||||||
o.updatetime = 300
|
|
||||||
o.timeoutlen = 500
|
|
||||||
o.pumwidth = 35
|
|
||||||
o.foldmethod = 'marker'
|
|
||||||
g.db_ui_use_nerd_fonts = 1
|
|
||||||
|
|
||||||
local border = {
|
|
||||||
{ "╭", "FloatBorder" }, { "─", "FloatBorder" }, { "╮", "FloatBorder" },
|
|
||||||
{ "│", "FloatBorder" }, { "╯", "FloatBorder" }, { "─", "FloatBorder" },
|
|
||||||
{ "╰", "FloatBorder" }, { "│", "FloatBorder" }
|
|
||||||
}
|
|
||||||
|
|
||||||
l.handlers["textDocument/signatureHelp"] =
|
|
||||||
vim.lsp.with(vim.lsp.handlers.signature_help, { border = border })
|
|
||||||
l.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover,
|
|
||||||
{ border = border })
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
local diagnostics_active = true
|
|
||||||
local toggle_diagnostics = function()
|
|
||||||
diagnostics_active = not diagnostics_active
|
|
||||||
if diagnostics_active then
|
|
||||||
vim.diagnostic.show()
|
|
||||||
else
|
|
||||||
vim.diagnostic.hide()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>td', toggle_diagnostics)
|
|
||||||
3
lua/utils/extensions/init.lua
Normal file
3
lua/utils/extensions/init.lua
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
return {
|
||||||
|
require("utils.extensions.telescope"),
|
||||||
|
}
|
||||||
7
lua/utils/extensions/telescope/init.lua
Normal file
7
lua/utils/extensions/telescope/init.lua
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
local ts = require("telescope")
|
||||||
|
ts.load_extension("fzf")
|
||||||
|
ts.load_extension("color_names")
|
||||||
|
ts.load_extension("file_browser")
|
||||||
|
ts.load_extension("glyph")
|
||||||
|
ts.load_extension("ui-select")
|
||||||
|
ts.load_extension("noice")
|
||||||
57
lua/utils/git_paste/init.lua
Normal file
57
lua/utils/git_paste/init.lua
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
--- Fetches the content from the given URL and then pastes the contents below the current line.
|
||||||
|
---@param url string The URL to fetch (expects a Git raw URL).
|
||||||
|
function M.fetch_and_paste(url)
|
||||||
|
if not url or url == "" then
|
||||||
|
vim.notify("git-paste: No URL provided.", vim.log.levels.WARN)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Use curl to fetch the raw file content
|
||||||
|
local result = vim.fn.system({ "curl", "-s", url })
|
||||||
|
|
||||||
|
if vim.v.shell_error ~= 0 then
|
||||||
|
vim.notify("git-paste: Failed to fetch content from URL:\n" .. result, vim.log.levels.ERROR)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Split the result into lines. This creates a table with each line.
|
||||||
|
local lines = vim.split(result, "\n")
|
||||||
|
|
||||||
|
-- Get the current cursor position. This returns a table {line, col}
|
||||||
|
-- Nvim's API for setting lines expects 0-indexed line numbers.
|
||||||
|
local pos = vim.api.nvim_win_get_cursor(0)
|
||||||
|
-- Insert the fetched lines after the current cursor line.
|
||||||
|
-- Since pos[1] is 1-indexed, we use it directly as the insertion index (which is 0-indexed)
|
||||||
|
-- when inserting *after* the current line.
|
||||||
|
local insert_at = pos[1]
|
||||||
|
vim.api.nvim_buf_set_lines(0, insert_at, insert_at, false, lines)
|
||||||
|
|
||||||
|
vim.notify("git-paste: Content pasted successfully", vim.log.levels.INFO)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Prompts the user for a Git raw URL and then pastes the fetched content.
|
||||||
|
function M.git_paste_prompt()
|
||||||
|
vim.ui.input({ prompt = "Git raw URL: " }, function(input)
|
||||||
|
if input then
|
||||||
|
M.fetch_and_paste(input)
|
||||||
|
else
|
||||||
|
vim.notify("git-paste: No URL provided", vim.log.levels.WARN)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Sets up the git-paste module.
|
||||||
|
---
|
||||||
|
--- The module expects an optional configuration table:
|
||||||
|
--- { telescope_key = "<leader>pg" } (or any other keymap you prefer)
|
||||||
|
---
|
||||||
|
---@param opts table|nil
|
||||||
|
function M.setup(opts)
|
||||||
|
opts = opts or {}
|
||||||
|
local telescope_key = opts.telescope_key or "<leader>pg"
|
||||||
|
vim.keymap.set("n", telescope_key, M.git_paste_prompt, { desc = "Git Paste: paste content from git raw URL" })
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
102
lua/utils/hyprland/lsp/init.lua
Normal file
102
lua/utils/hyprland/lsp/init.lua
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
vim.notify = require("notify")
|
||||||
|
|
||||||
|
local client_notifs = {}
|
||||||
|
|
||||||
|
local function get_notif_data(client_id, token)
|
||||||
|
if not client_notifs[client_id] then
|
||||||
|
client_notifs[client_id] = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not client_notifs[client_id][token] then
|
||||||
|
client_notifs[client_id][token] = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
return client_notifs[client_id][token]
|
||||||
|
end
|
||||||
|
|
||||||
|
local spinner_frames = { "⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷" }
|
||||||
|
|
||||||
|
local function update_spinner(client_id, token)
|
||||||
|
local notif_data = get_notif_data(client_id, token)
|
||||||
|
|
||||||
|
if notif_data.spinner then
|
||||||
|
local new_spinner = (notif_data.spinner + 1) % #spinner_frames
|
||||||
|
notif_data.spinner = new_spinner
|
||||||
|
|
||||||
|
notif_data.notification = vim.notify("", nil, {
|
||||||
|
hide_from_history = true,
|
||||||
|
icon = spinner_frames[new_spinner],
|
||||||
|
replace = notif_data.notification,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.defer_fn(function()
|
||||||
|
update_spinner(client_id, token)
|
||||||
|
end, 100)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function format_title(title, client_name)
|
||||||
|
return client_name .. (#title > 0 and ": " .. title or "")
|
||||||
|
end
|
||||||
|
|
||||||
|
local function format_message(message, percentage)
|
||||||
|
return (percentage and percentage .. "%\t" or "") .. (message or "")
|
||||||
|
end
|
||||||
|
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
|
||||||
|
pattern = { "*.hl", "hypr*.conf" },
|
||||||
|
callback = function(event)
|
||||||
|
-- print(string.format("starting hyprls for %s", vim.inspect(event)))
|
||||||
|
vim.lsp.start({
|
||||||
|
name = "hyprlang",
|
||||||
|
cmd = { "hyprls" },
|
||||||
|
root_dir = vim.fn.getcwd(),
|
||||||
|
on_attach = function()
|
||||||
|
vim.notify("Hyprlang LSP attached", "info")
|
||||||
|
end,
|
||||||
|
on_init = function()
|
||||||
|
vim.notify("Hyprlang LSP initialized", "info")
|
||||||
|
end,
|
||||||
|
handlers = {
|
||||||
|
["$/progress"] = function(_, result, ctx)
|
||||||
|
local client_id = ctx.client_id
|
||||||
|
|
||||||
|
local val = result.value
|
||||||
|
|
||||||
|
if not val.kind then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local notif_data = get_notif_data(client_id, result.token)
|
||||||
|
|
||||||
|
if val.kind == "begin" then
|
||||||
|
local message = format_message(val.message, val.percentage)
|
||||||
|
|
||||||
|
notif_data.notification = vim.notify(message, "info", {
|
||||||
|
title = format_title(val.title, vim.lsp.get_client_by_id(client_id).name),
|
||||||
|
icon = spinner_frames[1],
|
||||||
|
timeout = false,
|
||||||
|
hide_from_history = false,
|
||||||
|
})
|
||||||
|
|
||||||
|
notif_data.spinner = 1
|
||||||
|
update_spinner(client_id, result.token)
|
||||||
|
elseif val.kind == "report" and notif_data then
|
||||||
|
notif_data.notification = vim.notify(format_message(val.message, val.percentage), "info", {
|
||||||
|
replace = notif_data.notification,
|
||||||
|
hide_from_history = false,
|
||||||
|
})
|
||||||
|
elseif val.kind == "end" and notif_data then
|
||||||
|
notif_data.notification =
|
||||||
|
vim.notify(val.message and format_message(val.message) or "Complete", "info", {
|
||||||
|
icon = "",
|
||||||
|
replace = notif_data.notification,
|
||||||
|
timeout = 3000,
|
||||||
|
})
|
||||||
|
|
||||||
|
notif_data.spinner = nil
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
12
lua/utils/keymaps/converters/from_table/init.lua
Normal file
12
lua/utils/keymaps/converters/from_table/init.lua
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
local M = {}
|
||||||
|
local map = vim.keymap.set
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
|
||||||
|
function M.set_keybindings(bindings)
|
||||||
|
for _, binding in ipairs(bindings) do
|
||||||
|
map(binding.mode, binding.key, binding.cmd, binding.opts or opts)
|
||||||
|
end
|
||||||
|
return bindings
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
50
lua/utils/keymaps/converters/whichkey/init.lua
Normal file
50
lua/utils/keymaps/converters/whichkey/init.lua
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
local whichkey = require("which-key")
|
||||||
|
vim.notify = require("notify")
|
||||||
|
|
||||||
|
---Helper function to add mappings to which-key
|
||||||
|
---@parm mappings table : List of mappings to add to which-key
|
||||||
|
---@parm group table : Group to add mappings to (optional)
|
||||||
|
---@return nil
|
||||||
|
---@usage addToWhichKey(mappings, group)
|
||||||
|
---@example addToWhichKey({{key = "n", cmd = "next", mode = "n", desc = "Next Line", group = "Navigation"}, {key = "t", group = "example"})
|
||||||
|
function M.addToWhichKey(mappings, group)
|
||||||
|
if group then
|
||||||
|
whichkey.add({ group.key, group = group.group })
|
||||||
|
end
|
||||||
|
if not mappings and not group then
|
||||||
|
vim.notify("Error: Mappings is nil", "error")
|
||||||
|
return
|
||||||
|
elseif not mappings and group then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
for _, mapping in ipairs(mappings) do
|
||||||
|
local wk_mappings = {}
|
||||||
|
if not mapping.key or mapping.key == "" then
|
||||||
|
vim.notify("Error: Key is empty or nil", "error")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mapping.cmd or mapping.cmd == "" then
|
||||||
|
vim.notify("Error: Command is empty or nil for key: " .. mapping.key, "error")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mapping.mode or mapping.mode == "" then
|
||||||
|
vim.notify("Error: Mode is empty or nil for key: " .. mapping.key, "error")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
wk_mappings[1] = mapping.key
|
||||||
|
wk_mappings[2] = mapping.cmd
|
||||||
|
wk_mappings.mode = mapping.mode or "n"
|
||||||
|
wk_mappings.desc = mapping.desc
|
||||||
|
if mapping.group then
|
||||||
|
wk_mappings.group = mapping.group
|
||||||
|
end
|
||||||
|
whichkey.add(wk_mappings)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
4
lua/utils/keymaps/init.lua
Normal file
4
lua/utils/keymaps/init.lua
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
require('utils.keymaps.converters.whichkey'),
|
||||||
|
require('utils.keymaps.converters.from_table'),
|
||||||
|
}
|
||||||
68
lua/utils/telescope_extra/init.lua
Normal file
68
lua/utils/telescope_extra/init.lua
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
local telescope = require("telescope")
|
||||||
|
local telescopeConfig = require("telescope.config")
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.setup()
|
||||||
|
-- Clone the default Telescope configuration
|
||||||
|
local vimgrep_arguments = { unpack(telescopeConfig.values.vimgrep_arguments) }
|
||||||
|
|
||||||
|
-- I want to search in hidden/dot files.
|
||||||
|
table.insert(vimgrep_arguments, "--hidden")
|
||||||
|
-- I don't want to search in the `.git` directory.
|
||||||
|
table.insert(vimgrep_arguments, "--glob")
|
||||||
|
table.insert(vimgrep_arguments, "!**/.git/*")
|
||||||
|
telescope.setup({
|
||||||
|
defaults = {
|
||||||
|
-- `hidden = true` is not supported in text grep commands.
|
||||||
|
vimgrep_arguments = vimgrep_arguments,
|
||||||
|
},
|
||||||
|
pickers = {
|
||||||
|
find_files = {
|
||||||
|
-- `hidden = true` will still show the inside of `.git/` as it's not `.gitignore`d.
|
||||||
|
find_command = { "rg", "--files", "--hidden", "--glob", "!**/.git/*" },
|
||||||
|
mappings = {
|
||||||
|
n = {
|
||||||
|
["cd"] = function(prompt_bufnr)
|
||||||
|
local selection = require("telescope.actions.state").get_selected_entry()
|
||||||
|
local dir = vim.fn.fnamemodify(selection.path, ":p:h")
|
||||||
|
require("telescope.actions").close(prompt_bufnr)
|
||||||
|
-- Depending on what you want put `cd`, `lcd`, `tcd`
|
||||||
|
vim.cmd(string.format("silent lcd %s", dir))
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
preview = {
|
||||||
|
-- show images in telescope using kitty
|
||||||
|
mime_hook = function(filepath, bufnr, opts)
|
||||||
|
local is_image = function(filepath)
|
||||||
|
local image_extensions = { "png", "jpg" } -- Supported image formats
|
||||||
|
local split_path = vim.split(filepath:lower(), ".", { plain = true })
|
||||||
|
local extension = split_path[#split_path]
|
||||||
|
return vim.tbl_contains(image_extensions, extension)
|
||||||
|
end
|
||||||
|
if is_image(filepath) then
|
||||||
|
local term = vim.api.nvim_open_term(bufnr, {})
|
||||||
|
local function send_output(_, data, _)
|
||||||
|
for _, d in ipairs(data) do
|
||||||
|
vim.api.nvim_chan_send(term, d .. "\r\n")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
vim.fn.jobstart({
|
||||||
|
"kitty +icat " .. filepath, -- Terminal image viewer command
|
||||||
|
}, { on_stdout = send_output, stdout_buffered = true, pty = true })
|
||||||
|
else
|
||||||
|
require("telescope.previewers.utils").set_preview_message(
|
||||||
|
bufnr,
|
||||||
|
opts.winid,
|
||||||
|
"Binary cannot be previewed"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
6
lua/utils/terminal/init.lua
Normal file
6
lua/utils/terminal/init.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.term_factory = require("utils.terminal.term_factory").term_factory
|
||||||
|
M.term_toggle = require("utils.terminal.toggle").term_toggle
|
||||||
|
|
||||||
|
return M
|
||||||
12
lua/utils/terminal/term_factory/init.lua
Normal file
12
lua/utils/terminal/term_factory/init.lua
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
local Terminal = require("toggleterm.terminal").Terminal
|
||||||
|
local notify = require("notify")
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.term_factory(cfg)
|
||||||
|
cfg["on_stderr"] = function(_, job, data, name)
|
||||||
|
notify(name .. " encountered an error on job: " .. job .. "\nData: " .. data, "error")
|
||||||
|
end
|
||||||
|
return Terminal:new(cfg)
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
9
lua/utils/terminal/toggle/init.lua
Normal file
9
lua/utils/terminal/toggle/init.lua
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.term_toggle(term)
|
||||||
|
if term then
|
||||||
|
term:toggle()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
15
lua/utils/treesitter/parsers/hyprlang/init.lua
Normal file
15
lua/utils/treesitter/parsers/hyprlang/init.lua
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
|
||||||
|
parser_config.hyprlang = {
|
||||||
|
install_info = {
|
||||||
|
url = "~/github/tree-sitter-hyprlang", -- local path or git repo
|
||||||
|
files = { "src/parser.c" }, -- note that some parsers also require src/scanner.c or src/scanner.cc
|
||||||
|
-- optional entries:
|
||||||
|
branch = "main", -- default branch in case of git repo if different from master
|
||||||
|
generate_requires_npm = false, -- if stand-alone parser without npm dependencies
|
||||||
|
requires_generate_from_grammar = true, -- if folder contains pre-generated src/parser.c
|
||||||
|
},
|
||||||
|
filetype = "conf", -- if filetype does not match the parser name
|
||||||
|
}
|
||||||
|
vim.filetype.add({
|
||||||
|
pattern = { [".*/hypr/.*%.conf"] = "hyprlang" },
|
||||||
|
})
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
require('bufferline').setup {
|
|
||||||
options = {
|
|
||||||
-- numbers = function(opts)
|
|
||||||
-- return string.format("%s", opts.id)
|
|
||||||
-- end,
|
|
||||||
numbers = function(opts)
|
|
||||||
return ""
|
|
||||||
end,
|
|
||||||
-- number_style = "superscript" | "subscript" | "" | { "none", "subscript" }, -- buffer_id at index 1, ordinal at index 2
|
|
||||||
-- number_style = "none",
|
|
||||||
close_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
|
|
||||||
right_mouse_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
|
|
||||||
left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions"
|
|
||||||
middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
|
|
||||||
-- NOTE: this plugin is designed with this icon in mind,
|
|
||||||
-- and so changing this is NOT recommended, this is intended
|
|
||||||
-- as an escape hatch for people who cannot bear it for whatever reason
|
|
||||||
indicator_style = '▎',
|
|
||||||
buffer_close_icon = '',
|
|
||||||
modified_icon = '●',
|
|
||||||
close_icon = '',
|
|
||||||
left_trunc_marker = '',
|
|
||||||
right_trunc_marker = '',
|
|
||||||
--- name_formatter can be used to change the buffer's label in the bufferline.
|
|
||||||
--- Please note some names can/will break the
|
|
||||||
--- bufferline so use this at your discretion knowing that it has
|
|
||||||
--- some limitations that will *NOT* be fixed.
|
|
||||||
name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr"
|
|
||||||
-- remove extension from markdown files for example
|
|
||||||
if buf.name:match('%.md') then
|
|
||||||
return vim.fn.fnamemodify(buf.name, ':t:r')
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
max_name_length = 18,
|
|
||||||
max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
|
|
||||||
tab_size = 18,
|
|
||||||
-- diagnostics = false | "nvim_lsp" | "coc",
|
|
||||||
diagnostics = "nvim_lsp",
|
|
||||||
diagnostics_update_in_insert = false,
|
|
||||||
diagnostics_indicator = function(count, level, diagnostics_dict, context)
|
|
||||||
local s = " "
|
|
||||||
for e, n in pairs(diagnostics_dict) do
|
|
||||||
local sym = e == "error" and " "
|
|
||||||
or e == "hint" and " "
|
|
||||||
or (e == "warning" and " " or "" )
|
|
||||||
s = s .. n .. sym
|
|
||||||
end
|
|
||||||
return s
|
|
||||||
end,
|
|
||||||
custom_filter = function(buf_number, buf_numbers)
|
|
||||||
-- filter out filetypes you don't want to see
|
|
||||||
if vim.bo[buf_number].filetype ~= "<i-dont-want-to-see-this>" then
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
-- filter out by buffer name
|
|
||||||
if vim.fn.bufname(buf_number) ~= "<buffer-name-I-dont-want>" then
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
-- filter out based on arbitrary rules
|
|
||||||
-- e.g. filter out vim wiki buffer from tabline in your work repo
|
|
||||||
if vim.fn.getcwd() == "<work-repo>" and vim.bo[buf_number].filetype ~= "wiki" then
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
-- filter out by it's index number in list (don't show first buffer)
|
|
||||||
if buf_numbers[1] ~= buf_number then
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
-- offsets = {{filetype = "NvimTree", text = "File Explorer" | function , text_align = "left" | "center" | "right"}},
|
|
||||||
-- offsets = text_align = "left" | "center" | "right"}},
|
|
||||||
show_buffer_icons = true,
|
|
||||||
show_buffer_close_icons = true,
|
|
||||||
show_close_icon = false,
|
|
||||||
show_tab_indicators = true,
|
|
||||||
persist_buffer_sort = false, -- whether or not custom sorted buffers should persist
|
|
||||||
-- can also be a table containing 2 custom separators
|
|
||||||
-- [focused and unfocused]. eg: { '|', '|' }
|
|
||||||
-- separator_style = "slant" | "thick" | "thin" | { 'any', 'any' },
|
|
||||||
separator_style = "thick",
|
|
||||||
enforce_regular_tabs = false,
|
|
||||||
always_show_bufferline = true,
|
|
||||||
-- sort_by = 'id' | 'extension' | 'relative_directory' | 'directory' | 'tabs' | function(buffer_a, buffer_b)
|
|
||||||
sort_by = 'id',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
require("catppuccin").setup({
|
|
||||||
flavour = "macchiato", -- latte, frappe, macchiato, mocha
|
|
||||||
background = { -- :h background
|
|
||||||
light = "latte",
|
|
||||||
-- dark = "mocha",
|
|
||||||
dark = "macchiato",
|
|
||||||
},
|
|
||||||
transparent_background = false,
|
|
||||||
show_end_of_buffer = false, -- show the '~' characters after the end of buffers
|
|
||||||
term_colors = false,
|
|
||||||
dim_inactive = {
|
|
||||||
enabled = false,
|
|
||||||
shade = "dark",
|
|
||||||
percentage = 0.15,
|
|
||||||
},
|
|
||||||
no_italic = false, -- Force no italic
|
|
||||||
no_bold = false, -- Force no bold
|
|
||||||
styles = {
|
|
||||||
comments = { "italic" },
|
|
||||||
conditionals = { "italic" },
|
|
||||||
loops = { "bold" },
|
|
||||||
functions = { "bold", "italic" },
|
|
||||||
keywords = { "bold" },
|
|
||||||
strings = { "italic" },
|
|
||||||
variables = { "italic" },
|
|
||||||
numbers = {},
|
|
||||||
booleans = {},
|
|
||||||
properties = {},
|
|
||||||
types = { "bold" },
|
|
||||||
operators = {},
|
|
||||||
},
|
|
||||||
color_overrides = {},
|
|
||||||
custom_highlights = {},
|
|
||||||
integrations = {
|
|
||||||
cmp = true,
|
|
||||||
gitsigns = true,
|
|
||||||
treesitter = true,
|
|
||||||
nvimtree = true,
|
|
||||||
telescope = true,
|
|
||||||
which_key = true,
|
|
||||||
notify = false,
|
|
||||||
mini = false
|
|
||||||
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
|
|
||||||
},
|
|
||||||
native_lsp = {
|
|
||||||
enabled = true,
|
|
||||||
virtual_text = {
|
|
||||||
errors = { "italic" },
|
|
||||||
hints = { "italic" },
|
|
||||||
warnings = { "italic" },
|
|
||||||
information = { "italic" },
|
|
||||||
},
|
|
||||||
underlines = {
|
|
||||||
errors = { "underline" },
|
|
||||||
hints = { "underline" },
|
|
||||||
warnings = { "underline" },
|
|
||||||
information = { "underline" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
require("nvim-treesitter.configs").setup {
|
|
||||||
highlight = {
|
|
||||||
enable = true,
|
|
||||||
additional_vim_regex_highlighting = false
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
local M = {}
|
|
||||||
|
|
||||||
local lsp_util = vim.lsp.util
|
|
||||||
|
|
||||||
function M.code_action_listener()
|
|
||||||
local context = { diagnostics = vim.lsp.diagnostic.get_line_diagnostics() }
|
|
||||||
local params = lsp_util.make_range_params()
|
|
||||||
params.context = context
|
|
||||||
vim.lsp.buf_request(0, 'textDocument/codeAction', params, function(err, _, result)
|
|
||||||
-- do something with result - e.g. check if empty and show some indication such as a sign
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
require("copilot_cmp").setup({
|
|
||||||
suggestion = { enabled = false },
|
|
||||||
panel = { enabled = false }
|
|
||||||
-- method = "getCompletionsCycling",
|
|
||||||
-- formatters = {
|
|
||||||
-- insert_text = require("copilot_cmp.format").remove_existing
|
|
||||||
-- }
|
|
||||||
})
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
local lualine = require('lualine')
|
|
||||||
lualine.setup({
|
|
||||||
options = {
|
|
||||||
icons_enabled = true,
|
|
||||||
theme = cozynight,
|
|
||||||
component_separators = { left = '', right = '' },
|
|
||||||
section_separators = { left = '', right = '' },
|
|
||||||
disabled_filetypes = {},
|
|
||||||
always_divide_middle = true
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_a = { 'mode' },
|
|
||||||
lualine_b = {
|
|
||||||
'branch', 'diff', {
|
|
||||||
'diagnostics',
|
|
||||||
sources = { "nvim_diagnostic" },
|
|
||||||
symbols = {
|
|
||||||
error = ' ',
|
|
||||||
warn = ' ',
|
|
||||||
info = ' ',
|
|
||||||
hint = ' '
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
lualine_c = { 'filename' },
|
|
||||||
lualine_x = { 'copilot', 'encoding', 'fileformat', 'filetype' }, -- I added copilot here
|
|
||||||
lualine_y = { 'progress' },
|
|
||||||
lualine_z = { 'location' }
|
|
||||||
},
|
|
||||||
inactive_sections = {
|
|
||||||
lualine_a = {},
|
|
||||||
lualine_b = {},
|
|
||||||
lualine_c = { 'filename' },
|
|
||||||
lualine_x = { 'location' },
|
|
||||||
lualine_y = {},
|
|
||||||
lualine_z = {}
|
|
||||||
},
|
|
||||||
tabline = {},
|
|
||||||
extensions = {}
|
|
||||||
})
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
let g:dashboard_custom_header = [
|
|
||||||
\ ' ███╗ ██╗ ███████╗ ██████╗ ██╗ ██╗ ██╗ ███╗ ███╗',
|
|
||||||
\ ' ████╗ ██║ ██╔════╝██╔═══██╗ ██║ ██║ ██║ ████╗ ████║',
|
|
||||||
\ ' ██╔██╗ ██║ █████╗ ██║ ██║ ██║ ██║ ██║ ██╔████╔██║',
|
|
||||||
\ ' ██║╚██╗██║ ██╔══╝ ██║ ██║ ╚██╗ ██╔╝ ██║ ██║╚██╔╝██║',
|
|
||||||
\ ' ██║ ╚████║ ███████╗╚██████╔╝ ╚████╔╝ ██║ ██║ ╚═╝ ██║',
|
|
||||||
\ ' ╚═╝ ╚═══╝ ╚══════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝',
|
|
||||||
\]
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
local home = os.getenv('HOME')
|
|
||||||
local db = require('dashboard')
|
|
||||||
-- macos
|
|
||||||
-- db.preview_command = 'cat | lolcat -F 0.3'
|
|
||||||
-- linux
|
|
||||||
-- db.preview_command = 'ueberzug'
|
|
||||||
-- db.preview_file_path = home .. '/.config/nvim/static/neovim.cat'
|
|
||||||
-- db.preview_file_height = 11
|
|
||||||
-- db.preview_file_width = 70
|
|
||||||
vim.cmd('source $HOME/.config/nvim/static/nvim-dashboard.vim')
|
|
||||||
db.custom_center = {
|
|
||||||
{
|
|
||||||
icon = ' ',
|
|
||||||
desc = 'Recently latest session ',
|
|
||||||
shortcut = 'SPC s l',
|
|
||||||
action = 'SessionLoad'
|
|
||||||
}, {
|
|
||||||
icon = ' ',
|
|
||||||
desc = 'Recently opened files ',
|
|
||||||
action = 'Telescope oldfiles',
|
|
||||||
shortcut = 'SPC f h'
|
|
||||||
}, {
|
|
||||||
desc = 'Find File ',
|
|
||||||
icon = ' ',
|
|
||||||
action = 'Telescope find_files find_command=rg,--hidden,--files',
|
|
||||||
shortcut = 'SPC f f'
|
|
||||||
}, {
|
|
||||||
icon = ' ',
|
|
||||||
desc = 'File Browser ',
|
|
||||||
action = 'Telescope file_browser',
|
|
||||||
shortcut = 'SPC f b'
|
|
||||||
}, {
|
|
||||||
icon = ' ',
|
|
||||||
desc = 'Find word ',
|
|
||||||
action = 'Telescope live_grep',
|
|
||||||
shortcut = 'SPC f w'
|
|
||||||
}, {
|
|
||||||
icon = ' ',
|
|
||||||
desc = 'Open Personal dotfiles ',
|
|
||||||
action = ':e ~/.config/nvim/init.vim',
|
|
||||||
shortcut = 'SPC f d'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
require('dashboard').setup {
|
|
||||||
theme = 'doom', -- theme is doom and hyper default is hyper
|
|
||||||
disable_move = false, -- default is false disable move keymap for hyper
|
|
||||||
shortcut_type = 'number', -- shorcut type 'letter' or 'number'
|
|
||||||
change_to_vcs_root = false, -- default is false,for open file in hyper mru. it will change to the root of vcs
|
|
||||||
config = {
|
|
||||||
header = { "NVIM DASHBOARD" }, -- your header
|
|
||||||
center = {
|
|
||||||
{
|
|
||||||
icon = ' ',
|
|
||||||
icon_hl = 'Title',
|
|
||||||
desc = 'Open Recent',
|
|
||||||
desc_hl = 'String',
|
|
||||||
key = '1',
|
|
||||||
keymap = 'SPC f r',
|
|
||||||
key_hl = 'Number',
|
|
||||||
action = 'lua print(1)'
|
|
||||||
}, {
|
|
||||||
icon = ' ',
|
|
||||||
icon_hl = 'Title',
|
|
||||||
desc = 'Find File',
|
|
||||||
desc_hl = 'String',
|
|
||||||
key = '2',
|
|
||||||
key_hl = 'Number',
|
|
||||||
keymap = 'SPC f f',
|
|
||||||
action = 'lua print(2)'
|
|
||||||
}
|
|
||||||
|
|
||||||
-- {
|
|
||||||
-- icon = ' ',
|
|
||||||
-- desc = 'Find Dotfiles',
|
|
||||||
-- key = 'f',
|
|
||||||
-- keymap = 'SPC f d',
|
|
||||||
-- action = 'lua print(3)'
|
|
||||||
-- }
|
|
||||||
},
|
|
||||||
footer = {} -- your footer
|
|
||||||
},
|
|
||||||
hide = {
|
|
||||||
statusline = true, -- hide statusline default is true
|
|
||||||
tabline = true, -- hide the tabline
|
|
||||||
winbar = true -- hide winbar
|
|
||||||
}
|
|
||||||
-- preview = {
|
|
||||||
-- command = "bat", -- preview command
|
|
||||||
-- file_path -- preview file path
|
|
||||||
-- file_height -- preview file height
|
|
||||||
-- file_width -- preview file width
|
|
||||||
-- },
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
-- require('doom-one').setup({
|
|
||||||
-- cursor_coloring = false,
|
|
||||||
-- terminal_colors = false,
|
|
||||||
-- italic_comments = false,
|
|
||||||
-- enable_treesitter = true,
|
|
||||||
-- transparent_background = false,
|
|
||||||
-- pumblend = {
|
|
||||||
-- enable = true,
|
|
||||||
-- transparency_amount = 20,
|
|
||||||
-- },
|
|
||||||
-- plugins_integrations = {
|
|
||||||
-- neorg = true,
|
|
||||||
-- barbar = true,
|
|
||||||
-- bufferline = false,
|
|
||||||
-- gitgutter = false,
|
|
||||||
-- gitsigns = true,
|
|
||||||
-- telescope = false,
|
|
||||||
-- neogit = true,
|
|
||||||
-- nvim_tree = true,
|
|
||||||
-- dashboard = true,
|
|
||||||
-- startify = true,
|
|
||||||
-- whichkey = true,
|
|
||||||
-- indent_blankline = true,
|
|
||||||
-- vim_illuminate = true,
|
|
||||||
-- lspsaga = false,
|
|
||||||
-- },
|
|
||||||
-- })
|
|
||||||
|
|
||||||
|
|
||||||
vim.g.doom_one_cursor_coloring = true
|
|
||||||
-- Set :terminal colors
|
|
||||||
vim.g.doom_one_terminal_colors = true
|
|
||||||
-- Enable italic comments
|
|
||||||
vim.g.doom_one_italic_comments = false
|
|
||||||
-- Enable TS support
|
|
||||||
vim.g.doom_one_enable_treesitter = true
|
|
||||||
-- Color whole diagnostic text or only underline
|
|
||||||
vim.g.doom_one_diagnostics_text_color = true
|
|
||||||
-- Enable transparent background
|
|
||||||
vim.g.doom_one_transparent_background = false
|
|
||||||
|
|
||||||
-- Pumblend transparency
|
|
||||||
vim.g.doom_one_pumblend_enable = false
|
|
||||||
vim.g.doom_one_pumblend_transparency = 20
|
|
||||||
|
|
||||||
-- Plugins integration
|
|
||||||
vim.g.doom_one_plugin_neorg = true
|
|
||||||
vim.g.doom_one_plugin_barbar = false
|
|
||||||
vim.g.doom_one_plugin_telescope = false
|
|
||||||
vim.g.doom_one_plugin_neogit = true
|
|
||||||
vim.g.doom_one_plugin_nvim_tree = true
|
|
||||||
vim.g.doom_one_plugin_dashboard = true
|
|
||||||
vim.g.doom_one_plugin_startify = true
|
|
||||||
vim.g.doom_one_plugin_whichkey = true
|
|
||||||
vim.g.doom_one_plugin_indent_blankline = true
|
|
||||||
vim.g.doom_one_plugin_vim_illuminate = true
|
|
||||||
vim.g.doom_one_plugin_lspsaga = false
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
-- customize dracula color palette
|
|
||||||
vim.g.dracula_colors = {
|
|
||||||
bg = "#282A36",
|
|
||||||
fg = "#F8F8F2",
|
|
||||||
selection = "#44475A",
|
|
||||||
comment = "#6272A4",
|
|
||||||
red = "#FF5555",
|
|
||||||
orange = "#FFB86C",
|
|
||||||
yellow = "#F1FA8C",
|
|
||||||
green = "#50fa7b",
|
|
||||||
purple = "#BD93F9",
|
|
||||||
cyan = "#8BE9FD",
|
|
||||||
pink = "#FF79C6",
|
|
||||||
bright_red = "#FF6E6E",
|
|
||||||
bright_green = "#69FF94",
|
|
||||||
bright_yellow = "#FFFFA5",
|
|
||||||
bright_blue = "#D6ACFF",
|
|
||||||
bright_magenta = "#FF92DF",
|
|
||||||
bright_cyan = "#A4FFFF",
|
|
||||||
bright_white = "#FFFFFF",
|
|
||||||
menu = "#21222C",
|
|
||||||
visual = "#3E4452",
|
|
||||||
gutter_fg = "#4B5263",
|
|
||||||
nontext = "#3B4048",
|
|
||||||
}
|
|
||||||
-- show the '~' characters after the end of buffers
|
|
||||||
vim.g.dracula_show_end_of_buffer = true
|
|
||||||
-- use transparent background
|
|
||||||
vim.g.dracula_transparent_bg = true
|
|
||||||
-- set custom lualine background color
|
|
||||||
vim.g.dracula_lualine_bg_color = "#44475a"
|
|
||||||
-- set italic comment
|
|
||||||
vim.g.dracula_italic_comment = true
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
require"fidget".setup {
|
|
||||||
text = {
|
|
||||||
spinner = "pipe", -- animation shown when tasks are ongoing
|
|
||||||
done = "✔", -- character shown when all tasks are complete
|
|
||||||
commenced = "Started", -- message shown when task starts
|
|
||||||
completed = "Completed", -- message shown when task completes
|
|
||||||
},
|
|
||||||
align = {
|
|
||||||
bottom = true, -- align fidgets along bottom edge of buffer
|
|
||||||
right = true, -- align fidgets along right edge of buffer
|
|
||||||
},
|
|
||||||
timer = {
|
|
||||||
spinner_rate = 125, -- frame rate of spinner animation, in ms
|
|
||||||
fidget_decay = 2000, -- how long to keep around empty fidget, in ms
|
|
||||||
task_decay = 1000, -- how long to keep around completed task, in ms
|
|
||||||
},
|
|
||||||
window = {
|
|
||||||
relative = "win", -- where to anchor, either "win" or "editor"
|
|
||||||
blend = 100, -- &winblend for the window
|
|
||||||
zindex = nil, -- the zindex value for the window
|
|
||||||
},
|
|
||||||
fmt = {
|
|
||||||
leftpad = true, -- right-justify text in fidget box
|
|
||||||
stack_upwards = true, -- list of tasks grows upwards
|
|
||||||
max_width = 0, -- maximum width of the fidget box
|
|
||||||
fidget = -- function to format fidget title
|
|
||||||
function(fidget_name, spinner)
|
|
||||||
return string.format("%s %s", spinner, fidget_name)
|
|
||||||
end,
|
|
||||||
task = -- function to format each task line
|
|
||||||
function(task_name, message, percentage)
|
|
||||||
return string.format(
|
|
||||||
"%s%s [%s]",
|
|
||||||
message,
|
|
||||||
percentage and string.format(" (%s%%)", percentage) or "",
|
|
||||||
task_name
|
|
||||||
)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
-- sources = {
|
|
||||||
-- * = {
|
|
||||||
-- ignore = false,
|
|
||||||
-- },
|
|
||||||
-- },
|
|
||||||
-- debug = {
|
|
||||||
-- logging = false, -- whether to enable logging, for debugging
|
|
||||||
-- strict = false, -- whether to interpret LSP strictly
|
|
||||||
-- },
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
vim.g.gitblame_highlight_group = "Question"
|
|
||||||
vim.g.gitblame_enabled = 0
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
-- Example config in Lua
|
|
||||||
require("github-theme").setup({
|
|
||||||
-- theme_style = "dark",
|
|
||||||
-- function_style = "italic",
|
|
||||||
-- sidebars = {"qf", "vista_kind", "terminal", "packer"},
|
|
||||||
|
|
||||||
-- -- Change the "hint" color to the "orange" color, and make the "error" color bright red
|
|
||||||
-- colors = {hint = "orange", error = "#ff0000"},
|
|
||||||
|
|
||||||
-- -- Overwrite the highlight groups
|
|
||||||
-- overrides = function(c)
|
|
||||||
-- return {
|
|
||||||
-- htmlTag = {fg = c.red, bg = "#282c34", sp = c.hint, style = "underline"},
|
|
||||||
-- DiagnosticHint = {link = "LspDiagnosticsDefaultHint"},
|
|
||||||
-- -- this will remove the highlight groups
|
|
||||||
-- TSField = {},
|
|
||||||
-- }
|
|
||||||
-- end
|
|
||||||
})
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
require('gitsigns').setup {
|
|
||||||
signs = {
|
|
||||||
add = { text = '┃' },
|
|
||||||
change = { text = '┃' },
|
|
||||||
delete = { text = '_' },
|
|
||||||
topdelete = { text = '‾' },
|
|
||||||
changedelete = { text = '~' },
|
|
||||||
untracked = { text = '┆' }
|
|
||||||
},
|
|
||||||
signs_staged = {
|
|
||||||
add = { text = '┃' },
|
|
||||||
change = { text = '┃' },
|
|
||||||
delete = { text = '_' },
|
|
||||||
topdelete = { text = '‾' },
|
|
||||||
changedelete = { text = '~' },
|
|
||||||
untracked = { text = '┆' }
|
|
||||||
},
|
|
||||||
signs_staged_enable = true,
|
|
||||||
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
|
|
||||||
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
|
|
||||||
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
|
|
||||||
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
|
|
||||||
watch_gitdir = { follow_files = true },
|
|
||||||
auto_attach = true,
|
|
||||||
attach_to_untracked = false,
|
|
||||||
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
|
|
||||||
current_line_blame_opts = {
|
|
||||||
virt_text = true,
|
|
||||||
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
|
|
||||||
delay = 1000,
|
|
||||||
ignore_whitespace = false,
|
|
||||||
virt_text_priority = 100
|
|
||||||
},
|
|
||||||
current_line_blame_formatter = '<author>, <author_time:%R> - <summary>',
|
|
||||||
sign_priority = 6,
|
|
||||||
update_debounce = 100,
|
|
||||||
status_formatter = nil, -- Use default
|
|
||||||
max_file_length = 40000, -- Disable if file is longer than this (in lines)
|
|
||||||
preview_config = {
|
|
||||||
-- Options passed to nvim_open_win
|
|
||||||
border = 'single',
|
|
||||||
style = 'minimal',
|
|
||||||
relative = 'cursor',
|
|
||||||
row = 0,
|
|
||||||
col = 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
require('goto-preview').setup {
|
|
||||||
width = 120; -- Width of the floating window
|
|
||||||
height = 20; -- Height of the floating window
|
|
||||||
border = {"╭", "─" ,"╮", "│", "╯", "─", "╰", "│"}; -- Border characters of the floating window
|
|
||||||
-- border = {"┌", "─" ,"┐", "│", "┘", "─", "└", "│"}; -- Border characters of the floating window
|
|
||||||
default_mappings = false; -- Bind default mappings
|
|
||||||
debug = false; -- Print debug information
|
|
||||||
opacity = 25; -- 0-100 opacity level of the floating window where 100 is fully transparent.
|
|
||||||
resizing_mappings = false; -- Binds arrow keys to resizing the floating window.
|
|
||||||
post_open_hook = nil; -- A function taking two arguments, a buffer and a window to be ran as a hook.
|
|
||||||
references = { -- Configure the telescope UI for slowing the references cycling window.
|
|
||||||
-- telescope = telescope.themes.get_dropdown({ hide_preview = false })
|
|
||||||
};
|
|
||||||
-- These two configs can also be passed down to the goto-preview definition and implementation calls for one off "peak" functionality.
|
|
||||||
focus_on_open = true; -- Focus the floating window when opening it.
|
|
||||||
dismiss_on_move = false; -- Dismiss the floating window when moving the cursor.
|
|
||||||
force_close = false, -- passed into vim.api.nvim_win_close's second argument. See :h nvim_win_close
|
|
||||||
bufhidden = "wipe", -- the bufhidden option to set on the floating window. See :h bufhidden
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
-- lspkind.lua
|
|
||||||
local lspkind = require("lspkind")
|
|
||||||
lspkind.init({
|
|
||||||
preset = 'default',
|
|
||||||
symbol_map = {
|
|
||||||
Copilot = "",
|
|
||||||
Function = "",
|
|
||||||
Text = "",
|
|
||||||
Method = "",
|
|
||||||
Operator = "",
|
|
||||||
Keyword = "",
|
|
||||||
Variable = "",
|
|
||||||
Field = "",
|
|
||||||
Class = "",
|
|
||||||
Interface = "",
|
|
||||||
Module = "",
|
|
||||||
Property = "",
|
|
||||||
Unit = "",
|
|
||||||
Value = "",
|
|
||||||
Enum = "",
|
|
||||||
Snippet = "",
|
|
||||||
Color = "",
|
|
||||||
File = "",
|
|
||||||
Reference = "",
|
|
||||||
Folder = "",
|
|
||||||
EnumMember = "",
|
|
||||||
Constant = "",
|
|
||||||
Struct = "",
|
|
||||||
Event = "",
|
|
||||||
TypeParameter = "",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
vim.api.nvim_set_hl(0, "CmpItemKindCopilot", {fg ="#6CC644"})
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
cfg = {
|
|
||||||
debug = false, -- set to true to enable debug logging
|
|
||||||
log_path = vim.fn.stdpath("cache") .. "/lsp_signature.log", -- log dir when debug is on
|
|
||||||
-- default is ~/.cache/nvim/lsp_signature.log
|
|
||||||
verbose = false, -- show debug line number
|
|
||||||
|
|
||||||
bind = true, -- This is mandatory, otherwise border config won't get registered.
|
|
||||||
-- If you want to hook lspsaga or other signature handler, pls set to false
|
|
||||||
doc_lines = 15, -- will show two lines of comment/doc(if there are more than two lines in doc, will be truncated);
|
|
||||||
-- set to 0 if you DO NOT want any API comments be shown
|
|
||||||
-- This setting only take effect in insert mode, it does not affect signature help in normal
|
|
||||||
-- mode, 10 by default
|
|
||||||
|
|
||||||
floating_window = true, -- show hint in a floating window, set to false for virtual text only mode
|
|
||||||
floating_window_above_cur_line = true, -- try to place the floating above the current line when possible Note:
|
|
||||||
-- will set to true when fully tested, set to false will use whichever side has more space
|
|
||||||
-- this setting will be helpful if you do not want the PUM and floating win overlap
|
|
||||||
floating_window_off_x = 0, -- adjust float windows x position.
|
|
||||||
floating_window_off_y = -1, -- adjust float windows y position.
|
|
||||||
fix_pos = true, -- trueset to true, the floating window will not auto-close until finish all parameters
|
|
||||||
hint_enable = false, -- virtual hint enable
|
|
||||||
hint_prefix = " ", -- Panda for parameter
|
|
||||||
hint_scheme = "String",
|
|
||||||
hi_parameter = "LspSignatureActiveParameter", -- how your parameter will be highlight
|
|
||||||
max_height = 15, -- max height of signature floating_window, if content is more than max_height, you can scroll down
|
|
||||||
max_width = 85, -- max_width of signature floating_window, line will be wrapped if exceed max_width
|
|
||||||
handler_opts = {
|
|
||||||
border = "rounded" -- double, rounded, single, shadow, none
|
|
||||||
},
|
|
||||||
always_trigger = false, -- sometime show signature on new line or in middle of parameter can be confusing, set it to false for #58
|
|
||||||
auto_close_after = nil, -- autoclose signature float win after x sec, disabled if nil.
|
|
||||||
extra_trigger_chars = {}, -- Array of extra characters that will trigger signature completion, e.g., {"(", ","}
|
|
||||||
zindex = 200, -- by default it will be on top of all floating windows, set to <= 50 send it to bottom
|
|
||||||
padding = '', -- character to pad on left and right of signature can be ' ', or '|' etc
|
|
||||||
transparency = nil, -- disabled by default, allow floating win transparent value 1~100
|
|
||||||
shadow_blend = 36, -- if you using shadow as border use this set the opacity
|
|
||||||
shadow_guibg = 'Black', -- if you using shadow as border use this set the color e.g. 'Green' or '#121315'
|
|
||||||
timer_interval = 200, -- default timer check interval set to lower value if you want to reduce latency
|
|
||||||
toggle_key = nil -- toggle signature on and off in insert mode, e.g. toggle_key = '<M-x>'
|
|
||||||
}
|
|
||||||
|
|
||||||
-- recommended:
|
|
||||||
require 'lsp_signature'.setup(cfg) -- no need to specify bufnr if you don't use toggle_key
|
|
||||||
|
|
||||||
-- You can also do this inside lsp on_attach
|
|
||||||
-- note: on_attach deprecated
|
|
||||||
-- require'lsp_signature'.on_attach(cfg, bufnr) -- no need to specify bufnr if you don't use toggle_key
|
|
||||||
@@ -1,203 +0,0 @@
|
|||||||
-- local opts = { noremap = true, silent = true }
|
|
||||||
-- vim.api.nvim_set_keymap('n', '<space>e',
|
|
||||||
-- '<cmd>lua vim.diagnostic.open_float()<CR>', opts)
|
|
||||||
-- vim.api.nvim_set_keymap('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>',
|
|
||||||
-- opts)
|
|
||||||
-- vim.api.nvim_set_keymap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>',
|
|
||||||
-- opts)
|
|
||||||
-- vim.api.nvim_set_keymap('n', '<space>q',
|
|
||||||
-- '<cmd>lua vim.diagnostic.setloclist()<CR>', 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
|
|
||||||
-- set in ~/.config/nvim/keybindings.vim
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<C-s>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
|
|
||||||
-- highlighting things under cursor
|
|
||||||
-- if client.resolved_capabilities.document_highlight then
|
|
||||||
-- vim.cmd [[
|
|
||||||
-- hi! LspReferenceRead cterm=bold ctermbg=red guibg=LightYellow
|
|
||||||
-- hi! LspReferenceText cterm=bold ctermbg=red guibg=LightYellow
|
|
||||||
-- hi! LspReferenceWrite cterm=bold ctermbg=red guibg=LightYellow
|
|
||||||
-- augroup lsp_document_highlight
|
|
||||||
-- autocmd! * <buffer>
|
|
||||||
-- autocmd! CursorHold <buffer> lua vim.lsp.buf.document_highlight()
|
|
||||||
-- autocmd! CursorMoved <buffer> lua vim.lsp.buf.clear_references()
|
|
||||||
-- augroup END
|
|
||||||
-- ]]
|
|
||||||
-- end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- vim.cmd [[autocmd! ColorScheme * highlight NormalFloat guibg=#1f2335]]
|
|
||||||
-- vim.cmd [[autocmd! ColorScheme * highlight FloatBorder guifg=white guibg=#1f2335]]
|
|
||||||
|
|
||||||
-- squared corners
|
|
||||||
|
|
||||||
-- local border = {
|
|
||||||
-- {"┌", "FloatBorder"},
|
|
||||||
-- {"─", "FloatBorder"},
|
|
||||||
-- {"┐", "FloatBorder"},
|
|
||||||
-- {"|", "FloatBorder"},
|
|
||||||
-- {"┘", "FloatBorder"},
|
|
||||||
-- {"─", "FloatBorder"},
|
|
||||||
-- {"└", "FloatBorder"},
|
|
||||||
-- {"|", "FloatBorder"},
|
|
||||||
-- }
|
|
||||||
|
|
||||||
-- rounded
|
|
||||||
|
|
||||||
local border = {
|
|
||||||
{ "╭", "FloatBorder" }, { "─", "FloatBorder" }, { "╮", "FloatBorder" },
|
|
||||||
{ "│", "FloatBorder" }, { "╯", "FloatBorder" }, { "─", "FloatBorder" },
|
|
||||||
{ "╰", "FloatBorder" }, { "│", "FloatBorder" }
|
|
||||||
}
|
|
||||||
|
|
||||||
local handlers = {
|
|
||||||
["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover,
|
|
||||||
{ border = border }),
|
|
||||||
["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers
|
|
||||||
.signature_help,
|
|
||||||
{ border = border })
|
|
||||||
}
|
|
||||||
|
|
||||||
-- local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview
|
|
||||||
-- function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...)
|
|
||||||
-- opts = {
|
|
||||||
-- { "border", border },
|
|
||||||
-- }
|
|
||||||
-- opts.border = opts.border or border
|
|
||||||
-- return orig_util_open_floating_preview(contents, syntax, opts, ...)
|
|
||||||
-- end
|
|
||||||
|
|
||||||
local DEFAULT_SETTINGS = {
|
|
||||||
ui = {
|
|
||||||
icons = {
|
|
||||||
-- The list icon to use for installed servers.
|
|
||||||
server_installed = "◍",
|
|
||||||
-- The list icon to use for servers that are pending installation.
|
|
||||||
server_pending = "◍",
|
|
||||||
-- The list icon to use for servers that are not installed.
|
|
||||||
server_uninstalled = "◍"
|
|
||||||
},
|
|
||||||
keymaps = {
|
|
||||||
-- Keymap to expand a server in the UI
|
|
||||||
toggle_server_expand = "<CR>",
|
|
||||||
-- Keymap to install a server
|
|
||||||
install_server = "i",
|
|
||||||
-- Keymap to reinstall/update a server
|
|
||||||
update_server = "u",
|
|
||||||
-- Keymap to update all installed servers
|
|
||||||
update_all_servers = "U",
|
|
||||||
-- Keymap to uninstall a server
|
|
||||||
uninstall_server = "X"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
-- The directory in which to install all servers.
|
|
||||||
-- install_root_dir = "/home/sudacode/.vim/lsp",
|
|
||||||
|
|
||||||
pip = {
|
|
||||||
-- These args will be added to `pip install` calls. Note that setting extra args might impact intended behavior
|
|
||||||
-- and is not recommended.
|
|
||||||
--
|
|
||||||
-- Example: { "--proxy", "https://proxyserver" }
|
|
||||||
install_args = {}
|
|
||||||
},
|
|
||||||
on_attach = on_attach,
|
|
||||||
handlers = handlers,
|
|
||||||
|
|
||||||
-- Controls to which degree logs are written to the log file. It's useful to set this to vim.log.levels.DEBUG when
|
|
||||||
-- debugging issues with server installations.
|
|
||||||
log_level = vim.log.levels.INFO,
|
|
||||||
|
|
||||||
-- Limit for the maximum amount of servers to be installed at the same time. Once this limit is reached, any further
|
|
||||||
-- servers that are requested to be installed will be put in a queue.
|
|
||||||
max_concurrent_installers = 4
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.diagnostic.config({
|
|
||||||
virtual_text = true,
|
|
||||||
signs = true,
|
|
||||||
underline = false,
|
|
||||||
update_in_insert = false,
|
|
||||||
severity_sort = true
|
|
||||||
})
|
|
||||||
|
|
||||||
local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " }
|
|
||||||
for type, icon in pairs(signs) do
|
|
||||||
local hl = "DiagnosticSign" .. type
|
|
||||||
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
|
|
||||||
end
|
|
||||||
|
|
||||||
function PrintDiagnostics(opts, bufnr, line_nr, client_id)
|
|
||||||
bufnr = bufnr or 0
|
|
||||||
line_nr = line_nr or (vim.api.nvim_win_get_cursor(0)[1] - 1)
|
|
||||||
opts = opts or { ['lnum'] = line_nr }
|
|
||||||
|
|
||||||
local line_diagnostics = vim.diagnostic.get(bufnr, opts)
|
|
||||||
if vim.tbl_isempty(line_diagnostics) then return end
|
|
||||||
|
|
||||||
local diagnostic_message = ""
|
|
||||||
for i, diagnostic in ipairs(line_diagnostics) do
|
|
||||||
diagnostic_message = diagnostic_message ..
|
|
||||||
string.format("%d: %s", i,
|
|
||||||
diagnostic.message or "")
|
|
||||||
print(diagnostic_message)
|
|
||||||
if i ~= #line_diagnostics then
|
|
||||||
diagnostic_message = diagnostic_message .. "\n"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
vim.api.nvim_echo({ { diagnostic_message, "Normal" } }, false, {})
|
|
||||||
end
|
|
||||||
|
|
||||||
-- vim.cmd [[ autocmd! CursorHold * lua PrintDiagnostics() ]]
|
|
||||||
|
|
||||||
-- Register a handler that will be called for each installed server when it's ready (i.e. when installation is finished
|
|
||||||
-- or if the server is already installed).
|
|
||||||
|
|
||||||
-- local servers = { 'jedi_language_server', 'bashls', 'vimls', 'yamlls', 'dockerls', 'rust_analyzer', 'clangd', 'ansiblels' }
|
|
||||||
-- for _, lsp in pairs(servers) do
|
|
||||||
-- require('lspconfig')[lsp].setup {
|
|
||||||
-- on_attach = on_attach,
|
|
||||||
-- handlers = handlers,
|
|
||||||
-- flags = {
|
|
||||||
-- -- This will be the default in neovim 0.7+
|
|
||||||
-- debounce_text_changes = 150,
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- end
|
|
||||||
|
|
||||||
-- local plugins_path = vim.fn.stdpath("data") .. "site/autoload/plug.vim"
|
|
||||||
-- local dir_list = vim.fn.glob(plugins_path .. "/*", true, true)
|
|
||||||
-- local library_table = {}
|
|
||||||
-- for _, v in ipairs(dir_list) do
|
|
||||||
-- library_table[v .. "/lua"] = true
|
|
||||||
-- end
|
|
||||||
-- library_table[vim.fn.expand("$VIMRUNTIME/lua")] = true
|
|
||||||
-- library_table[vim.fn.stdpath("config") .. "/lua"] = true
|
|
||||||
-- require('lspconfig').sumneko_lua.setup({
|
|
||||||
-- settings = {
|
|
||||||
-- Lua = {
|
|
||||||
-- diagnostics = { globals = { "vim" } },
|
|
||||||
-- workspace = { library = library_table },
|
|
||||||
-- },
|
|
||||||
-- },
|
|
||||||
-- })
|
|
||||||
|
|
||||||
-- -- require 'lspconfig'.bashls.setup {}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
require('lspfuzzy').setup {
|
|
||||||
methods = 'all', -- either 'all' or a list of LSP methods (see below)
|
|
||||||
jump_one = true, -- jump immediately if there is only one location
|
|
||||||
save_last = false, -- save last location results for the :LspFuzzyLast command
|
|
||||||
callback = nil, -- callback called after jumping to a location
|
|
||||||
fzf_preview = { -- arguments to the FZF '--preview-window' option
|
|
||||||
'right:+{2}-/2' -- preview on the right and centered on entry
|
|
||||||
},
|
|
||||||
fzf_action = { -- FZF actions
|
|
||||||
['ctrl-t'] = 'tab split', -- go to location in a new tab
|
|
||||||
['ctrl-v'] = 'vsplit', -- go to location in a vertical split
|
|
||||||
['ctrl-x'] = 'split', -- go to location in a horizontal split
|
|
||||||
},
|
|
||||||
fzf_modifier = ':~:.', -- format FZF entries, see |filename-modifiers|
|
|
||||||
fzf_trim = false, -- trim FZF entries
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
require("lsp_lines").setup()
|
|
||||||
-- Disable virtual_text since it's redundant due to lsp_lines.
|
|
||||||
vim.diagnostic.config({ virtual_text = false })
|
|
||||||
|
|
||||||
vim.keymap.set("", "<Leader>tl", require("lsp_lines").toggle,
|
|
||||||
{ desc = "Toggle lsp_lines" })
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
require('lualine').setup {
|
|
||||||
options = {
|
|
||||||
icons_enabled = true,
|
|
||||||
theme = 'codedark',
|
|
||||||
-- theme = 'dracula',
|
|
||||||
-- theme = 'horizon',
|
|
||||||
-- theme = 'onedark',
|
|
||||||
component_separators = { left = '', right = '' },
|
|
||||||
section_separators = { left = '', right = ''},
|
|
||||||
disabled_filetypes = {},
|
|
||||||
always_divide_middle = true,
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_a = { 'mode' },
|
|
||||||
lualine_b = { 'branch', 'diff' },
|
|
||||||
lualine_c = { 'filename' },
|
|
||||||
lualine_x = {
|
|
||||||
{
|
|
||||||
'diagnostics',
|
|
||||||
'fileformat',
|
|
||||||
symbols = {
|
|
||||||
unix = '', -- e712
|
|
||||||
dos = '', -- e70f
|
|
||||||
mac = '', -- e711
|
|
||||||
}
|
|
||||||
}, 'encoding', 'fileformat', { 'filetype', colored = true, icon_only = false } },
|
|
||||||
lualine_y = { 'progress' },
|
|
||||||
lualine_z = { 'location' }
|
|
||||||
},
|
|
||||||
inactive_sections = {
|
|
||||||
lualine_a = {},
|
|
||||||
lualine_b = {},
|
|
||||||
lualine_c = {
|
|
||||||
{
|
|
||||||
'filename',
|
|
||||||
file_status = true, -- Displays file status (readonly status, modified status)
|
|
||||||
path = 0, -- 0: Just the filename
|
|
||||||
shorting_target = 40, -- Shortens path to leave 40 spaces in the window
|
|
||||||
symbols = {
|
|
||||||
modified = '[+]', -- Text to show when the file is modified.
|
|
||||||
readonly = '[-]', -- Text to show when the file is non-modifiable or readonly.
|
|
||||||
unnamed = '[No Name]', -- Text to show for unnamed buffers.
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
lualine_x = { 'location' },
|
|
||||||
lualine_y = {},
|
|
||||||
lualine_z = {}
|
|
||||||
},
|
|
||||||
tabline = {},
|
|
||||||
extensions = { 'quickfix', 'fzf', 'nvim-tree', 'symbols-outline', 'fugitive' }
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user