" Save, call isort on, then reload a python file. function! do#isort() if &filetype !=# 'python' echohl ErrorMsg echomsg 'isort only supports python files' echohl None endif write! call system('isort '.expand('%:p')) edit! endfunction " Strip white space from right of all lines. " TODO: Make do#rstrip_lines work on a range function! do#rstrip_lines() let l:line = line('.') let l:column = col('.') execute '%s/\s\+$//e' nohlsearch call cursor(l:line, l:column) endfunction " TODO: Strip white space from left of all lines, retains relative indentation. " Set the tab width for the current filetype function! do#set_tab_width(width) execute 'setlocal tabstop='.a:width execute 'setlocal shiftwidth='.a:width execute 'setlocal softtabstop='.a:width echo 'Tab width is now '.a:width endfunction " Toggle GitHub style bullet checkbox function! do#toggle_checkbox() " Get current line let l:line = getline('.') " Get the ' ' or 'x' character from within the task bullet let l:pattern = '[-\*+] \[\zs[ x]\ze]' let l:char = matchstr(l:line, l:pattern) " Toggle the ' ' or 'x' character if l:char ==? 'x' let l:char = ' ' else let l:char = 'x' endif " Replace the current line with a new one call setline(line('.'), substitute(l:line, l:pattern, l:char, '')) endfunction " Show highlight groups under the cursor function! do#cursor_highlight_groups() let l:hi = synIDattr(synID(line('.'),col('.'),1),'name') let l:trans = synIDattr(synID(line('.'),col('.'),0),'name') let l:lo = synIDattr(synIDtrans(synID(line('.'),col('.'),1)),'name') echo 'hi<'.l:hi.'> trans<'.l:trans.'> lo<'.l:lo.'>' endfunction " Rename C/C++ include guard function! do#rename_include_guard(old) " Prompt for new guard name let l:new = input('Rename include guard: ', a:old) " Get the current position let l:pos = getpos('.') " Replace the old guard name with the new one exec '%s/\(#ifndef\|#define\|#endif\s\+\/\/\)\s\+\zs'.a:old.'/'.l:new.'/g' " Stop highlighting search results nohlsearch " Jump back to the start position call setpos('.', l:pos) endfunction " Setup and start a debugging command. function! do#debug(...) packadd termdebug let l:command = 'TermdebugCommand' for l:arg in a:000 let l:command = l:command.' '.l:arg endfor exec l:command endfunction