nixpkgs/home/programs/neovim/config/functions.vim
Daniel Siepmann 51cb2c9ad3
Migrate Neovim CtrlP to FinderF
Way faster and matches my own preferences. Has a preview and pop up in
the center of the screen.
Comes with many other modes like colorscheme, help, line, etc.
diff --git a/home/programs/neovim.nix b/home/programs/neovim.nix
index 55783de..dda525c 100644
--- a/home/programs/neovim.nix
+++ b/home/programs/neovim.nix
@@ -239,8 +239,8 @@ in {
     }

     {
-      plugin = ctrlp-vim;
-      config = pkgs.lib.fileContents ./neovim/plugins/ctrlp.vim;
+      plugin = LeaderF;
+      config = pkgs.lib.fileContents ./neovim/plugins/leaderf.vim;
     }

     # Syntax
diff --git a/home/programs/neovim/config/functions.vim b/home/programs/neovim/config/functions.vim
index 24e0c00..fea577b 100644
--- a/home/programs/neovim/config/functions.vim
+++ b/home/programs/neovim/config/functions.vim
@@ -113,7 +113,7 @@ function! StartProfiling()
     execute(':profile file *')
 endfunc

-function! CtrlPCurrentComposerPackage()
+function! LeaderfCurrentComposerPackage()
     let l:filePath = split(expand('%:p:h'), '/')

     while !filereadable('/' . join(l:filePath + ['composer.json'], '/')) && len(l:filePath)
@@ -121,7 +121,7 @@ function! CtrlPCurrentComposerPackage()
     endwhile

     if len(l:filePath)
-        execute(':CtrlP /' . join(l:filePath, '/'))
+        execute(':LeaderfFile /' . join(l:filePath, '/'))
     else
         echom 'No composer package detected.'
     endif
diff --git a/home/programs/neovim/config/mappings.vim b/home/programs/neovim/config/mappings.vim
index bd3aee9..7b7ad7d 100644
--- a/home/programs/neovim/config/mappings.vim
+++ b/home/programs/neovim/config/mappings.vim
@@ -10,10 +10,11 @@ nnoremap <leader>v :set paste!<cr>
 nnoremap <leader>nh :nohlsearch<cr>

 " Configure navigation, e.g. go to buffer, file, ...
-nnoremap <leader>p :CtrlP<cr>
-nnoremap <leader>l :CtrlPBuffer<cr>
-nnoremap <leader>r :CtrlPBufTag<cr>
-nnoremap <silent> <leader>c :call CtrlPCurrentComposerPackage()<cr>
+nnoremap <leader>pp :LeaderfSelf<cr>
+nnoremap <leader>pf :LeaderfFile<cr>
+nnoremap <leader>pb :LeaderfBuffer<cr>
+nnoremap <leader>pt :LeaderfBufTag<cr>
+nnoremap <silent> <leader>pc :call LeaderfCurrentComposerPackage()<cr>

 nnoremap <leader>k :NERDTreeToggle<cr>
 nnoremap <leader>f :NERDTreeFind<cr>
diff --git a/home/programs/neovim/plugins/ctrlp.vim b/home/programs/neovim/plugins/ctrlp.vim
deleted file mode 100644
index c45b87e..0000000
--- a/home/programs/neovim/plugins/ctrlp.vim
+++ /dev/null
@@ -1,26 +0,0 @@
-let g:ctrlp_follow_symlinks = 2
-" Default to regex mode
-let g:ctrlp_regexp = 1
-let g:ctrlp_match_window = 'top,order:ttb,min:1,max:10'
-" let g:ctrlp_open_new_file = '0'
-" let g:ctrlp_lazy_update = 1
-let g:ctrlp_show_hidden = 1
-
-let g:ctrlp_types = ['fil', 'buf', 'buftag']
-
-let g:ctrlp_working_path_mode = 'w'
-let g:ctrlp_max_files = 0
-let g:ctrlp_clear_cache_on_exit = 0
-
-" Configure completion for tags in buffer,
-" e.g. configure which kinds to complete for css.
-let g:ctrlp_buftag_types = {
-  \ 'css' : '--css-types=vcit',
-  \ 'typescript' : '--typescript-types=cnfvmitesod',
-  \ 'xml' : '--xml-types=ci',
-  \ 'rst' : '--reStructuredText-types=csSt',
-  \ 'markdown' : '--Markdown-types=csStT',
-  \ 'fluid' : '--xml-types=si',
-  \ 'apache' : '--apache-types=s',
-  \ 'yaml' : '--yaml-types=t',
-\ }
diff --git a/home/programs/neovim/plugins/leaderf.vim b/home/programs/neovim/plugins/leaderf.vim
new file mode 100644
index 0000000..7627b07
--- /dev/null
+++ b/home/programs/neovim/plugins/leaderf.vim
@@ -0,0 +1,213 @@
+let g:Lf_WorkingDirectoryMode = 'c'
+
+let g:Lf_FollowLinks = 1
+let g:Lf_ShowHidden = 1
+
+let g:Lf_WindowPosition = 'popup'
+let g:Lf_HideHelp = 1
+
+let g:Lf_GtagsAutoUpdate = 0
+
+let g:Lf_IgnoreCurrentBufferName = 1
+
+let g:Lf_ShowDevIcons = 0
+
+" TODO: Try to port to existing colorscheme, does it work with load order?
+let g:Lf_PopupPalette = {
+    \  'dark': {
+    \   'Lf_hl_popup_inputText': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'blue',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_window': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_blank': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_cursor': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_prompt': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_spin': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_normalMode': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_inputMode': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_category': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_nameOnlyMode': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_fullPathMode': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_fuzzyMode': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_regexMode': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_cwd': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_lineInfo': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_popup_total': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_cursorline': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': '235',
+    \   },
+    \   'Lf_hl_selection': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_match0': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'blue',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_match1': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'blue',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_match2': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'blue',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_match3': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'blue',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_match4': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'blue',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_match': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'blue',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_lineLocation': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_previewTitle': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_winNumber': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_winIndicators': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_winModified': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_winNomodifiable': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_winDirname': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_quickfixFileName': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_quickfixLineNumber': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_quickfixColumnNumber': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_loclistFileName': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_loclistLineNumber': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \   'Lf_hl_loclistColumnNumber': {
+    \       'cterm': 'none',
+    \       'ctermfg': 'none',
+    \       'ctermbg': 'none',
+    \   },
+    \  }
+    \ }
+
+let g:Lf_PreviewInPopup = 1
+let g:Lf_PreviewHorizontalPosition = 'center'
+let g:Lf_PreviewCode = 0
+let g:Lf_PreviewResult = {
+    \ 'File': 1,
+    \ 'Buffer': 1,
+    \ 'BufTag': 1,
+    \}
2022-03-16 09:05:13 +01:00

131 lines
3.5 KiB
VimL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

" Function to test a specific URL.
" Will output the response + response headers for the given URL.
function! TestUrl(url)
execute ":!wget -q -O - --no-check-certificate --server-response '" . a:url . "'"
endfunction
" Copy the current file name to clipboard
function! CopyFileName()
execute ':let @+ = expand("%:t")'
endfunction
" Copy the current relative file path to clipboard
function! CopyRelativeFilePath()
execute ':let @+ = expand("%")'
endfunction
" Copy the current full file path to clipboard
function! CopyFullFilePath()
execute ':let @+ = expand("%:p")'
endfunction
" Remove trailing whitespace
function! StripTrailingWhitespace()
execute ':%s/\s\+$//e'
endfunction
function! RemoveEmptyLines()
execute ':g/^\s*$/d'
endfunction
function! ReplaceLineBreaks()
execute ':%s/
/\r/g'
endfunction
function! SynStack()
if !exists("*synstack")
return
endif
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc
function! <SID>SynStack()
if !exists("*synstack")
return
endif
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc
function! StartDebugging()
call DebuggingConfiguration()
VdebugStart
endfunc
function! HiColors()
let num = 255
while num >= 0
exec 'hi col_'.num.' ctermbg='.num.' ctermfg=white'
exec 'syn match col_'.num.' "ctermbg='.num.':...." containedIn=ALL'
call append(0, 'ctermbg='.num.':....')
let num = num - 1
endwhile
endfunction
" Author: http://vimrcfu.com/snippet/116
function! Reg()
reg
echo "Register: "
let char = nr2char(getchar())
if char != "\<Esc>"
execute "normal! \"".char."p"
endif
redraw
endfunction
function! SortParagraph()
execute ":normal! vip:'<,'>sort\<esc>"
endfunction
" Generate .. _: anchor for headline. Cursor have to be on line with headline.
function! SphinxAnchor()
normal yyOPI.. _lguuA:V:s/ /-/g
llr jj
endfunction
function! OpenUrl()
if !exists('b:url')
let b:commandToOpen = exists('b:commandToOpen') ? b:commandToOpen : 'open'
let b:domain = exists('b:domain') ? b:domain : 'http://phptraining.local'
let b:documentRoot = exists('b:documentRoot') ? b:documentRoot : getcwd()
let b:path = exists('b:path') ? b:path : expand("%:p")
let b:url = substitute(b:path, b:documentRoot, b:domain, "")
endif
silent! execute "!" . b:commandToOpen . " " . b:url
endfunction
nnoremap <leader>t :call OpenUrl()<cr>
function! ConvertToTestFilename()
let l:string = @r
let l:testName = system('php /home/daniels/Projects/company/emoto2/reuterTypo3/htdocs/test.php "' . l:string . '"')
execute(':normal i' . l:testName)
endfunction
function! OpenPHPUnitTestFilename()
let l:fileExtension = expand('%:e')
let l:filePath = expand('%:r:s?Classes?Tests/Unit?')
execute(':vsplit ' . l:filePath . 'Test.' . l:fileExtension)
execute(':normal ]]')
endfunction
function! StartProfiling()
execute(':profile start profile.log')
execute(':profile func *')
execute(':profile file *')
endfunc
function! LeaderfCurrentComposerPackage()
let l:filePath = split(expand('%:p:h'), '/')
while !filereadable('/' . join(l:filePath + ['composer.json'], '/')) && len(l:filePath)
let l:filePath = l:filePath[:-2]
endwhile
if len(l:filePath)
execute(':LeaderfFile /' . join(l:filePath, '/'))
else
echom 'No composer package detected.'
endif
endfunc
command! -nargs=0 Reg call Reg()