From cacdf22fdeef9998d304be2e6330d14b4cd1d3d7 Mon Sep 17 00:00:00 2001 From: mitermayer Date: Sat, 14 Sep 2019 04:55:30 +0000 Subject: issues/184-fixing-undo-step - Writting should not trigger autocomands - when formatting files we should not trigger auto commands --- autoload/prettier/job/async/neovim.vim | 4 ++-- autoload/prettier/utils/buffer.vim | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/autoload/prettier/job/async/neovim.vim b/autoload/prettier/job/async/neovim.vim index 1cffe5c..28ecb8a 100644 --- a/autoload/prettier/job/async/neovim.vim +++ b/autoload/prettier/job/async/neovim.vim @@ -73,7 +73,7 @@ function! s:onExit(status, info, out, err) abort try silent exec 'sp '. escape(bufname(a:info.buf_nr), ' \') call nvim_buf_set_lines(a:info.buf_nr, a:info.start, a:info.end, 0, l:out) - write + noautocmd write catch call prettier#logging#error#log('PARSING_ERROR') finally @@ -91,7 +91,7 @@ function! s:onExit(status, info, out, err) abort " TODO " we should be auto saving in order to work similar to vim8 call nvim_buf_set_lines(a:info.buf_nr, a:info.start, a:info.end, 0, l:out) - write + noautocmd write endif let s:prettier_job_running = 0 diff --git a/autoload/prettier/utils/buffer.vim b/autoload/prettier/utils/buffer.vim index c22fec7..d09c568 100644 --- a/autoload/prettier/utils/buffer.vim +++ b/autoload/prettier/utils/buffer.vim @@ -28,7 +28,7 @@ endfunction " Replace and save the buffer function! prettier#utils#buffer#replaceAndSave(lines, startSelection, endSelection) abort call prettier#utils#buffer#replace(a:lines, a:startSelection, a:endSelection) - write + noautocmd write endfunction " Returns 1 if content has changed -- cgit v1.3 From 87f217f953b64103e8bef48980c0f002aa0f00c7 Mon Sep 17 00:00:00 2001 From: mitermayer Date: Sat, 14 Sep 2019 05:17:33 +0000 Subject: issues/184-fixing-undo-step - Fixing undo step - in order to bypass vimdefaults we can fake a change prior to formatting and merging that back to undostack operation --- autoload/prettier/utils/buffer.vim | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/autoload/prettier/utils/buffer.vim b/autoload/prettier/utils/buffer.vim index d09c568..821abda 100644 --- a/autoload/prettier/utils/buffer.vim +++ b/autoload/prettier/utils/buffer.vim @@ -8,6 +8,12 @@ function! prettier#utils#buffer#replace(lines, startSelection, endSelection) abo return endif + " https://vim.fandom.com/wiki/Restore_the_cursor_position_after_undoing_text_change_made_by_a_script + " create a fake change entry and merge with undo stack prior to do formating + normal ix + normal x + try | silent undojoin | catch | endtry + " delete all lines on the current buffer silent! execute '%delete _' @@ -23,6 +29,7 @@ function! prettier#utils#buffer#replace(lines, startSelection, endSelection) abo " Restore view call winrestview(l:winview) + endfunction " Replace and save the buffer -- cgit v1.3 From c73822ba57d432cfc073c6e3d485c0df97cd56ea Mon Sep 17 00:00:00 2001 From: mitermayer Date: Sat, 14 Sep 2019 05:21:20 +0000 Subject: issues/184-fixing-undo-step - Ensuring that autoformat does not gets trigger autoformat --- plugin/prettier.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/prettier.vim b/plugin/prettier.vim index aafa7a2..928630b 100644 --- a/plugin/prettier.vim +++ b/plugin/prettier.vim @@ -140,6 +140,6 @@ nnoremap (PrettierCliPath) :PrettierCliPath augroup Prettier autocmd! if g:prettier#autoformat - autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.yaml,*.html call prettier#Autoformat() + autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.yaml,*.html noautocmd | call prettier#Autoformat() endif augroup end -- cgit v1.3 From 46fd3290d1c69fb394a79e5174e7c1aa69b885c0 Mon Sep 17 00:00:00 2001 From: mitermayer Date: Sat, 14 Sep 2019 05:27:16 +0000 Subject: issues/184-fixing-undo-step - fixing linting --- autoload/prettier/utils/buffer.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autoload/prettier/utils/buffer.vim b/autoload/prettier/utils/buffer.vim index 821abda..7bc7ab1 100644 --- a/autoload/prettier/utils/buffer.vim +++ b/autoload/prettier/utils/buffer.vim @@ -10,8 +10,8 @@ function! prettier#utils#buffer#replace(lines, startSelection, endSelection) abo " https://vim.fandom.com/wiki/Restore_the_cursor_position_after_undoing_text_change_made_by_a_script " create a fake change entry and merge with undo stack prior to do formating - normal ix - normal x + normal! ix + normal! x try | silent undojoin | catch | endtry " delete all lines on the current buffer -- cgit v1.3