To: vim_dev@googlegroups.com Subject: Patch 8.1.0402 Fcc: outbox From: Bram Moolenaar 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 ///