diff --git a/nvim/.config/nvim/after/plugin/fzf-lua.lua b/nvim/.config/nvim/after/plugin/fzf-lua.lua new file mode 100644 index 0000000..c15d4c3 --- /dev/null +++ b/nvim/.config/nvim/after/plugin/fzf-lua.lua @@ -0,0 +1,270 @@ +local actions = require "fzf-lua.actions" +local remap = vim.api.nvim_set_keymap +local opts = { noremap=true, unique=true, silent=true } + +require'fzf-lua'.setup { + fzf_bin = "fzf-tmux", + fzf_tmux_opts = { ["-p"] = "90%,90%" }, + winopts = { + height = 0.90, + width = 0.90, + row = 0.35, + col = 0.50, + border = { '╭', '─', '╮', '│', '╯', '─', '╰', '│' }, + fullscreen = false, + preview = { + default = 'bat' , + border = 'border' , + wrap = 'wrap' , + hidden = 'nohidden' , + vertical = 'down:45%' , + horizontal = 'right:60%', + layout = 'flex' , + flip_columns = 120 , + title = false , + scrollbar = false , + scrolloff = '-2' , + scrollchars = {'█', '' } , + delay = 100 , + winopts = { + number = true , + relativenumber = false , + cursorline = true , + cursorlineopt = 'both' , + cursorcolumn = false , + signcolumn = 'no' , + list = false , + foldenable = false , + foldmethod = 'manual', + }, + }, + }, + keymap = { + fzf = { + ["Ctrl-d"] = "half-page-down" , + ["Ctrl-u"] = "half-page-up" , + ["Ctrl-a"] = "beginning-of-line", + ["Ctrl-e"] = "end-of-line" , + ["Ctrl-n"] = "preview-down" , + ["Ctrl-p"] = "preview-up" , + ["Ctrl-f"] = "preview-page-down", + ["Ctrl-b"] = "preview-page-up" , + ["Ctrl-z"] = "abort" , + ["Ctrl-t"] = "toggle-all" , + }, + }, + actions = { + files = { + ["default"] = actions.file_edit_or_qf, + ["Ctrl-s"] = actions.file_split , + ["Ctrl-v"] = actions.file_vsplit , + ["Ctrl-t"] = actions.file_tabedit , + ["Ctrl-q"] = actions.file_sel_to_qf , + }, + buffers = { + ["default"] = actions.buf_edit , + ["Ctrl-s"] = actions.buf_split , + ["Ctrl-v"] = actions.buf_vsplit , + ["Ctrl-t"] = actions.buf_tabedit, + } + }, + fzf_opts = { + ['--ansi'] = '' , + ['--prompt'] = '> ' , + ['--info'] = 'inline' , + ['--height'] = '100%' , + ['--layout'] = 'reverse', + ["--border"] = "rounded", + ["--no-separator"] = "" , + }, + previewers = { + bat = { + theme = 'Monokai Extended Bright', + }, + }, + files = { + multiprocess = true , + git_icons = false, + file_icons = false, + color_icons = false, + }, + git = { + files = { + prompt = 'GitFiles❯ ', + cmd = 'git ls-files --exclude-standard', + multiprocess = true , + git_icons = false, + file_icons = false, + color_icons = false, + }, + status = { + prompt = 'GitStatus❯ ', + cmd = "git status -s", + previewer = "git_diff", + file_icons = false, + git_icons = false, + color_icons = false, + actions = { + ["right"] = { actions.git_unstage, actions.resume }, + ["left"] = { actions.git_stage, actions.resume }, + }, + }, + commits = { + prompt = 'Commits❯ ', + cmd = "git log --decorate --pretty=oneline --abbrev-commit --color", + preview = "git show --color=always {1}", + actions = { + ["default"] = actions.git_buf_split , + ["Ctrl-s"] = actions.git_buf_split , + ["Ctrl-v"] = actions.git_buf_vsplit , + ["Ctrl-t"] = actions.git_buf_tabedit, + }, + }, + bcommits = { + prompt = 'BCommits❯ ', + cmd = "git log --decorate --pretty=oneline --abbrev-commit --color", + preview = "git show --color=always {1}", + actions = { + ["default"] = actions.git_buf_split , + ["Ctrl-s"] = actions.git_buf_split , + ["Ctrl-v"] = actions.git_buf_vsplit , + ["Ctrl-t"] = actions.git_buf_tabedit, + }, + }, + branches = { + prompt = 'Branches❯ ', + cmd = "git branch --all --color", + preview = "git log --decorate --graph --pretty=oneline --abbrev-commit --color {1}", + actions = { + ["default"] = actions.git_switch, + }, + }, + stash = { + prompt = 'Stash> ', + cmd = "git --no-pager stash list", + preview = "git --no-pager stash show --patch --color {1}", + actions = { + ["default"] = actions.git_stash_apply, + ["ctrl-x"] = { actions.git_stash_drop, actions.resume }, + }, + }, + }, + grep = { + prompt = 'Rg❯ ' , + input_prompt = 'Grep For❯ ', + multiprocess = true , + git_icons = false , + file_icons = false , + color_icons = false , + }, + args = { + prompt = 'Args❯ ', + files_only = true , + actions = { ["Ctrl-x"] = actions.arg_del } + }, + oldfiles = { + prompt = 'History❯ ', + cwd_only = false , + }, + buffers = { + prompt = 'Buffers❯ ', + file_icons = false , + color_icons = false , + sort_lastused = true , + actions = { + ["Ctrl-x"] = { actions.buf_del, actions.resume }, + } + }, + tabs = { + prompt = 'Tabs❯ ', + tab_title = "Tab" , + tab_marker = "<<" , + file_icons = false , + color_icons = false , + actions = { + ["default"] = actions.buf_switch, + ["Ctrl-x"] = { actions.buf_del, actions.resume }, + }, + }, + lines = { + previewer = "builtin", + prompt = 'Lines❯ ', + show_unlisted = false , + no_term_buffers = true , + }, + blines = { + previewer = "builtin" , + prompt = 'BLines❯ ', + show_unlisted = false , + no_term_buffers = true , + }, + quickfix = { + file_icons = false, + git_icons = false, + }, + lsp = { + prompt_postfix = 'Lsp❯ ', + cwd_only = false , + async_or_timeout = 5000 , + file_icons = false , + git_icons = false , + }, + diagnostics ={ + prompt = 'Diagnostics❯ ', + cwd_only = false , + file_icons = false , + git_icons = false , + diag_icons = false , + icon_padding = '' , + }, + manpages = { previewer = { _ctor = false } }, +} + +-- Buffers and Files +remap('n', 'b' , ':FzfLua buffers' , opts) +remap('n', 'B' , ':FzfLua oldfiles' , opts) +remap('n', 'fF', ':FzfLua files' , opts) +remap('n', 'fl', ':FzfLua blines' , opts) +remap('n', 'fL', ':FzfLua lines' , opts) +remap('n', 'fq', ':cclose:FzfLua quickfix' , opts) +remap('n', 'fQ', ':lclose:FzfLua loclist' , opts) + +-- Git +remap('n', 'ff', ':FzfLua git_files' , opts) +remap('n', '/' , ':FzfLua git_status' , opts) +remap('n', 'fb', ':FzfLua git_branches' , opts) +remap('n', 'fc', ':FzfLua git_bcommits' , opts) +remap('n', 'fC', ':FzfLua git_commits' , opts) +remap('n', 'ft', ':FzfLua git_stash' , opts) + +-- Grep +remap('n', 'fg' , ':FzfLua grep' , opts) +remap('n', 'f/' , ':FzfLua live_grep' , opts) +remap('n', 'f\\', ':FzfLua live_grep_resume' , opts) +remap('n', 'fs' , ':FzfLua grep_cword' , opts) +remap('n', 'fS' , ':FzfLua grep_cWORD' , opts) +remap('x', 'fs' , ':FzfLua grep_visual' , opts) +remap('n', 'fr' , ':FzfLua grep_last' , opts) +remap('n', 'fR' , ':FzfLua live_grep_glob' , opts) + +-- Misc +remap('n', 'fh', ':FzfLua command_history' , opts) +remap('n', 'fH', ':FzfLua search_history' , opts) +remap('n', 'fm', ':FzfLua marks' , opts) +remap('n', 'fM', ':FzfLua man_pages' , opts) +remap('n', 'fo', ':FzfLua changes' , opts) +remap('n', 'fO', ':FzfLua jumps' , opts) +remap('n', 'fk', ':FzfLua keymaps' , opts) + +-- LSP +remap('n', 'lr', ':FzfLua lsp_references' , opts) +remap('n', 'ld', ':FzfLua lsp_definitions' , opts) +remap('n', 'lD', ':FzfLua lsp_declarations' , opts) +remap('n', 'lt', ':FzfLua lsp_typedefs' , opts) +remap('n', 'li', ':FzfLua lsp_implementations' , opts) +remap('n', 'ls', ':FzfLua lsp_document_symbols' , opts) +remap('n', 'lw', ':FzfLua lsp_workspace_symbols' , opts) +remap('n', 'lW', ':FzfLua lsp_live_workspace_symbols', opts) +remap('n', 'la', ':FzfLua lsp_code_actions' , opts) +remap('n', 'le', ':FzfLua lsp_document_diagnostics' , opts) +remap('n', 'lE', ':FzfLua lsp_workspace_diagnostics' , opts) diff --git a/nvim/.config/nvim/after/plugin/fzf-preview.lua b/nvim/.config/nvim/after/plugin/fzf-preview.lua deleted file mode 100644 index d6c37af..0000000 --- a/nvim/.config/nvim/after/plugin/fzf-preview.lua +++ /dev/null @@ -1,12 +0,0 @@ -local remap = vim.keymap.set - -remap('n', 'fg', ':FZFGGrep', { noremap = true }) -remap('n', 'fG', ':FZFGrep', { noremap = true }) -remap('n', 'fl', ':FZFBLines', { noremap = true }) -remap('n', 'f\\', ':FZFRg', { noremap = true }) -remap('n', 'fT', ':FZFTags', { noremap = true }) -remap('n', 'fq', ':cclose:FZFQuickFix', { noremap = true }) -remap('n', 'fQ', ':lclose:FZFLocList', { noremap = true }) -remap('n', 'fS', ':FZFRg ', { noremap = true }) -remap('x', 'fS', '"zy:FZFRg z', { noremap = true }) -remap('n', 'ft', ':FZFTags ', { noremap = true }) diff --git a/nvim/.config/nvim/after/plugin/fzf.vim b/nvim/.config/nvim/after/plugin/fzf.vim deleted file mode 100644 index 58eec69..0000000 --- a/nvim/.config/nvim/after/plugin/fzf.vim +++ /dev/null @@ -1,64 +0,0 @@ -" See https://github.com/junegunn/fzf/blob/master/README-VIM.md -" An action can be a reference to a function that processes selected lines -function! s:build_quickfix_list(lines) - call setqflist([], ' ', { 'title': 'FZF Selected', 'items': map(copy(a:lines), '{ "filename": v:val }') }) - copen - cc -endfunction - -" https://github.com/junegunn/fzf.vim/pull/733 -function! s:list_buffers() - redir => list - silent ls - redir END - return split(list, "\n") -endfunction - -function! s:delete_buffers(lines) - execute 'bwipeout' join(map(a:lines, {_, line -> split(line)[0]})) -endfunction - -command! BD call fzf#run(fzf#wrap({ - \ 'source': s:list_buffers(), - \ 'sink*': { lines -> s:delete_buffers(lines) }, - \ 'options': '--multi --reverse --bind ctrl-a:select-all+accept' -\ })) - -let g:fzf_action = { -\ 'ctrl-q': function('s:build_quickfix_list'), -\ 'ctrl-t': 'tab split', -\ 'ctrl-x': 'split', -\ 'ctrl-v': 'vsplit', -\ } - -let $FZF_DEFAULT_OPTS = '--layout=reverse --bind "Ctrl-d:half-page-down,Ctrl-u:half-page-up,Ctrl-n:preview-down,Ctrl-p:preview-up,Ctrl-f:preview-page-down,Ctrl-b:preview-page-up,ctrl-a:select-all+accept"' - -if exists('$TMUX') - let g:fzf_layout = { 'tmux': '-p90%,90%' } -else - let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.9 }, } -endif - -nnoremap b :Buffers -nnoremap B :History -nnoremap / :GFiles? -nnoremap ff :GFiles -nnoremap fF :Files -nnoremap fL :Lines -nnoremap fc :BCommits -xnoremap fc :BCommits -nnoremap fC :Commits -nnoremap fh :History: -nnoremap fH :History/ -nnoremap fm :Marks -nnoremap fo :Locate -nnoremap fk :Maps -nnoremap f/ :Rg -nnoremap fs :Rg -xnoremap fs "zy:Rg z -nnoremap fw :BD - -imap (fzf-complete-word) -imap (fzf-complete-path) -imap (fzf-complete-file) -imap (fzf-complete-line) diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index 100566f..9f2f84a 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -3,8 +3,7 @@ vim.cmd 'packadd cfilter' require "paq" { 'phaazon/hop.nvim' , - 'junegunn/fzf' , - 'junegunn/fzf.vim' , + 'ibhagwan/fzf-lua' , 'rmagatti/auto-session' , 'dcampos/nvim-snippy' , 'honza/vim-snippets' , @@ -12,7 +11,6 @@ require "paq" { 'tpope/vim-fugitive' , 'SanchayanMaity/gitlinker.nvim' , 'vim-utils/vim-husk' , - 'chengzeyi/fzf-preview.vim' , 'https://gitlab.com/yorickpeterse/nvim-pqf', 'wellle/targets.vim' , 'tpope/vim-surround' ,