0
0
mirror of https://github.com/vim/vim.git synced 2025-10-04 05:25:06 -04:00

updated for version 7.3.392

Problem:    When setting 'undofile' while the file is already loaded but
            unchanged, try reading the undo file. (Andy Wokula)
Solution:   Compute a checksum of the text when 'undofile' is set. (Christian
            Brabandt)
This commit is contained in:
Bram Moolenaar
2012-01-04 19:34:37 +01:00
parent 79a2a49c5a
commit 374d32d70f
4 changed files with 42 additions and 0 deletions

View File

@@ -7516,6 +7516,30 @@ set_bool_option(opt_idx, varp, value, opt_flags)
compatible_set();
}
#ifdef FEAT_PERSISTENT_UNDO
/* 'undofile' */
else if ((int *)varp == &curbuf->b_p_udf || (int *)varp == &p_udf)
{
char_u hash[UNDO_HASH_SIZE];
buf_T *save_curbuf = curbuf;
for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next)
{
/* When 'undofile' is set globally: for every buffer, otherwise
* only for the current buffer: Try to read in the undofile, if
* one exists and the buffer wasn't changed. */
if ((curbuf == save_curbuf
|| (opt_flags & OPT_GLOBAL) || opt_flags == 0)
&& !curbufIsChanged())
{
u_compute_hash(hash);
u_read_undo(NULL, hash, curbuf->b_fname);
}
}
curbuf = save_curbuf;
}
#endif
/* 'list', 'number' */
else if ((int *)varp == &curwin->w_p_list
|| (int *)varp == &curwin->w_p_nu

View File

@@ -51,6 +51,12 @@ dd:set ul=100
:e Xtestfile
uuu:w >>test.out
:"
:" Test that reading the undofiles when setting undofile works
:set noundofile ul=0
i
u:e! Xtestfile
:set undofile ul=100
uuuuuu:w >>test.out
:" And now with encryption, cryptmethod=zip
:e! Xtestfile
:set undofile cm=zip

View File

@@ -7,6 +7,16 @@ seven
eight
nine
ten
one
two
three
four
five
six
seven
eight
nine
ten
monday
wednesday
thursday

View File

@@ -714,6 +714,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
392,
/**/
391,
/**/