"Function for finding and setting the formatter with the given name, "if the formatter is installed globally or in the formatters folder let s:formatterdir = fnamemodify(expand(""), ":p:h:h")."/formatters/" function! s:set_formatprg() "Reset previous formatprg set formatprg="" "Get formatprg config for current filetype let s:formatprg_var = "g:formatprg_".&filetype let s:formatprg_args_var = "g:formatprg_args_".&filetype let s:formatprg_args_expr_var = "g:formatprg_args_expr_".&filetype if !exists(s:formatprg_var) "No formatprg defined if exists("g:autoformat_verbosemode") echoerr "No formatter defined for filetype '".&filetype."'." endif return 0 endif let s:formatprg = eval(s:formatprg_var) let s:formatprg_args = "" if exists(s:formatprg_args_expr_var) let s:formatprg_args = eval(eval(s:formatprg_args_expr_var)) elseif exists(s:formatprg_args_var) let s:formatprg_args = eval(s:formatprg_args_var) endif "Set correct formatprg path, if it is installed if !executable(s:formatprg) let s:formatprg = s:formatterdir.s:formatprg if !executable(s:formatprg) "Configured formatprg not installed if exists("g:autoformat_verbosemode") echoerr "Defined formatter ".eval(s:formatprg_var)." is not executable." endif return 0 endif endif let &formatprg = s:formatprg." ".s:formatprg_args return 1 endfunction "When gq has been pressed: "1. set right formatprg "2. if formatprg!="" run regular gq "3. else run = noremap gq set_formatprg() ? 'gq' : '=' "Function for formatting the entire buffer function! s:Autoformat() "Save window state let winview=winsaveview() "Autoformat code exe "normal gggqG" "Recall window state call winrestview(winview) endfunction "Create a command for formatting the entire buffer command! Autoformat call s:Autoformat()