From fb30b321fedf5cc5cdbfe203d7d0e6b9848d03e6 Mon Sep 17 00:00:00 2001 From: "William (B.J.) Snow Orvis" Date: Thu, 3 Oct 2019 11:23:26 -0700 Subject: [PATCH] Update end_line when using g:neoformat_run_all_formatters. Fixes #256 --- autoload/neoformat.vim | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/autoload/neoformat.vim b/autoload/neoformat.vim index 7891c83d..0396c79c 100644 --- a/autoload/neoformat.vim +++ b/autoload/neoformat.vim @@ -11,12 +11,13 @@ function! neoformat#Neoformat(bang, user_input, start_line, end_line) abort endfunction function! s:neoformat(bang, user_input, start_line, end_line) abort + let end_line = a:end_line if !&modifiable return neoformat#utils#warn('buffer not modifiable') endif - let using_visual_selection = a:start_line != 1 || a:end_line != line('$') + let using_visual_selection = a:start_line != 1 || end_line != line('$') let inputs = split(a:user_input) if a:bang @@ -75,7 +76,7 @@ function! s:neoformat(bang, user_input, start_line, end_line) abort continue endif - let stdin = getbufline(bufnr('%'), a:start_line, a:end_line) + let stdin = getbufline(bufnr('%'), a:start_line, end_line) let original_buffer = getbufline(bufnr('%'), 1, '$') call neoformat#utils#log(stdin) @@ -102,14 +103,14 @@ function! s:neoformat(bang, user_input, start_line, end_line) abort call neoformat#utils#log(v:shell_error) let process_ran_succesfully = index(cmd.valid_exit_codes, v:shell_error) != -1 - + if cmd.stderr_log != '' call neoformat#utils#log('stderr output redirected to file' . cmd.stderr_log) call neoformat#utils#log_file_content(cmd.stderr_log) endif if process_ran_succesfully " 1. append the lines that are before and after the formatterd content - let lines_after = getbufline(bufnr('%'), a:end_line + 1, '$') + let lines_after = getbufline(bufnr('%'), end_line + 1, '$') let lines_before = getbufline(bufnr('%'), 1, a:start_line - 1) let new_buffer = lines_before + stdout + lines_after @@ -128,6 +129,9 @@ function! s:neoformat(bang, user_input, start_line, end_line) abort if !neoformat#utils#var('neoformat_run_all_formatters') return neoformat#utils#msg(endmsg) endif + " If the number of lines changed, update the end_line so that the + " next formatter grabs the correct lines + let end_line = a:start_line + len(stdout) call neoformat#utils#log('running next formatter') else call add(formatters_failed, cmd.name)