" 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

" 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