" TODO better name function! GetStatusFrag(condition, colorname, conditionprefix, text) abort "{{{ let l:frag='%#' . a:colorname . '#' let l:frag.=a:conditionprefix let l:frag.='%{(' . a:condition . ")?'" . a:text . "':''}" return l:frag endfunction"}}} function! CheckLineEnding() abort "{{{ :normal $ if getline('.')[col('.')-1] == ';' || getline('.')[col('.')-1] == ',' :startinsert else :startinsert! endif endfunction"}}} " get name of syntax item function! SyntaxItem() abort "{{{ return synIDattr(synID(line('.'),col('.'),1),'name') . ' -> ' . synIDattr(synIDtrans(synID(line('.'),col('.'),1)), 'name' ) endfunction nnoremap p :echom SyntaxItem()"}}} " devdocs DD " https://gist.github.com/romainl/8d3b73428b4366f75a19be2dad2f0987#file-devdocs-vim function! s:Get_env() abort "{{{ if has('win64') || has('win32') || has('win16') return 'WINDOWS' else return toupper(substitute(system('uname'), '\n', '', '')) endif endfunction " What command to use on what system let s:cmds = {'DARWIN': 'open', 'LINUX': 'qutebrowser', 'WINDOWS': 'start'} " Build the URL stub let s:stub = s:cmds[Get_env()] . " 'http://devdocs.io/?q=" command! -nargs=* DD silent! call system(len(split(, ' ')) == 0 ? \ s:stub . &ft . ' ' . expand('') . "'" : len(split(, ' ')) == 1 ? \ s:stub . &ft . ' ' . . "'" : s:stub . . "'") "}}} " use ranger as file manager if !exists('*RangerExplorer') "{{{ function RangerExplorer() abort exec 'silent !ranger --choosefile=/tmp/vim_ranger_current_file ' . expand('%:p:h') if filereadable('/tmp/vim_ranger_current_file') exec 'edit ' . system('cat /tmp/vim_ranger_current_file') call system('rm /tmp/vim_ranger_current_file') endif redraw! endfun map ra :call RangerExplorer() endif"}}} function! SetColorColumn()"{{{ if &buftype == '' setlocal colorcolumn=80 endif endfunction "}}} function! GetLinterStatus(key) abort "{{{ let l:linter = ale#statusline#Count(bufnr('')) return l:linter[a:key] endfunction "}}} " old linter status function function! LinterStatus() abort "{{{ let l:counts = ale#statusline#Count(bufnr('')) let l:all_errors = l:counts.error + l:counts.style_error let l:all_non_errors = l:counts.total - l:all_errors return l:counts.total == 0 ? 'OK' : printf('%dW %dE', l:all_non_errors, l:all_errors) endfunction "}}} " Shell command " based on " http://vim.wikia.com/wiki/VimTip1599 command! -complete=shellcmd -nargs=+ Shell call s:RunShellCommand() let g:shell_scratch_buffer_nr = -1 function! s:RunShellCommand(cmdline) abort "{{{ let l:expanded_cmdline = a:cmdline for l:part in split(a:cmdline, ' ') if l:part[0] =~ '\v[%#<]' let l:expanded_part = fnameescape(expand(l:part)) let l:expanded_cmdline = substitute(l:expanded_cmdline, l:part, l:expanded_part, '') endif endfor if g:shell_scratch_buffer_nr > -1 let l:win_nr = bufwinnr(g:shell_scratch_buffer_nr) if l:win_nr < 0 execute 'bdelete' g:shell_scratch_buffer_nr top new let g:shell_scratch_buffer_nr = bufnr('%') else execute l:win_nr. ' wincmd w' setlocal modifiable %delete _ endif else top new let g:shell_scratch_buffer_nr = bufnr('%') endif setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap nnoremap q :bdelete augroup ResetShellBufferNr autocmd! * autocmd BufUnload let g:shell_scratch_buffer_nr = -1 augroup END " call setline(1, 'You entered: ' . a:cmdline) " call setline(2, 'Expanded Form: ' .l:expanded_cmdline) " call setline(3,substitute(getline(2),'.','=','g')) execute '$read !'. l:expanded_cmdline 1 setlocal nomodifiable if !exists('b:shell_line_count') let b:shell_line_count = line('$') if b:shell_line_count > 25 let b:shell_line_count = 20 endif execute 'resize' b:shell_line_count + 1 endif wincmd p endfunction "}}} " vim: foldmethod=marker