diff options
| author | Luke Smith <luke@lukesmith.xyz> | 2018-11-05 19:57:28 -0500 |
|---|---|---|
| committer | Luke Smith <luke@lukesmith.xyz> | 2018-11-05 19:57:28 -0500 |
| commit | 7e63e40b3a47e3f77575ec0e96532855e394dfab (patch) | |
| tree | 32fff5fdd518db74acf8a9e2221b6950042dd127 /.vim/plugin | |
| parent | 4216ef667efedcb8e08c97075ce8815fbfbbac91 (diff) | |
| download | eibhear-7e63e40b3a47e3f77575ec0e96532855e394dfab.tar.gz eibhear-7e63e40b3a47e3f77575ec0e96532855e394dfab.tar.zst eibhear-7e63e40b3a47e3f77575ec0e96532855e394dfab.zip | |
switch to plugged for vim plugins
Diffstat (limited to '.vim/plugin')
| -rw-r--r-- | .vim/plugin/dragvisuals.vim | 345 | ||||
| -rw-r--r-- | .vim/plugin/vmath.vim | 152 |
2 files changed, 0 insertions, 497 deletions
diff --git a/.vim/plugin/dragvisuals.vim b/.vim/plugin/dragvisuals.vim deleted file mode 100644 index 12c4f5d..0000000 --- a/.vim/plugin/dragvisuals.vim +++ /dev/null @@ -1,345 +0,0 @@ -" Vim global plugin for dragging virtual blocks -" Last change: Tue Jul 24 07:19:35 EST 2012 -" Maintainer: Damian Conway -" License: This file is placed in the public domain. - -"######################################################################### -"## ## -"## Add the following (uncommented) to your .vimrc... ## -"## ## -"## runtime plugin/dragvisuals.vim ## -"## ## -"## vmap <expr> <LEFT> DVB_Drag('left') ## -"## vmap <expr> <RIGHT> DVB_Drag('right') ## -"## vmap <expr> <DOWN> DVB_Drag('down') ## -"## vmap <expr> <UP> DVB_Drag('up') ## -"## vmap <expr> D DVB_Duplicate() ## -"## ## -"## " Remove any introduced trailing whitespace after moving... ## -"## let g:DVB_TrimWS = 1 ## -"## ## -"## Or, if you use the arrow keys for normal motions, choose ## -"## four other keys for block dragging. For example: ## -"## ## -"## vmap <expr> h DVB_Drag('left') ## -"## vmap <expr> l DVB_Drag('right') ## -"## vmap <expr> j DVB_Drag('down') ## -"## vmap <expr> k DVB_Drag('up') ## -"## ## -"## Or: ## -"## ## -"## vmap <expr> <S-LEFT> DVB_Drag('left') ## -"## vmap <expr> <S-RIGHT> DVB_Drag('right') ## -"## vmap <expr> <S-DOWN> DVB_Drag('down') ## -"## vmap <expr> <S-UP> DVB_Drag('up') ## -"## ## -"## Or even: ## -"## ## -"## vmap <expr> <LEFT><LEFT> DVB_Drag('left') ## -"## vmap <expr> <RIGHT><RIGHT> DVB_Drag('right') ## -"## vmap <expr> <DOWN><DOWN> DVB_Drag('down') ## -"## vmap <expr> <UP><UP> DVB_Drag('up') ## -"## ## -"######################################################################### - - -" If already loaded, we're done... -if exists("loaded_dragvirtualblocks") - finish -endif -let loaded_dragvirtualblocks = 1 - -" Preserve external compatibility options, then enable full vim compatibility... -let s:save_cpo = &cpo -set cpo&vim - -"====[ Implementation ]==================================== - -" Toggle this to stop trimming on drags... -if !exists('g:DVB_TrimWS') - let g:DVB_TrimWS = 1 -endif - -function! DVB_Drag (dir) - " No-op in Visual mode... - if mode() ==# 'v' - return "\<ESC>gv" - - " Do Visual Line drag indirectly via temporary nmap - " (to ensure we have access to block position data)... - elseif mode() ==# 'V' - " Set up a temporary convenience... - exec "nnoremap <silent><expr><buffer> M \<SID>Drag_Lines('".a:dir."')" - - " Return instructions to implement the move and reset selection... - return '"vyM' - - " Otherwise do Visual Block drag indirectly via temporary nmap - " (to ensure we have access to block position data)... - else - " Set up a temporary convenience... - exec "nnoremap <silent><expr><buffer> M \<SID>Drag_Block('".a:dir."')" - - " Return instructions to implement the move and reset selection... - return '"vyM' - endif -endfunction - -" Duplicate selected block and place to the right... -function! DVB_Duplicate () - exec "nnoremap <silent><expr><buffer> M \<SID>DuplicateBlock()" - return '"vyM' -endfunction - -function! s:DuplicateBlock () - nunmap <buffer> M - " Locate block boundaries... - let [buf_left, line_left, col_left, offset_left ] = getpos("'<") - let [buf_right, line_right, col_right, offset_right] = getpos("'>") - - " Identify special '$' blocks... - let dollar_block = 0 - let start_col = min([col_left+offset_left, col_right+offset_right]) - let end_col = max([col_left+offset_left, col_right+offset_right]) - let visual_width = end_col - start_col + 1 - for visual_line in split(getreg("v"),"\n") - if strlen(visual_line) > visual_width - let dollar_block = 1 - let visual_width = strlen(visual_line) - endif - endfor - let square_up = (dollar_block ? (start_col+visual_width-2).'|' : '') - - set virtualedit=all - return 'gv'.square_up.'yPgv' - \. (visual_width-dollar_block) . 'lo' . (visual_width-dollar_block) . 'l' - \. "y:set virtualedit=block\<CR>gv" - \. (dollar_block ? 'o$' : '') -endfunction - - -" Kludge to hide change reporting inside implementation... -let s:NO_REPORT = ":let b:DVB_report=&report\<CR>:let &report=1000000000\<CR>" -let s:PREV_REPORT = ":let &report = b:DVB_report\<CR>" - - -" Drag in specified direction in Visual Line mode... -function! s:Drag_Lines (dir) - " Clean up the temporary convenience... - nunmap <buffer> M - - " Locate block being shifted... - let [buf_left, line_left, col_left, offset_left ] = getpos("'<") - let [buf_right, line_right, col_right, offset_right] = getpos("'>") - - " Drag entire lines left if possible... - if a:dir == 'left' - " Are all lines indented at least one space??? - let lines = getline(line_left, line_right) - let all_indented = match(lines, '^[^ ]') == -1 - nohlsearch - - " If can't trim one space from start of each line, be a no-op... - if !all_indented - return 'gv' - - " Otherwise drag left by removing one space from start of each line... - else - return s:NO_REPORT - \ . "gv:s/^ //\<CR>" - \ . s:PREV_REPORT - \ . "gv" - endif - - " To drag entire lines right, add a space in column 1... - elseif a:dir == 'right' - return s:NO_REPORT - \ . "gv:s/^/ /\<CR>:nohlsearch\<CR>" - \ . s:PREV_REPORT - \ . "gv" - - " To drag entire lines upwards... - elseif a:dir == 'up' - let EOF = line('$') - - " Can't drag up if at first line... - if line_left == 1 || line_right == 1 - return 'gv' - - " Needs special handling at EOF (because cursor moves up on delete)... - elseif line_left == EOF || line_right == EOF - let height = line_right - line_left - let select_extra = height ? height . 'j' : "" - return s:NO_REPORT - \ . 'gvxP' - \ . s:PREV_REPORT - \ . 'V' . select_extra - - " Otherwise just cut-move-paste-reselect... - else - let height = line_right - line_left - let select_extra = height ? height . 'j' : "" - return s:NO_REPORT - \ . 'gvxkP' - \ . s:PREV_REPORT - \ . 'V' . select_extra - endif - - " To drag entire lines downwards... - elseif a:dir == 'down' - let EOF = line('$') - - " This is how much extra we're going to have to reselect... - let height = line_right - line_left - let select_extra = height ? height . 'j' : "" - - " Needs special handling at EOF (to push selection down into new space)... - if line_left == EOF || line_right == EOF - return "O\<ESC>gv" - - " Otherwise, just cut-move-paste-reselect... - else - return s:NO_REPORT - \ . 'gvxp' - \ . s:PREV_REPORT - \ . 'V' . select_extra - endif - - endif -endfunction - -" Drag in specified direction in Visual Block mode... -function! s:Drag_Block (dir) - " Clean up the temporary convenience... - nunmap <buffer> M - - " Locate block being shifted... - let [buf_left, line_left, col_left, offset_left ] = getpos("'<") - let [buf_right, line_right, col_right, offset_right] = getpos("'>") - - " Identify special '$' blocks... - let dollar_block = 0 - let start_col = min([col_left+offset_left, col_right+offset_right]) - let end_col = max([col_left+offset_left, col_right+offset_right]) - let visual_width = end_col - start_col + 1 - for visual_line in split(getreg("v"),"\n") - if strlen(visual_line) > visual_width - let dollar_block = 1 - let visual_width = strlen(visual_line) - endif - endfor - let square_up = (dollar_block ? (start_col+visual_width-2).'|' : '') - - " Drag left... - if a:dir == 'left' - "Can't drag left at left margin... - if col_left == 1 || col_right == 1 - return 'gv' - - " Otherwise reposition one column left (and optionally trim any whitespace)... - elseif g:DVB_TrimWS - " May need to be able to temporarily step past EOL... - let prev_ve = &virtualedit - set virtualedit=all - - " Are we moving past other text??? - let square_up_final = "" - if dollar_block - let lines = getline(line_left, line_right) - if match(lines, '^.\{'.(start_col-2).'}\S') >= 0 - let dollar_block = 0 - let square_up_final = (start_col+visual_width-3).'|' - endif - endif - - let vcol = start_col - 2 - return 'gv'.square_up.'xhP' - \ . s:NO_REPORT - \ . "gvhoho:s/\\s*$//\<CR>gv\<ESC>" - \ . ':set virtualedit=' . prev_ve . "\<CR>" - \ . s:PREV_REPORT - \ . ":nohlsearch\<CR>gv" - \ . (dollar_block ? '$' : square_up_final ) - else - return 'gv'.square_up.'xhPgvhoho' - endif - - " Drag right... - elseif a:dir == 'right' - " May need to be able to temporarily step past EOL... - let prev_ve = &virtualedit - set virtualedit=all - - " Reposition block one column to the right... - if g:DVB_TrimWS - let vcol = start_col - return 'gv'.square_up.'xp' - \ . s:NO_REPORT - \ . "gvlolo" - \ . ":s/\\s*$//\<CR>gv\<ESC>" - \ . ':set virtualedit=' . prev_ve . "\<CR>" - \ . s:PREV_REPORT - \ . (dollar_block ? 'gv$' : 'gv') - else - return 'gv'.square_up.'xp:set virtualedit=' . prev_ve . "\<CR>gvlolo" - endif - - " Drag upwards... - elseif a:dir == 'up' - " Can't drag upwards at top margin... - if line_left == 1 || line_right == 1 - return 'gv' - endif - - " May need to be able to temporarily step past EOL... - let prev_ve = &virtualedit - set virtualedit=all - - " If trimming whitespace, jump to just below block to do it... - if g:DVB_TrimWS - let height = line_right - line_left + 1 - return 'gv'.square_up.'xkPgvkoko"vy' - \ . height - \ . 'j:s/\s*$//' - \ . "\<CR>:nohlsearch\<CR>:set virtualedit=" - \ . prev_ve - \ . "\<CR>gv" - \ . (dollar_block ? '$' : '') - - " Otherwise just move and reselect... - else - return 'gv'.square_up.'xkPgvkoko"vy:set virtualedit=' - \ . prev_ve - \ . "\<CR>gv" - \ . (dollar_block ? '$' : '') - endif - - " Drag downwards... - elseif a:dir == 'down' - " May need to be able to temporarily step past EOL... - let prev_ve = &virtualedit - set virtualedit=all - - " If trimming whitespace, move to just above block to do it... - if g:DVB_TrimWS - return 'gv'.square_up.'xjPgvjojo"vyk:s/\s*$//' - \ . "\<CR>:nohlsearch\<CR>:set virtualedit=" - \ . prev_ve - \ . "\<CR>gv" - \ . (dollar_block ? '$' : '') - - " Otherwise just move and reselect... - else - return 'gv'.square_up.'xjPgvjojo"vy' - \ . "\<CR>:set virtualedit=" - \ . prev_ve - \ . "\<CR>gv" - \ . (dollar_block ? '$' : '') - endif - endif -endfunction - - -" Restore previous external compatibility options -let &cpo = s:save_cpo - diff --git a/.vim/plugin/vmath.vim b/.vim/plugin/vmath.vim deleted file mode 100644 index 0e10044..0000000 --- a/.vim/plugin/vmath.vim +++ /dev/null @@ -1,152 +0,0 @@ -" Vim global plugin for math on visual regions -" Maintainer: Damian Conway -" License: This file is placed in the public domain. - -"###################################################################### -"## ## -"## To use: ## -"## ## -"## vmap <expr> ++ VMATH_YankAndAnalyse() ## -"## nmap ++ vip++ ## -"## ## -"## (or whatever keys you prefer to remap these actions to) ## -"## ## -"###################################################################### - - -" If already loaded, we're done... -if exists("loaded_vmath") - finish -endif -let loaded_vmath = 1 - -" Preserve external compatibility options, then enable full vim compatibility... -let s:save_cpo = &cpo -set cpo&vim - -" Grab visual selection and do simple math on it... -function! VMATH_YankAndAnalyse () - if &showmode - " Don't reselect the visual region if showmode is enabled - " because it will clobber the sum/avg/etc report with the - " "-- VISUAL --" message. - return "y:call VMATH_Analyse()\<CR>" - else - return "y:call VMATH_Analyse()\<CR>gv" - endif -endfunction - -" What to consider a number... -let s:NUM_PAT = '^[+-]\?\d\+\%([.]\d\+\)\?\([eE][+-]\?\d\+\)\?$' - -" How widely to space the report components... -let s:REPORT_GAP = 3 "spaces between components - -" Do simple math on current yank buffer... -function! VMATH_Analyse () - " Extract data from selection... - let selection = getreg('') - let raw_numbers = filter(split(selection), 'v:val =~ s:NUM_PAT') - let numbers = map(copy(raw_numbers), 'str2float(v:val)') - - " Results include a newline if original selection did... - let newline = selection =~ "\n" ? "\n" : "" - - " Calculate and en-register various interesting metrics... - let summation = len(numbers) ? join( numbers, ' + ') : '0' - call setreg('s', s:tidy( eval( summation ) )) " Sum --> register s - call setreg('a', s:average(raw_numbers) ) " Average --> register a - call setreg('x', s:tidy( s:max(numbers) )) " Max --> register x - call setreg('n', s:tidy( s:min(numbers) )) " Min --> register n - call setreg('r', @n . ' to ' . @x ) " Range --> register r - call setreg('c', len(numbers) ) " Count --> register c - - " Default paste buffer should depend on original contents (TODO) - call setreg('', @s ) - - " Report... - let gap = repeat(" ", s:REPORT_GAP) - highlight NormalUnderlined term=underline cterm=underline gui=underline - echohl NormalUnderlined - echo 's' - echohl NONE - echon 'um: ' . @s . gap - echohl NormalUnderlined - echon 'a' - echohl NONE - echon 'vg: ' . @a . gap - echon 'mi' - echohl NormalUnderlined - echon 'n' - echohl NONE - echon ': ' . @n . gap - echon 'ma' - echohl NormalUnderlined - echon 'x' - echohl NONE - echon ': ' . @x . gap - echohl NormalUnderlined - echon 'c' - echohl NONE - echon 'ount: ' . @c - -endfunction - -" Prettify numbers... -function! s:tidy (number) - let tidied = printf('%g', a:number) - return substitute(tidied, '[.]0\+$', '', '') -endfunction - -" Compute average with meaningful number of decimal places... -function! s:average (numbers) - " Compute average... - let summation = eval( len(a:numbers) ? join( a:numbers, ' + ') : '0' ) - let avg = 1.0 * summation / s:max([len(a:numbers), 1]) - - " Determine significant figures... - let min_decimals = 15 - for num in a:numbers - let decimals = strlen(matchstr(num, '[.]\d\+$')) - 1 - if decimals < min_decimals - let min_decimals = decimals - endif - endfor - - " Adjust answer... - return min_decimals > 0 ? printf('%0.'.min_decimals.'f', avg) - \ : string(avg) -endfunction - -" Reimplement these because the builtins don't handle floats (!!!) -function! s:max (numbers) - if !len(a:numbers) - return 0 - endif - let numbers = copy(a:numbers) - let maxnum = numbers[0] - for nextnum in numbers[1:] - if nextnum > maxnum - let maxnum = nextnum - endif - endfor - return maxnum -endfunction - -function! s:min (numbers) - if !len(a:numbers) - return 0 - endif - let numbers = copy(a:numbers) - let minnum = numbers[0] - for nextnum in numbers[1:] - if nextnum < minnum - let minnum = nextnum - endif - endfor - return minnum -endfunction - - -" Restore previous external compatibility options -let &cpo = s:save_cpo |
