diff options
Diffstat (limited to 'data/vim/patches/8.1.0402')
-rw-r--r-- | data/vim/patches/8.1.0402 | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0402 b/data/vim/patches/8.1.0402 new file mode 100644 index 000000000..f5e1ac782 --- /dev/null +++ b/data/vim/patches/8.1.0402 @@ -0,0 +1,171 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0402 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.0402 +Problem: The DiffUpdate event isn't triggered for :diffput. +Solution: Also trigger DiffUpdate for :diffget and :diffput. +Files: src/diff.c + + +*** ../vim-8.1.0401/src/diff.c 2018-09-16 18:10:45.246181729 +0200 +--- src/diff.c 2018-09-18 20:54:19.844268349 +0200 +*************** +*** 295,301 **** + + if (diff_internal()) + { +! // Will udpate diffs before redrawing. Set _invalid to update the + // diffs themselves, set _update to also update folds properly just + // before redrawing. + tp->tp_diff_invalid = TRUE; +--- 295,301 ---- + + if (diff_internal()) + { +! // Will update diffs before redrawing. Set _invalid to update the + // diffs themselves, set _update to also update folds properly just + // before redrawing. + tp->tp_diff_invalid = TRUE; +*************** +*** 908,913 **** +--- 908,914 ---- + int idx_orig; + int idx_new; + diffio_T diffio; ++ int had_diffs = curtab->tp_first_diff != NULL; + + if (diff_busy) + { +*************** +*** 924,937 **** + if (curtab->tp_diffbuf[idx_orig] != NULL) + break; + if (idx_orig == DB_COUNT) +! return; + + // Only need to do something when there is another buffer. + for (idx_new = idx_orig + 1; idx_new < DB_COUNT; ++idx_new) + if (curtab->tp_diffbuf[idx_new] != NULL) + break; + if (idx_new == DB_COUNT) +! return; + + // Only use the internal method if it did not fail for one of the buffers. + vim_memset(&diffio, 0, sizeof(diffio)); +--- 925,938 ---- + if (curtab->tp_diffbuf[idx_orig] != NULL) + break; + if (idx_orig == DB_COUNT) +! goto theend; + + // Only need to do something when there is another buffer. + for (idx_new = idx_orig + 1; idx_new < DB_COUNT; ++idx_new) + if (curtab->tp_diffbuf[idx_new] != NULL) + break; + if (idx_new == DB_COUNT) +! goto theend; + + // Only use the internal method if it did not fail for one of the buffers. + vim_memset(&diffio, 0, sizeof(diffio)); +*************** +*** 948,956 **** + // force updating cursor position on screen + curwin->w_valid_cursor.lnum = 0; + +! diff_redraw(TRUE); +! +! apply_autocmds(EVENT_DIFFUPDATED, NULL, NULL, FALSE, curbuf); + } + + /* +--- 949,962 ---- + // force updating cursor position on screen + curwin->w_valid_cursor.lnum = 0; + +! theend: +! // A redraw is needed if there were diffs and they were cleared, or there +! // are diffs now, which means they got updated. +! if (had_diffs || curtab->tp_first_diff != NULL) +! { +! diff_redraw(TRUE); +! apply_autocmds(EVENT_DIFFUPDATED, NULL, NULL, FALSE, curbuf); +! } + } + + /* +*************** +*** 2272,2278 **** + if ((diff_flags_new & DIFF_HORIZONTAL) && (diff_flags_new & DIFF_VERTICAL)) + return FAIL; + +! /* If "icase" or "iwhite" was added or removed, need to update the diff. */ + if (diff_flags != diff_flags_new || diff_algorithm != diff_algorithm_new) + FOR_ALL_TABPAGES(tp) + tp->tp_diff_invalid = TRUE; +--- 2278,2285 ---- + if ((diff_flags_new & DIFF_HORIZONTAL) && (diff_flags_new & DIFF_VERTICAL)) + return FAIL; + +! // If flags were added or removed, or the algorithm was changed, need to +! // update the diff. + if (diff_flags != diff_flags_new || diff_algorithm != diff_algorithm_new) + FOR_ALL_TABPAGES(tp) + tp->tp_diff_invalid = TRUE; +*************** +*** 2845,2858 **** + diff_need_update = FALSE; + ex_diffupdate(NULL); + } +! +! /* Check that the cursor is on a valid character and update it's position. +! * When there were filler lines the topline has become invalid. */ +! check_cursor(); +! changed_line_abv_curs(); +! +! /* Also need to redraw the other buffers. */ +! diff_redraw(FALSE); + } + + #ifdef FEAT_FOLDING +--- 2852,2869 ---- + diff_need_update = FALSE; + ex_diffupdate(NULL); + } +! else +! { +! // Check that the cursor is on a valid character and update it's +! // position. When there were filler lines the topline has become +! // invalid. +! check_cursor(); +! changed_line_abv_curs(); +! +! // Also need to redraw the other buffers. +! diff_redraw(FALSE); +! apply_autocmds(EVENT_DIFFUPDATED, NULL, NULL, FALSE, curbuf); +! } + } + + #ifdef FEAT_FOLDING +*** ../vim-8.1.0401/src/version.c 2018-09-16 18:46:36.189127529 +0200 +--- src/version.c 2018-09-18 20:55:27.799635739 +0200 +*************** +*** 796,797 **** +--- 796,799 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 402, + /**/ + +-- +If your nose runs, and your feet smell, you might be upside down. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |