" +---------+ " | General | " +---------+ " Neomake signs in the gutter let g:neomake_error_sign = {'text': '', 'texthl': 'NeomakeErrorSign'} let g:neomake_warning_sign = { \ 'text': '', \ 'texthl': 'NeomakeWarningSign', \ } let g:neomake_message_sign = { \ 'text': '', \ 'texthl': 'NeomakeWarningSign', \ } let g:neomake_info_sign = {'text': 'ℹ', 'texthl': 'NeomakeInfoSign'} " update neomake when save file if isdirectory($HOME . "/nvim/plugged/neomake") call neomake#configure#automake('w') endif " +-----+ " | PHP | " +-----+ " standard phpcs config let g:neomake_php_phpcs_args_standard = 'PSR2' " display warning for phpcs error function! SetWarningType(entry) let a:entry.type = 'W' endfunction function! SetErrorType(entry) let a:entry.type = 'E' endfunction function! SetMessageType(entry) let a:entry.type = 'M' endfunction let g:neomake_php_enabled_makers = ['phpmd', 'phpcs', 'phpstan', 'php'] let g:neomake_php_phpcs_maker = { \ 'args': ['--report=csv', '--standard=PSR2'], \ 'errorformat': \ '%-GFile\,Line\,Column\,Type\,Message\,Source\,Severity%.%#,'. \ '"%f"\,%l\,%c\,%t%*[a-zA-Z]\,"%m"\,%*[a-zA-Z0-9_.-]\,%*[0-9]%.%#', \ 'postprocess': function('SetWarningType'), \ } let g:neomake_php_phpstan_maker = { \ 'args': ['analyse', '--error-format', 'raw', '--no-progress', '--level', '7'], \ 'errorformat': '%W%f:%l:%m', \ 'postprocess': function('SetWarningType'), \ } let g:neomake_php_php_maker = { \ 'args': ['-l', '-d', 'display_errors=1', '-d', 'log_errors=0', \ '-d', 'xdebug.cli_color=0'], \ 'errorformat': \ '%-GNo syntax errors detected in%.%#,'. \ '%EParse error: %#syntax error\, %m in %f on line %l,'. \ '%EParse error: %m in %f on line %l,'. \ '%EFatal error: %m in %f on line %l,'. \ '%-G\s%#,'. \ '%-GErrors parsing %.%#', \ 'output_stream': 'stdout', \ 'postprocess': function('SetErrorType'), \ } let g:neomake_php_phpmd_maker = { \ 'args': ['%:p', 'text', 'cleancode,codesize,design,unusedcode,naming'], \ 'errorformat': '%W%f:%l%\s%\s%#%m', \ 'postprocess': function('SetMessageType'), \ } " +------------+ " | Javascript | " +------------+ let g:neomake_javascript_enabled_makers = ['eslint'] " Use the fix option of eslint let g:neomake_javascript_eslint_args = ['-f', 'compact', '--fix'] " Callback for reloading file in buffer when eslint has finished and maybe has " autofixed some stuff function! s:Neomake_callback(options) if (a:options.name ==? 'eslint') && (a:options.has_next == 0) " execute('checktime ' . bufname('%')) execute('edit') endif endfunction " Call neomake#Make directly instead of the Neomake provided command autocmd BufWritePost *.js,*.jsx :silent :call neomake#Make(1, [], function('s:Neomake_callback')) " +--------+ " | Golang | " +--------+ let g:neomake_go_enabled_makers = [ 'go', 'golangcifast' ] let g:neomake_go_golangci_maker = { \ 'exe': 'golangci-lint', \ 'args': [ 'run', '--enable=unparam' ], \ 'append_file': 0, \ 'cwd': '%:h', \ 'postprocess': function('SetWarningType') \ } let g:neomake_go_golangcifast_maker = { \ 'exe': 'golangci-lint', \ 'args': [ 'run', '--fast', ], \ 'append_file': 0, \ 'cwd': '%:h', \ 'postprocess': function('SetWarningType') \ } let g:neomake_go_gometalinter_maker = { \ 'args': [ \ '--disable-all', \ '--fast', \ '--enable=deadcode', \ '--enable=unparam', \ '--enable=unused', \ '--enable=errcheck', \ ], \ 'append_file': 0, \ 'cwd': '%:h', \ 'errorformat': \ '%f:%l:%c:%t%*[^:]: %m,' . \ '%f:%l::%t%*[^:]: %m', \ 'postprocess': function('SetWarningType') \ } let g:go_fmt_options = { \ 'gofmt': '-s', \ } nnoremap gg :Neomake autocmd FileType go nmap go :exec "Neomake golangci" " +-----+ " | SQL | " +-----+ let g:neomake_sql_enabled_makers = ['sqlint'] " +------+ " | YAML | " +------+ let g:neomake_yaml_enabled_makers = [ 'yamllint' ] " +---------------+ " | Racket (Lisp) | " +---------------+ let g:neomake_scheme_enabled_makers = ['raco'] let g:neomake_scheme_raco_maker = { \ 'exe': 'raco', \ 'args': ['expand'], \ 'errorformat': '%-G %.%#,%E%f:%l:%c: %m' \ } " Spinner??? OMG let s:spinner_index = 0 let s:active_spinners = 0 let s:spinner_states = ['|', '/', '--', '\', '|', '/', '--', '\'] let s:spinner_states = ['┤', '┘', '┴', '└', '├', '┌', '┬', '┐'] let s:spinner_states = ['←', '↑', '→', '↓'] let s:spinner_states = ['d', 'q', 'p', 'b'] let s:spinner_states = ['■', '□', '▪', '▫', '▪', '□', '■'] let s:spinner_states = ['→', '↘', '↓', '↙', '←', '↖', '↑', '↗'] let s:spinner_states = ['.', 'o', 'O', '°', 'O', 'o', '.'] function! StartSpinner() let b:show_spinner = 1 let s:active_spinners += 1 if s:active_spinners == 1 let s:spinner_timer = timer_start(1000 / len(s:spinner_states), 'SpinSpinner', {'repeat': -1}) endif endfunction function! StopSpinner() let b:show_spinner = 0 let s:active_spinners -= 1 if s:active_spinners == 0 :call timer_stop(s:spinner_timer) endif endfunction function! SpinSpinner(timer) let s:spinner_index = float2nr(fmod(s:spinner_index + 1, len(s:spinner_states))) redraw endfunction function! SpinnerText() if get(b:, 'show_spinner', 0) == 0 return " " endif return s:spinner_states[s:spinner_index] endfunction augroup neomake_hooks au! autocmd User NeomakeJobInit :call StartSpinner() autocmd User NeomakeFinished :call StopSpinner() " autocmd User NeomakeFinished :echom "Build complete" augroup END " vim:set et sw=2: