diff options
| author | Hsieh Chin Fan <pham@topo.tw> | 2024-07-21 18:49:31 +0800 |
|---|---|---|
| committer | Hsieh Chin Fan <pham@topo.tw> | 2024-07-21 18:49:31 +0800 |
| commit | 82ed7d4113c474f309ebeb5133873ccf0a2bcda2 (patch) | |
| tree | b55f17044d96cde70e4ea88200b8db15bf61ca00 /vim | |
| parent | 5dc2485ff1530fcff26161a35742043d038c90c4 (diff) | |
Update
Diffstat (limited to 'vim')
| -rw-r--r-- | vim/init/keymaps.vim | 126 | ||||
| -rw-r--r-- | vim/mini.lua | 790 |
2 files changed, 463 insertions, 453 deletions
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim index 15bf356..81ce508 100644 --- a/vim/init/keymaps.vim +++ b/vim/init/keymaps.vim | |||
| @@ -87,9 +87,9 @@ noremap <C-]> :call InCaseCdToLatestDir()<CR> | |||
| 87 | 87 | ||
| 88 | " Switch CWD to root git directory | 88 | " Switch CWD to root git directory |
| 89 | function! CdToGitRepo() | 89 | function! CdToGitRepo() |
| 90 | let l:git_dir = finddir('.git', escape(expand('%:p:h'), ' ') . ';') | 90 | let l:git_dir = finddir('.git', escape(expand('%:p:h'), ' ') . ';') |
| 91 | let l:repo = fnameescape(fnamemodify(l:git_dir, ':h')) | 91 | let l:repo = fnameescape(fnamemodify(l:git_dir, ':h')) |
| 92 | execute "cd" l:repo | 92 | execute "cd" l:repo |
| 93 | endfunction | 93 | endfunction |
| 94 | 94 | ||
| 95 | function! InCaseCdToLatestDir() | 95 | function! InCaseCdToLatestDir() |
| @@ -256,29 +256,29 @@ function! CloseBufferSafely() | |||
| 256 | endif | 256 | endif |
| 257 | endfunction | 257 | endfunction |
| 258 | func! QuitWithCheck() | 258 | func! QuitWithCheck() |
| 259 | if g:quitVimWhenPressingCtrlC | 259 | if g:quitVimWhenPressingCtrlC |
| 260 | silent! quit | 260 | silent! quit |
| 261 | else | 261 | else |
| 262 | echo "Press <leader><leader>gl to allow quit with <C-c>" | 262 | echo "Press <leader><leader>gl to allow quit with <C-c>" |
| 263 | endif | 263 | endif |
| 264 | endfunc | 264 | endfunc |
| 265 | function! Bye() | 265 | function! Bye() |
| 266 | let windows = gettabinfo(tabpagenr())[0]['windows'] | 266 | let windows = gettabinfo(tabpagenr())[0]['windows'] |
| 267 | try | 267 | try |
| 268 | let bufs = gettabinfo(tabpagenr())[0]['variables']['bufs'] | 268 | let bufs = gettabinfo(tabpagenr())[0]['variables']['bufs'] |
| 269 | catch | 269 | catch |
| 270 | let bufs = getbufinfo({'buflisted': 1}) | 270 | let bufs = getbufinfo({'buflisted': 1}) |
| 271 | endtry | 271 | endtry |
| 272 | 272 | ||
| 273 | if len(windows) == 1 && len(bufs) == 1 | 273 | if len(windows) == 1 && len(bufs) == 1 |
| 274 | call QuitWithCheck() | 274 | call QuitWithCheck() |
| 275 | elseif &diff | 275 | elseif &diff |
| 276 | silent call CloseBuffersForDiff() | 276 | silent call CloseBuffersForDiff() |
| 277 | elseif len(windows) >1 | 277 | elseif len(windows) >1 |
| 278 | quit | 278 | quit |
| 279 | else | 279 | else |
| 280 | silent! call CloseBufferSafely() | 280 | silent! call CloseBufferSafely() |
| 281 | endif | 281 | endif |
| 282 | endfunction | 282 | endfunction |
| 283 | nnoremap <silent> <C-c> :call Bye()<CR> | 283 | nnoremap <silent> <C-c> :call Bye()<CR> |
| 284 | 284 | ||
| @@ -291,29 +291,29 @@ function! CloseBuffersForDiff() | |||
| 291 | endfunction | 291 | endfunction |
| 292 | 292 | ||
| 293 | command! DiffOrig vert new | set buftype=nofile nobuflisted | read ++edit # | 0d_ | 293 | command! DiffOrig vert new | set buftype=nofile nobuflisted | read ++edit # | 0d_ |
| 294 | \ | diffthis | wincmd p | diffthis | 294 | \ | diffthis | wincmd p | diffthis |
| 295 | 295 | ||
| 296 | " Uset <C-w>d to toggle Diff mode | 296 | " Uset <C-w>d to toggle Diff mode |
| 297 | function! s:SwitchDiff() | 297 | function! s:SwitchDiff() |
| 298 | if &diff | 298 | if &diff |
| 299 | call CloseBuffersForDiff() | 299 | call CloseBuffersForDiff() |
| 300 | else | 300 | else |
| 301 | DiffOrig | 301 | DiffOrig |
| 302 | endif | 302 | endif |
| 303 | endfunction | 303 | endfunction |
| 304 | com! SwitchDiff call s:SwitchDiff() | 304 | com! SwitchDiff call s:SwitchDiff() |
| 305 | nnoremap <C-w>d <Cmd>silent! SwitchDiff<CR> | 305 | nnoremap <C-w>d <Cmd>silent! SwitchDiff<CR> |
| 306 | 306 | ||
| 307 | function! s:SwitchDiffForGitHEAD() | 307 | function! s:SwitchDiffForGitHEAD() |
| 308 | norm cdg | 308 | norm cdg |
| 309 | if &diff | 309 | if &diff |
| 310 | windo | if &buftype == "nofile" | bdelete | endif | 310 | windo | if &buftype == "nofile" | bdelete | endif |
| 311 | norm! zv | 311 | norm! zv |
| 312 | else | 312 | else |
| 313 | vert new | set buftype=nofile nobuflisted | 313 | vert new | set buftype=nofile nobuflisted |
| 314 | read !git show HEAD:# | 314 | read !git show HEAD:# |
| 315 | 0d_ | diffthis | wincmd p | diffthis | 315 | 0d_ | diffthis | wincmd p | diffthis |
| 316 | endif | 316 | endif |
| 317 | endfunction | 317 | endfunction |
| 318 | command! SwitchDiffForGitHEAD call s:SwitchDiffForGitHEAD() | 318 | command! SwitchDiffForGitHEAD call s:SwitchDiffForGitHEAD() |
| 319 | nnoremap <C-w>D <Cmd>silent! SwitchDiffForGitHEAD<CR> | 319 | nnoremap <C-w>D <Cmd>silent! SwitchDiffForGitHEAD<CR> |
| @@ -339,22 +339,22 @@ inoremap <m-J> <esc><c-w>j | |||
| 339 | inoremap <m-K> <esc><c-w>k | 339 | inoremap <m-K> <esc><c-w>k |
| 340 | 340 | ||
| 341 | if has('terminal') && exists(':terminal') == 2 && has('patch-8.1.1') | 341 | if has('terminal') && exists(':terminal') == 2 && has('patch-8.1.1') |
| 342 | " vim 8.1 支持 termwinkey ,不需要把 terminal 切换成 normal 模式 | 342 | " vim 8.1 支持 termwinkey ,不需要把 terminal 切换成 normal 模式 |
| 343 | " 设置 termwinkey 为 CTRL 加减号(GVIM),有些终端下是 CTRL+? | 343 | " 设置 termwinkey 为 CTRL 加减号(GVIM),有些终端下是 CTRL+? |
| 344 | " 后面四个键位是搭配 termwinkey 的,如果 termwinkey 更改,也要改 | 344 | " 后面四个键位是搭配 termwinkey 的,如果 termwinkey 更改,也要改 |
| 345 | set termwinkey=<c-_> | 345 | set termwinkey=<c-_> |
| 346 | tnoremap <m-H> <c-_>h | 346 | tnoremap <m-H> <c-_>h |
| 347 | tnoremap <m-L> <c-_>l | 347 | tnoremap <m-L> <c-_>l |
| 348 | tnoremap <m-J> <c-_>j | 348 | tnoremap <m-J> <c-_>j |
| 349 | tnoremap <m-K> <c-_>k | 349 | tnoremap <m-K> <c-_>k |
| 350 | tnoremap <m-q> <c-\><c-n> | 350 | tnoremap <m-q> <c-\><c-n> |
| 351 | elseif has('nvim') | 351 | elseif has('nvim') |
| 352 | " neovim 没有 termwinkey 支持,必须把 terminal 切换回 normal 模式 | 352 | " neovim 没有 termwinkey 支持,必须把 terminal 切换回 normal 模式 |
| 353 | tnoremap <m-H> <c-\><c-n><c-w>h | 353 | tnoremap <m-H> <c-\><c-n><c-w>h |
| 354 | tnoremap <m-L> <c-\><c-n><c-w>l | 354 | tnoremap <m-L> <c-\><c-n><c-w>l |
| 355 | tnoremap <m-J> <c-\><c-n><c-w>j | 355 | tnoremap <m-J> <c-\><c-n><c-w>j |
| 356 | tnoremap <m-K> <c-\><c-n><c-w>k | 356 | tnoremap <m-K> <c-\><c-n><c-w>k |
| 357 | tnoremap <m-q> <c-\><c-n> | 357 | tnoremap <m-q> <c-\><c-n> |
| 358 | endif | 358 | endif |
| 359 | " }}} | 359 | " }}} |
| 360 | " MANAGE_TABS ----------------{{{ | 360 | " MANAGE_TABS ----------------{{{ |
| @@ -379,16 +379,16 @@ map <leader>te :tabedit <C-r>=expand("%:p:h")<CR> | |||
| 379 | 379 | ||
| 380 | " Tab move functions | 380 | " Tab move functions |
| 381 | function! Tvab_MoveLeft() | 381 | function! Tvab_MoveLeft() |
| 382 | let l:tabnr = tabpagenr() - 2 | 382 | let l:tabnr = tabpagenr() - 2 |
| 383 | if l:tabnr >= 0 | 383 | if l:tabnr >= 0 |
| 384 | exec 'tabmove '.l:tabnr | 384 | exec 'tabmove '.l:tabnr |
| 385 | endif | 385 | endif |
| 386 | endfunc | 386 | endfunc |
| 387 | function! Tab_MoveRight() | 387 | function! Tab_MoveRight() |
| 388 | let l:tabnr = tabpagenr() + 1 | 388 | let l:tabnr = tabpagenr() + 1 |
| 389 | if l:tabnr <= tabpagenr('$') | 389 | if l:tabnr <= tabpagenr('$') |
| 390 | exec 'tabmove '.l:tabnr | 390 | exec 'tabmove '.l:tabnr |
| 391 | endif | 391 | endif |
| 392 | endfunc | 392 | endfunc |
| 393 | " }}} | 393 | " }}} |
| 394 | " FOLD ----------------{{{ | 394 | " FOLD ----------------{{{ |
| @@ -516,7 +516,7 @@ function! AddSpaceForSelection() | |||
| 516 | '< norm! O | 516 | '< norm! O |
| 517 | '> norm! o | 517 | '> norm! o |
| 518 | exe "norm! "..(line("'<")-1).."GV"..(line("'>")+1).."G" | 518 | exe "norm! "..(line("'<")-1).."GV"..(line("'>")+1).."G" |
| 519 | " Otherwise, add space at start and end column | 519 | " Otherwise, add space at start and end column |
| 520 | else | 520 | else |
| 521 | call cursor('.', col("'<")) | 521 | call cursor('.', col("'<")) |
| 522 | execute "norm! i\<space>" | 522 | execute "norm! i\<space>" |
diff --git a/vim/mini.lua b/vim/mini.lua index 9f9c803..7b44fc0 100644 --- a/vim/mini.lua +++ b/vim/mini.lua | |||
| @@ -1,10 +1,395 @@ | |||
| 1 | -- vim: sw=2 foldmethod=marker foldmarker={{{,}}} | 1 | -- vim: sw=2 foldmethod=marker foldmarker={{{,}}} |
| 2 | 2 | ||
| 3 | -- Ref: https://github.com/echasnovski/mini.nvim | 3 | -- Ref: https://github.com/echasnovski/mini.nvim |
| 4 | -- TODO | 4 | -- https://lazy.folke.io/spec |
| 5 | |||
| 6 | -- Install Lazy {{{ | ||
| 7 | -- Bootstrap lazy.nvim | ||
| 8 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" | ||
| 9 | if not (vim.uv or vim.loop).fs_stat(lazypath) then | ||
| 10 | local lazyrepo = "https://github.com/folke/lazy.nvim.git" | ||
| 11 | local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) | ||
| 12 | end | ||
| 13 | vim.opt.rtp:prepend(lazypath) | ||
| 14 | -- }}} | ||
| 15 | require("lazy").setup ({ | ||
| 16 | "tpope/vim-sleuth", | ||
| 17 | -- bufferline {{{ | ||
| 18 | { | ||
| 19 | "akinsho/bufferline.nvim", | ||
| 20 | dependencies = { | ||
| 21 | 'nvim-tree/nvim-web-devicons', -- OPTIONAL: for file icons | ||
| 22 | "tiagovla/scope.nvim", | ||
| 23 | }, | ||
| 24 | config = function() | ||
| 25 | require("bufferline").setup{ | ||
| 26 | options = { | ||
| 27 | tab_size = 14, | ||
| 28 | separator_style = { '', '' }, | ||
| 29 | themable = true, | ||
| 30 | buffer_close_icon = '', | ||
| 31 | close_icon = '', | ||
| 32 | groups = { | ||
| 33 | items = { | ||
| 34 | require('bufferline.groups').builtin.pinned:with({ icon = "" }) | ||
| 35 | } | ||
| 36 | } | ||
| 37 | }, | ||
| 38 | } | ||
| 39 | require("scope").setup{} | ||
| 40 | -- keymaps {{{ | ||
| 41 | for i = 1, 9, 1 do | ||
| 42 | vim.keymap.set("n", string.format("<A-%s>", i), function() | ||
| 43 | vim.cmd("BufferLineGoToBuffer "..i) | ||
| 44 | end, {silent = true}) | ||
| 45 | end | ||
| 46 | local opts = { noremap = true, silent = true } | ||
| 47 | vim.keymap.set('n', '<TAB>', '<Cmd>BufferLineCyclePrev<CR>', opts) | ||
| 48 | vim.keymap.set('n', '<S-TAB>', '<Cmd>BufferLineCycleNext<CR>', opts) | ||
| 49 | vim.keymap.set('n', '<M-h>', '<Cmd>BufferLineMovePrev<CR>', opts) | ||
| 50 | vim.keymap.set('n', '<M-l>', '<Cmd>BufferLineMoveNext<CR>', opts) | ||
| 51 | vim.keymap.set('n', '<M-p>', '<Cmd>BufferLineTogglePin<CR>', opts) | ||
| 52 | end, | ||
| 53 | -- }}} | ||
| 54 | }, | ||
| 55 | -- }}} | ||
| 56 | -- conform {{{ | ||
| 57 | { | ||
| 58 | "stevearc/conform.nvim", | ||
| 59 | opts = { | ||
| 60 | formatters_by_ft = { | ||
| 61 | lua = { "stylua" }, | ||
| 62 | }, | ||
| 63 | }, | ||
| 64 | config = function(_, opts) | ||
| 65 | require("conform").setup(opts) | ||
| 66 | end, | ||
| 67 | }, | ||
| 68 | -- }}} | ||
| 69 | -- Telescope {{{ | ||
| 70 | { | ||
| 71 | "nvim-telescope/telescope-fzf-native.nvim", | ||
| 72 | build = "make", | ||
| 73 | }, | ||
| 74 | { | ||
| 75 | "nvim-telescope/telescope.nvim", | ||
| 76 | lazy = false, | ||
| 77 | dependencies = { | ||
| 78 | 'nvim-lua/plenary.nvim', | ||
| 79 | "nvim-telescope/telescope-fzf-native.nvim", | ||
| 80 | }, | ||
| 81 | config = function() | ||
| 82 | -- extensions {{{ | ||
| 83 | require("telescope").load_extension("fzf") | ||
| 84 | -- require("telescope").load_extension("aerial") | ||
| 85 | -- }}} | ||
| 86 | -- config {{{ | ||
| 87 | require('telescope').setup({ | ||
| 88 | defaults = { | ||
| 89 | mappings = { | ||
| 90 | i = { | ||
| 91 | -- ["<c-j>"] = "move_selection_next", | ||
| 92 | -- ["<c-k>"] = "move_selection_previous", | ||
| 93 | ["<C-o>"] = require("telescope.actions.layout").toggle_preview, | ||
| 94 | ["<C-u>"] = false, | ||
| 95 | ["<C-q>"] = function(p_bufnr) | ||
| 96 | require("telescope.actions").send_selected_to_qflist(p_bufnr) | ||
| 97 | vim.cmd.cfdo("edit") | ||
| 98 | end, | ||
| 99 | }, | ||
| 100 | }, | ||
| 101 | layout_config = { | ||
| 102 | horizontal = { | ||
| 103 | prompt_position = "bottom", | ||
| 104 | }, | ||
| 105 | vertical = { height = 0.8 }, | ||
| 106 | -- other layout configuration here | ||
| 107 | preview_cutoff = 0, | ||
| 108 | }, | ||
| 109 | file_ignore_patterns = { | ||
| 110 | "node_modules" | ||
| 111 | }, | ||
| 112 | }, | ||
| 113 | pickers = { | ||
| 114 | buffers = { | ||
| 115 | show_all_buffers = true, | ||
| 116 | sort_lastused = true, | ||
| 117 | theme = "dropdown", | ||
| 118 | previewer = false, | ||
| 119 | mappings = { | ||
| 120 | i = { | ||
| 121 | ["<c-d>"] = "delete_buffer", | ||
| 122 | }, | ||
| 123 | n = { | ||
| 124 | ["<c-d>"] = "delete_buffer", | ||
| 125 | } | ||
| 126 | }, | ||
| 127 | }, | ||
| 128 | }, | ||
| 129 | extensions = { | ||
| 130 | fzf = { | ||
| 131 | fuzzy = true, -- false will only do exact matching | ||
| 132 | override_generic_sorter = true, -- override the generic sorter | ||
| 133 | override_file_sorter = true, -- override the file sorter | ||
| 134 | case_mode = "smart_case", -- or "ignore_case" or "respect_case" | ||
| 135 | -- the default case_mode is "smart_case" | ||
| 136 | }, | ||
| 137 | aerial = { | ||
| 138 | -- Display symbols as <root>.<parent>.<symbol> | ||
| 139 | show_nesting = { | ||
| 140 | ["_"] = false, -- This key will be the default | ||
| 141 | json = true, -- You can set the option for specific filetypes | ||
| 142 | yaml = true, | ||
| 143 | }, | ||
| 144 | }, | ||
| 145 | }, | ||
| 146 | }) | ||
| 147 | -- }}} | ||
| 148 | -- Keymaps {{{ | ||
| 149 | vim.keymap.set("n", "<leader>f", "<cmd>Telescope oldfiles<CR>", { desc = "telescope find oldfiles" }) | ||
| 150 | vim.keymap.set("n", "<leader>b", "<cmd>Telescope buffers<CR>", { desc = "telescope find buffers" }) | ||
| 151 | vim.keymap.set("n", "<leader>/", "<cmd>Telescope current_buffer_fuzzy_find<CR>", { desc = "telescope find in current buffer" }) | ||
| 152 | vim.keymap.set("n", "<leader>sf", "<cmd>Telescope find_files<cr>", { desc = "telescope find files" }) | ||
| 153 | vim.keymap.set( | ||
| 154 | "n", | ||
| 155 | "<leader>sF", | ||
| 156 | "<cmd>Telescope find_files follow=true no_ignore=true hidden=true<CR>", | ||
| 157 | { desc = "telescope find all files" } | ||
| 158 | ) | ||
| 159 | vim.keymap.set("n", "<leader>sg", "<cmd>Telescope live_grep<CR>", { desc = "telescope live grep" }) | ||
| 160 | vim.keymap.set("n", "<leader>gf", "<cmd>Telescope git_files<CR>", { desc = "telescope git files" }) | ||
| 161 | vim.keymap.set("n", "<leader>sH", "<cmd>Telescope help_tags<CR>", { desc = "telescope help page" }) | ||
| 162 | vim.keymap.set("n", "<leader>sm", "<cmd>Telescope marks<CR>", { desc = "telescope marks" }) | ||
| 163 | vim.keymap.set("n", "<leader>sj", "<cmd>Telescope jumplist<CR>", { desc = "telescope marks" }) | ||
| 164 | vim.keymap.set("n", "<leader>tt", "<cmd>Telescope<CR>", { desc = "telescope help page" }) | ||
| 165 | vim.keymap.set("n", "<leader>sk", "<cmd>Telescope keymaps<CR>", { desc = "telescope keymaps" }) | ||
| 166 | vim.keymap.set("n", "<leader>pt", "<cmd>Telescope terms<CR>", { desc = "telescope pick hidden term" }) | ||
| 167 | |||
| 168 | vim.keymap.set("n", "<leader>ss", function() | ||
| 169 | local current_filetype = vim.bo.filetype | ||
| 170 | local cwd = os.getenv("HOME") .. "/snippets" | ||
| 171 | require("telescope.builtin").find_files({ | ||
| 172 | prompt_title = "Press <C-T> to edit a snippet", | ||
| 173 | default_text = current_filetype == "" and "" or current_filetype .. "_", | ||
| 174 | cwd = cwd, | ||
| 175 | attach_mappings = function(prompt_bufnr, map) | ||
| 176 | local get_prompt_or_entry = function() | ||
| 177 | local file_list = require("telescope.actions.state").get_selected_entry() | ||
| 178 | if file_list then | ||
| 179 | return file_list[1] | ||
| 180 | else | ||
| 181 | local current_picker = require("telescope.actions.state").get_current_picker(prompt_bufnr) | ||
| 182 | return current_picker:_get_prompt() | ||
| 183 | end | ||
| 184 | end | ||
| 185 | |||
| 186 | local edit_snippet = function() | ||
| 187 | local file = get_prompt_or_entry() | ||
| 188 | require("telescope.actions").close(prompt_bufnr) | ||
| 189 | local prefix_filetype = string.match(file, "([^_]+)") | ||
| 190 | vim.cmd(":vs") | ||
| 191 | vim.cmd(":e " .. cwd .. "/" .. file) | ||
| 192 | vim.bo.filetype = prefix_filetype | ||
| 193 | vim.bo.bufhidden = "wipe" | ||
| 194 | vim.cmd("set filetype?") | ||
| 195 | end | ||
| 196 | |||
| 197 | local insert_selected_snippet = function() | ||
| 198 | local file = get_prompt_or_entry() | ||
| 199 | local path = cwd .. "/" .. file | ||
| 200 | if vim.fn.filereadable(path) ~= 0 then | ||
| 201 | local snippet_content = vim.fn.readfile(path) | ||
| 202 | require("telescope.actions").close(prompt_bufnr) | ||
| 203 | vim.fn.setreg('"', snippet_content) | ||
| 204 | print("Snippet saved to register") | ||
| 205 | else | ||
| 206 | edit_snippet() | ||
| 207 | end | ||
| 208 | end | ||
| 209 | |||
| 210 | map("i", "<CR>", insert_selected_snippet) | ||
| 211 | map("i", "<C-T>", edit_snippet) | ||
| 212 | map("n", "<CR>", insert_selected_snippet) | ||
| 213 | |||
| 214 | return true | ||
| 215 | end, | ||
| 216 | }) | ||
| 217 | end, { desc = "[S]earch [S]nippets" }) | ||
| 218 | |||
| 219 | vim.keymap.set("n", "<leader>sd", function() | ||
| 220 | require("telescope.builtin").oldfiles({ | ||
| 221 | prompt_title = "CD to", | ||
| 222 | attach_mappings = function(prompt_bufnr, map) | ||
| 223 | local cd_prompt = function() | ||
| 224 | local file = require("telescope.actions.state").get_selected_entry()[1] | ||
| 225 | local path = string.match(file, "(.*[/\\])") | ||
| 226 | require("telescope.actions").close(prompt_bufnr) | ||
| 227 | vim.api.nvim_feedkeys(":cd " .. path, "n", true) | ||
| 228 | end | ||
| 229 | |||
| 230 | map("i", "<CR>", cd_prompt) | ||
| 231 | map("n", "<CR>", cd_prompt) | ||
| 232 | |||
| 233 | return true | ||
| 234 | end, | ||
| 235 | }) | ||
| 236 | end, { desc = "Search Directory" })-- }}} | ||
| 237 | end, | ||
| 238 | }, | ||
| 239 | -- }}} | ||
| 240 | -- nvim-tree {{{ | ||
| 241 | { | ||
| 242 | "nvim-tree/nvim-tree.lua", | ||
| 243 | config = function() | ||
| 244 | -- config {{{ | ||
| 245 | require("nvim-tree").setup { | ||
| 246 | filters = { | ||
| 247 | dotfiles = false, | ||
| 248 | }, | ||
| 249 | disable_netrw = true, | ||
| 250 | hijack_netrw = true, | ||
| 251 | hijack_cursor = true, | ||
| 252 | hijack_unnamed_buffer_when_opening = false, | ||
| 253 | sync_root_with_cwd = true, | ||
| 254 | update_focused_file = { | ||
| 255 | enable = true, | ||
| 256 | update_root = false, | ||
| 257 | }, | ||
| 258 | view = { | ||
| 259 | adaptive_size = false, | ||
| 260 | side = "left", | ||
| 261 | width = 30, | ||
| 262 | preserve_window_proportions = true, | ||
| 263 | }, | ||
| 264 | git = { | ||
| 265 | enable = true, | ||
| 266 | ignore = true, | ||
| 267 | }, | ||
| 268 | filesystem_watchers = { | ||
| 269 | enable = true, | ||
| 270 | }, | ||
| 271 | actions = { | ||
| 272 | open_file = { | ||
| 273 | resize_window = true, | ||
| 274 | }, | ||
| 275 | }, | ||
| 276 | renderer = { | ||
| 277 | root_folder_label = false, | ||
| 278 | highlight_git = true, | ||
| 279 | highlight_opened_files = "none", | ||
| 280 | |||
| 281 | indent_markers = { | ||
| 282 | enable = true, | ||
| 283 | }, | ||
| 284 | |||
| 285 | icons = { | ||
| 286 | show = { | ||
| 287 | file = true, | ||
| 288 | folder = true, | ||
| 289 | folder_arrow = true, | ||
| 290 | git = true, | ||
| 291 | }, | ||
| 292 | |||
| 293 | glyphs = { | ||
| 294 | default = "", | ||
| 295 | symlink = "", | ||
| 296 | folder = { | ||
| 297 | default = "", | ||
| 298 | empty = "", | ||
| 299 | empty_open = "", | ||
| 300 | open = "", | ||
| 301 | symlink = "", | ||
| 302 | symlink_open = "", | ||
| 303 | arrow_open = "", | ||
| 304 | arrow_closed = "", | ||
| 305 | }, | ||
| 306 | git = { | ||
| 307 | unstaged = "✗", | ||
| 308 | staged = "✓", | ||
| 309 | unmerged = "", | ||
| 310 | renamed = "➜", | ||
| 311 | untracked = "★", | ||
| 312 | deleted = "", | ||
| 313 | ignored = "◌", | ||
| 314 | }, | ||
| 315 | }, | ||
| 316 | }, | ||
| 317 | }, | ||
| 318 | } | ||
| 319 | -- }}} | ||
| 320 | -- keymaps {{{ | ||
| 321 | vim.keymap.set( | ||
| 322 | "n", | ||
| 323 | "<C-n>", | ||
| 324 | "<cmd>NvimTreeToggle<CR>", | ||
| 325 | { desc = "nvimtree toggle window" } | ||
| 326 | ) | ||
| 327 | vim.keymap.set( | ||
| 328 | "n", | ||
| 329 | "<leader>e", | ||
| 330 | "<cmd>NvimTreeFocus<CR>", | ||
| 331 | { desc = "nvimtree focus window" } | ||
| 332 | ) | ||
| 333 | -- }}} | ||
| 334 | end, | ||
| 335 | }, | ||
| 336 | -- }}} | ||
| 337 | -- which-key {{{ | ||
| 338 | { | ||
| 339 | "folke/which-key.nvim", | ||
| 340 | lazy = false, | ||
| 341 | config = function() | ||
| 342 | require('which-key').setup { | ||
| 343 | defaults = { | ||
| 344 | win = { | ||
| 345 | -- don't allow the popup to overlap with the cursor | ||
| 346 | no_overlap = false, | ||
| 347 | -- width = 1, | ||
| 348 | height = { min = 10, max = 25 }, | ||
| 349 | -- col = 0, | ||
| 350 | -- row = math.huge, | ||
| 351 | -- border = "none", | ||
| 352 | padding = { 1, 2 }, -- extra window padding [top/bottom, right/left] | ||
| 353 | title = true, | ||
| 354 | title_pos = "center", | ||
| 355 | zindex = 1000, | ||
| 356 | -- Additional vim.wo and vim.bo options | ||
| 357 | bo = {}, | ||
| 358 | wo = { | ||
| 359 | -- winblend = 10, -- value between 0-100 0 for fully opaque and 100 for fully transparent | ||
| 360 | }, | ||
| 361 | }, | ||
| 362 | } | ||
| 363 | } | ||
| 364 | end, | ||
| 365 | }, | ||
| 366 | -- }}} | ||
| 367 | -- Tig {{{ | ||
| 368 | { | ||
| 369 | "iberianpig/tig-explorer.vim", | ||
| 370 | dependencies = { "rbgrouleff/bclose.vim" }, | ||
| 371 | config = function() | ||
| 372 | vim.cmd('nunmap <leader>bd') | ||
| 373 | end, | ||
| 374 | }, | ||
| 375 | --}}} | ||
| 376 | -- toggleterm {{{ | ||
| 377 | { | ||
| 378 | "akinsho/toggleterm.nvim", | ||
| 379 | config = function() | ||
| 380 | require("toggleterm").setup { | ||
| 381 | persist_size = false, | ||
| 382 | direction = 'float', | ||
| 383 | } | ||
| 5 | 384 | ||
| 6 | -- Install mini.nvim {{{ | 385 | vim.keymap.set({ "n", "t" }, "<A-i>", function() vim.cmd("ToggleTerm direction=float") end, { desc = "terminal toggle floating term" }) |
| 386 | vim.keymap.set({ "n", "t" }, "<A-v>", function() vim.cmd("ToggleTerm direction=horizontal") end, { desc = "terminal toggle floating term" }) | ||
| 387 | end, | ||
| 388 | }, | ||
| 389 | --}}} | ||
| 390 | }) | ||
| 7 | 391 | ||
| 392 | -- Install mini.nvim {{{ | ||
| 8 | -- Put this at the top of 'init.lua' | 393 | -- Put this at the top of 'init.lua' |
| 9 | local path_package = vim.fn.stdpath('data') .. '/site' | 394 | local path_package = vim.fn.stdpath('data') .. '/site' |
| 10 | vim.o.packpath = path_package | 395 | vim.o.packpath = path_package |
| @@ -67,7 +452,7 @@ require('mini.base16').setup({ | |||
| 67 | -- Integers, Boolean, Constants, XML Attributes, Markup Link Url | 452 | -- Integers, Boolean, Constants, XML Attributes, Markup Link Url |
| 68 | base09 = "#ef9062", | 453 | base09 = "#ef9062", |
| 69 | -- Classes, Markup Bold, Search Text Background | 454 | -- Classes, Markup Bold, Search Text Background |
| 70 | base0A = "#efca84", | 455 | base0A = "#a6e22e", |
| 71 | -- Strings, Inherited Class, Markup Code, Diff Inserted | 456 | -- Strings, Inherited Class, Markup Code, Diff Inserted |
| 72 | base0B = "#e5c463", | 457 | base0B = "#e5c463", |
| 73 | -- Support, Regular Expressions, Escape Characters, Markup Quotes | 458 | -- Support, Regular Expressions, Escape Characters, Markup Quotes |
| @@ -79,14 +464,21 @@ require('mini.base16').setup({ | |||
| 79 | -- Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> | 464 | -- Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> |
| 80 | base0F = "#f9f8f5", | 465 | base0F = "#f9f8f5", |
| 81 | }, | 466 | }, |
| 82 | use_cterm = true, | 467 | use_cterm = false, |
| 83 | }) | 468 | }) |
| 84 | 469 | ||
| 470 | -- Override settings for search | ||
| 471 | vim.cmd('hi Search guibg=#e5c07b') | ||
| 472 | |||
| 85 | -- Resume terminal color | 473 | -- Resume terminal color |
| 86 | for i = 1, 15, 1 do | 474 | for i = 1, 15, 1 do |
| 87 | vim.cmd("let terminal_color_"..i.." = ''") | 475 | vim.cmd("let terminal_color_"..i.." = ''") |
| 88 | end | 476 | end |
| 89 | 477 | ||
| 478 | -- Override settings for bufferline | ||
| 479 | vim.cmd('hi BufferLineTabSelected guibg=#f85e84') | ||
| 480 | vim.cmd('hi BufferLineTab guibg=Gray') | ||
| 481 | |||
| 90 | --}}} | 482 | --}}} |
| 91 | -- mini.icons {{{ | 483 | -- mini.icons {{{ |
| 92 | require('mini.icons').setup({ | 484 | require('mini.icons').setup({ |
| @@ -180,9 +572,9 @@ vim.keymap.set( 'n', '\\m', function() require('mini.map').toggle() end, { desc | |||
| 180 | -- mini.visits {{{ | 572 | -- mini.visits {{{ |
| 181 | require('mini.visits').setup() | 573 | require('mini.visits').setup() |
| 182 | vim.keymap.set( 'n', '<leader><leader>li', function() | 574 | vim.keymap.set( 'n', '<leader><leader>li', function() |
| 183 | MiniVisits.list_paths() | 575 | MiniVisits.list_paths() |
| 184 | end, | 576 | end, |
| 185 | { buffer = bufnr, desc = '' } | 577 | { buffer = bufnr, desc = '' } |
| 186 | ) | 578 | ) |
| 187 | -- }}} | 579 | -- }}} |
| 188 | -- mini.completion {{{ | 580 | -- mini.completion {{{ |
| @@ -288,399 +680,17 @@ require('mini.pairs').setup() | |||
| 288 | -- }, | 680 | -- }, |
| 289 | -- -- }}} | 681 | -- -- }}} |
| 290 | -- -- mini.bufremote {{{ | 682 | -- -- mini.bufremote {{{ |
| 291 | add('echasnovski/mini.bufremove') | 683 | -- require('mini.bufremove') |
| 292 | vim.g.bufremove_disable = true | ||
| 293 | --}}} | 684 | --}}} |
| 294 | -- -- mini.animate --{{{ | 685 | -- -- mini.animate --{{{ |
| 295 | -- add('echasnovski/mini.animate') | ||
| 296 | -- require("mini.animate").setup() | 686 | -- require("mini.animate").setup() |
| 297 | -- -- }}} | 687 | -- -- }}} |
| 298 | -- -- suda {{{ | 688 | -- -- suda {{{ |
| 299 | -- add { source = "lambdalisue/suda.vim" } | 689 | -- add { source = "lambdalisue/suda.vim" } |
| 300 | -- }}} | 690 | -- }}} |
| 301 | -- -- nvchad {{{ | ||
| 302 | -- add { | ||
| 303 | -- source = "Nvchad/base46" | ||
| 304 | -- } | ||
| 305 | -- add { | ||
| 306 | -- source = "Nvchad/ui" | ||
| 307 | -- } | ||
| 308 | -- add { | ||
| 309 | -- source = "NvChad/nvim-colorizer.lua" | ||
| 310 | -- } | ||
| 311 | -- require("colorizer").setup(opts) | ||
| 312 | -- | ||
| 313 | -- -- execute colorizer as soon as possible | ||
| 314 | -- vim.defer_fn(function() | ||
| 315 | -- require("colorizer").attach_to_buffer(0) | ||
| 316 | -- end, 0) | ||
| 317 | -- | ||
| 318 | -- require('base46') | ||
| 319 | -- require('nvchad') | ||
| 320 | -- }}} | ||
| 321 | -- Telescope {{{ | ||
| 322 | add({ | ||
| 323 | source = "nvim-telescope/telescope.nvim", | ||
| 324 | depends = { | ||
| 325 | 'nvim-lua/plenary.nvim', | ||
| 326 | }, | ||
| 327 | hooks = { post_checkout = function() end }, | ||
| 328 | }) | ||
| 329 | -- config {{{ | ||
| 330 | require('telescope').setup({ | ||
| 331 | defaults = { | ||
| 332 | mappings = { | ||
| 333 | i = { | ||
| 334 | -- ["<c-j>"] = "move_selection_next", | ||
| 335 | -- ["<c-k>"] = "move_selection_previous", | ||
| 336 | ["<C-o>"] = require("telescope.actions.layout").toggle_preview, | ||
| 337 | ["<C-u>"] = false, | ||
| 338 | ["<C-q>"] = function(p_bufnr) | ||
| 339 | require("telescope.actions").send_selected_to_qflist(p_bufnr) | ||
| 340 | vim.cmd.cfdo("edit") | ||
| 341 | end, | ||
| 342 | }, | ||
| 343 | }, | ||
| 344 | layout_config = { | ||
| 345 | horizontal = { | ||
| 346 | prompt_position = "bottom", | ||
| 347 | }, | ||
| 348 | vertical = { height = 0.8 }, | ||
| 349 | -- other layout configuration here | ||
| 350 | preview_cutoff = 0, | ||
| 351 | }, | ||
| 352 | file_ignore_patterns = { | ||
| 353 | "node_modules" | ||
| 354 | }, | ||
| 355 | }, | ||
| 356 | pickers = { | ||
| 357 | buffers = { | ||
| 358 | show_all_buffers = true, | ||
| 359 | sort_lastused = true, | ||
| 360 | theme = "dropdown", | ||
| 361 | previewer = false, | ||
| 362 | mappings = { | ||
| 363 | i = { | ||
| 364 | ["<c-d>"] = "delete_buffer", | ||
| 365 | }, | ||
| 366 | n = { | ||
| 367 | ["<c-d>"] = "delete_buffer", | ||
| 368 | } | ||
| 369 | }, | ||
| 370 | }, | ||
| 371 | }, | ||
| 372 | extensions = { | ||
| 373 | fzf = { | ||
| 374 | fuzzy = true, -- false will only do exact matching | ||
| 375 | override_generic_sorter = true, -- override the generic sorter | ||
| 376 | override_file_sorter = true, -- override the file sorter | ||
| 377 | case_mode = "smart_case", -- or "ignore_case" or "respect_case" | ||
| 378 | -- the default case_mode is "smart_case" | ||
| 379 | }, | ||
| 380 | aerial = { | ||
| 381 | -- Display symbols as <root>.<parent>.<symbol> | ||
| 382 | show_nesting = { | ||
| 383 | ["_"] = false, -- This key will be the default | ||
| 384 | json = true, -- You can set the option for specific filetypes | ||
| 385 | yaml = true, | ||
| 386 | }, | ||
| 387 | }, | ||
| 388 | }, | ||
| 389 | }) | ||
| 390 | -- }}} | ||
| 391 | -- extensions {{{ | ||
| 392 | add({ | ||
| 393 | source = 'nvim-telescope/telescope-fzf-native.nvim', | ||
| 394 | hooks = { | ||
| 395 | post_install = function(config) | ||
| 396 | vim.cmd("make -C " .. config.path) | ||
| 397 | end | ||
| 398 | }, | ||
| 399 | }) | ||
| 400 | require("telescope").load_extension("fzf") | ||
| 401 | -- require("telescope").load_extension("aerial") | ||
| 402 | -- }}} | ||
| 403 | |||
| 404 | -- Keymaps {{{ | ||
| 405 | vim.keymap.set("n", "<leader>f", "<cmd>Telescope oldfiles<CR>", { desc = "telescope find oldfiles" }) | ||
| 406 | vim.keymap.set("n", "<leader>b", "<cmd>Telescope buffers<CR>", { desc = "telescope find buffers" }) | ||
| 407 | vim.keymap.set("n", "<leader>/", "<cmd>Telescope current_buffer_fuzzy_find<CR>", { desc = "telescope find in current buffer" }) | ||
| 408 | vim.keymap.set("n", "<leader>sf", "<cmd>Telescope find_files<cr>", { desc = "telescope find files" }) | ||
| 409 | vim.keymap.set( | ||
| 410 | "n", | ||
| 411 | "<leader>sF", | ||
| 412 | "<cmd>Telescope find_files follow=true no_ignore=true hidden=true<CR>", | ||
| 413 | { desc = "telescope find all files" } | ||
| 414 | ) | ||
| 415 | vim.keymap.set("n", "<leader>sg", "<cmd>Telescope live_grep<CR>", { desc = "telescope live grep" }) | ||
| 416 | vim.keymap.set("n", "<leader>gf", "<cmd>Telescope git_files<CR>", { desc = "telescope git files" }) | ||
| 417 | vim.keymap.set("n", "<leader>sH", "<cmd>Telescope help_tags<CR>", { desc = "telescope help page" }) | ||
| 418 | vim.keymap.set("n", "<leader>sm", "<cmd>Telescope marks<CR>", { desc = "telescope marks" }) | ||
| 419 | vim.keymap.set("n", "<leader>sj", "<cmd>Telescope jumplist<CR>", { desc = "telescope marks" }) | ||
| 420 | vim.keymap.set("n", "<leader>tt", "<cmd>Telescope<CR>", { desc = "telescope help page" }) | ||
| 421 | vim.keymap.set("n", "<leader>sk", "<cmd>Telescope keymaps<CR>", { desc = "telescope keymaps" }) | ||
| 422 | vim.keymap.set("n", "<leader>pt", "<cmd>Telescope terms<CR>", { desc = "telescope pick hidden term" }) | ||
| 423 | |||
| 424 | vim.keymap.set("n", "<leader>ss", function() | ||
| 425 | local current_filetype = vim.bo.filetype | ||
| 426 | local cwd = os.getenv("HOME") .. "/snippets" | ||
| 427 | require("telescope.builtin").find_files({ | ||
| 428 | prompt_title = "Press <C-T> to edit a snippet", | ||
| 429 | default_text = current_filetype == "" and "" or current_filetype .. "_", | ||
| 430 | cwd = cwd, | ||
| 431 | attach_mappings = function(prompt_bufnr, map) | ||
| 432 | local get_prompt_or_entry = function() | ||
| 433 | local file_list = require("telescope.actions.state").get_selected_entry() | ||
| 434 | if file_list then | ||
| 435 | return file_list[1] | ||
| 436 | else | ||
| 437 | local current_picker = require("telescope.actions.state").get_current_picker(prompt_bufnr) | ||
| 438 | return current_picker:_get_prompt() | ||
| 439 | end | ||
| 440 | end | ||
| 441 | |||
| 442 | local edit_snippet = function() | ||
| 443 | local file = get_prompt_or_entry() | ||
| 444 | require("telescope.actions").close(prompt_bufnr) | ||
| 445 | local prefix_filetype = string.match(file, "([^_]+)") | ||
| 446 | vim.cmd(":vs") | ||
| 447 | vim.cmd(":e " .. cwd .. "/" .. file) | ||
| 448 | vim.bo.filetype = prefix_filetype | ||
| 449 | vim.bo.bufhidden = "wipe" | ||
| 450 | vim.cmd("set filetype?") | ||
| 451 | end | ||
| 452 | |||
| 453 | local insert_selected_snippet = function() | ||
| 454 | local file = get_prompt_or_entry() | ||
| 455 | local path = cwd .. "/" .. file | ||
| 456 | if vim.fn.filereadable(path) ~= 0 then | ||
| 457 | local snippet_content = vim.fn.readfile(path) | ||
| 458 | require("telescope.actions").close(prompt_bufnr) | ||
| 459 | vim.fn.setreg('"', snippet_content) | ||
| 460 | print("Snippet saved to register") | ||
| 461 | else | ||
| 462 | edit_snippet() | ||
| 463 | end | ||
| 464 | end | ||
| 465 | |||
| 466 | map("i", "<CR>", insert_selected_snippet) | ||
| 467 | map("i", "<C-T>", edit_snippet) | ||
| 468 | map("n", "<CR>", insert_selected_snippet) | ||
| 469 | |||
| 470 | return true | ||
| 471 | end, | ||
| 472 | }) | ||
| 473 | end, { desc = "[S]earch [S]nippets" }) | ||
| 474 | |||
| 475 | vim.keymap.set("n", "<leader>sd", function() | ||
| 476 | require("telescope.builtin").oldfiles({ | ||
| 477 | prompt_title = "CD to", | ||
| 478 | attach_mappings = function(prompt_bufnr, map) | ||
| 479 | local cd_prompt = function() | ||
| 480 | local file = require("telescope.actions.state").get_selected_entry()[1] | ||
| 481 | local path = string.match(file, "(.*[/\\])") | ||
| 482 | require("telescope.actions").close(prompt_bufnr) | ||
| 483 | vim.api.nvim_feedkeys(":cd " .. path, "n", true) | ||
| 484 | end | ||
| 485 | |||
| 486 | map("i", "<CR>", cd_prompt) | ||
| 487 | map("n", "<CR>", cd_prompt) | ||
| 488 | |||
| 489 | return true | ||
| 490 | end, | ||
| 491 | }) | ||
| 492 | end, { desc = "Search Directory" })-- }}} | ||
| 493 | |||
| 494 | -- }}} | ||
| 495 | -- toggleterm {{{ | ||
| 496 | |||
| 497 | add({ | ||
| 498 | source = "akinsho/toggleterm.nvim", | ||
| 499 | hooks = { post_checkout = function() end }, | ||
| 500 | }) | ||
| 501 | require("toggleterm").setup{ | ||
| 502 | persist_size = false, | ||
| 503 | direction = 'float', | ||
| 504 | } | ||
| 505 | |||
| 506 | vim.keymap.set({ "n", "t" }, "<A-i>", function() vim.cmd("ToggleTerm direction=float") end, { desc = "terminal toggle floating term" }) | ||
| 507 | vim.keymap.set({ "n", "t" }, "<A-v>", function() vim.cmd("ToggleTerm direction=horizontal") end, { desc = "terminal toggle floating term" }) | ||
| 508 | |||
| 509 | --}}} | ||
| 510 | -- Tig {{{ | ||
| 511 | |||
| 512 | add({ | ||
| 513 | source = "iberianpig/tig-explorer.vim", | ||
| 514 | depends = { "rbgrouleff/bclose.vim" }, | ||
| 515 | hooks = { post_checkout = function() end }, | ||
| 516 | }) | ||
| 517 | vim.cmd('nunmap <leader>bd') | ||
| 518 | |||
| 519 | --}}} | ||
| 520 | -- which-key {{{ | ||
| 521 | add({ | ||
| 522 | source = "folke/which-key.nvim", | ||
| 523 | checkout = "stable", | ||
| 524 | }) | ||
| 525 | require('which-key').setup { | ||
| 526 | defaults = { | ||
| 527 | win = { | ||
| 528 | -- don't allow the popup to overlap with the cursor | ||
| 529 | no_overlap = false, | ||
| 530 | -- width = 1, | ||
| 531 | height = { min = 10, max = 25 }, | ||
| 532 | -- col = 0, | ||
| 533 | -- row = math.huge, | ||
| 534 | -- border = "none", | ||
| 535 | padding = { 1, 2 }, -- extra window padding [top/bottom, right/left] | ||
| 536 | title = true, | ||
| 537 | title_pos = "center", | ||
| 538 | zindex = 1000, | ||
| 539 | -- Additional vim.wo and vim.bo options | ||
| 540 | bo = {}, | ||
| 541 | wo = { | ||
| 542 | -- winblend = 10, -- value between 0-100 0 for fully opaque and 100 for fully transparent | ||
| 543 | }, | ||
| 544 | }, | ||
| 545 | } | ||
| 546 | } | ||
| 547 | -- }}} | ||
| 548 | -- true-zen {{{ | 691 | -- true-zen {{{ |
| 549 | add { | 692 | add { |
| 550 | source = "Pocco81/true-zen.nvim", | 693 | source = "Pocco81/true-zen.nvim", |
| 551 | } | 694 | } |
| 552 | vim.keymap.set("n", "<leader>z", ":TZAtaraxis<CR>") | 695 | vim.keymap.set("n", "<leader>z", ":TZAtaraxis<CR>") |
| 553 | -- }}} | 696 | -- }}} |
| 554 | -- nvim-tree {{{ | ||
| 555 | add { | ||
| 556 | source = "nvim-tree/nvim-tree.lua", | ||
| 557 | } | ||
| 558 | -- config {{{ | ||
| 559 | require("nvim-tree").setup { | ||
| 560 | filters = { | ||
| 561 | dotfiles = false, | ||
| 562 | }, | ||
| 563 | disable_netrw = true, | ||
| 564 | hijack_netrw = true, | ||
| 565 | hijack_cursor = true, | ||
| 566 | hijack_unnamed_buffer_when_opening = false, | ||
| 567 | sync_root_with_cwd = true, | ||
| 568 | update_focused_file = { | ||
| 569 | enable = true, | ||
| 570 | update_root = false, | ||
| 571 | }, | ||
| 572 | view = { | ||
| 573 | adaptive_size = false, | ||
| 574 | side = "left", | ||
| 575 | width = 30, | ||
| 576 | preserve_window_proportions = true, | ||
| 577 | }, | ||
| 578 | git = { | ||
| 579 | enable = true, | ||
| 580 | ignore = true, | ||
| 581 | }, | ||
| 582 | filesystem_watchers = { | ||
| 583 | enable = true, | ||
| 584 | }, | ||
| 585 | actions = { | ||
| 586 | open_file = { | ||
| 587 | resize_window = true, | ||
| 588 | }, | ||
| 589 | }, | ||
| 590 | renderer = { | ||
| 591 | root_folder_label = false, | ||
| 592 | highlight_git = true, | ||
| 593 | highlight_opened_files = "none", | ||
| 594 | |||
| 595 | indent_markers = { | ||
| 596 | enable = true, | ||
| 597 | }, | ||
| 598 | |||
| 599 | icons = { | ||
| 600 | show = { | ||
| 601 | file = true, | ||
| 602 | folder = true, | ||
| 603 | folder_arrow = true, | ||
| 604 | git = true, | ||
| 605 | }, | ||
| 606 | |||
| 607 | glyphs = { | ||
| 608 | default = "", | ||
| 609 | symlink = "", | ||
| 610 | folder = { | ||
| 611 | default = "", | ||
| 612 | empty = "", | ||
| 613 | empty_open = "", | ||
| 614 | open = "", | ||
| 615 | symlink = "", | ||
| 616 | symlink_open = "", | ||
| 617 | arrow_open = "", | ||
| 618 | arrow_closed = "", | ||
| 619 | }, | ||
| 620 | git = { | ||
| 621 | unstaged = "✗", | ||
| 622 | staged = "✓", | ||
| 623 | unmerged = "", | ||
| 624 | renamed = "➜", | ||
| 625 | untracked = "★", | ||
| 626 | deleted = "", | ||
| 627 | ignored = "◌", | ||
| 628 | }, | ||
| 629 | }, | ||
| 630 | }, | ||
| 631 | }, | ||
| 632 | } | ||
| 633 | -- }}} | ||
| 634 | vim.keymap.set( | ||
| 635 | "n", | ||
| 636 | "<C-n>", | ||
| 637 | "<cmd>NvimTreeToggle<CR>", | ||
| 638 | { desc = "nvimtree toggle window" } | ||
| 639 | ) | ||
| 640 | vim.keymap.set( | ||
| 641 | "n", | ||
| 642 | "<leader>e", | ||
| 643 | "<cmd>NvimTreeFocus<CR>", | ||
| 644 | { desc = "nvimtree focus window" } | ||
| 645 | ) | ||
| 646 | |||
| 647 | -- }}} | ||
| 648 | -- bufferline {{{ | ||
| 649 | add { | ||
| 650 | source = "akinsho/bufferline.nvim", | ||
| 651 | depends = { | ||
| 652 | 'nvim-tree/nvim-web-devicons', -- OPTIONAL: for file icons | ||
| 653 | }, | ||
| 654 | } | ||
| 655 | require("bufferline").setup{ | ||
| 656 | options = { | ||
| 657 | themable = true, | ||
| 658 | buffer_close_icon = '', | ||
| 659 | close_icon = '', | ||
| 660 | groups = { | ||
| 661 | items = { | ||
| 662 | require('bufferline.groups').builtin.pinned:with({ icon = "" }) | ||
| 663 | } | ||
| 664 | } | ||
| 665 | }, | ||
| 666 | } | ||
| 667 | |||
| 668 | -- Since mini.base16 override highlight for bufferline | ||
| 669 | -- Set it directly | ||
| 670 | vim.cmd('hi BufferLineTabSelected guibg=#f85e84') | ||
| 671 | vim.cmd('hi BufferLineTab guibg=Gray') | ||
| 672 | |||
| 673 | -- keymaps {{{ | ||
| 674 | for i = 1, 9, 1 do | ||
| 675 | vim.keymap.set("n", string.format("<A-%s>", i), function() | ||
| 676 | vim.cmd("BufferLineGoToBuffer "..i) | ||
| 677 | end, {silent = true}) | ||
| 678 | end | ||
| 679 | local opts = { noremap = true, silent = true } | ||
| 680 | vim.keymap.set('n', '<TAB>', '<Cmd>BufferLineCyclePrev<CR>', opts) | ||
| 681 | vim.keymap.set('n', '<S-TAB>', '<Cmd>BufferLineCycleNext<CR>', opts) | ||
| 682 | vim.keymap.set('n', '<M-h>', '<Cmd>BufferLineMovePrev<CR>', opts) | ||
| 683 | vim.keymap.set('n', '<M-l>', '<Cmd>BufferLineMoveNext<CR>', opts) | ||
| 684 | vim.keymap.set('n', '<M-p>', '<Cmd>BufferLineTogglePin<CR>', opts) | ||
| 685 | -- }}} | ||
| 686 | --}}} | ||