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:
24
src/option.c
24
src/option.c
@@ -7516,6 +7516,30 @@ set_bool_option(opt_idx, varp, value, opt_flags)
|
|||||||
compatible_set();
|
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' */
|
/* 'list', 'number' */
|
||||||
else if ((int *)varp == &curwin->w_p_list
|
else if ((int *)varp == &curwin->w_p_list
|
||||||
|| (int *)varp == &curwin->w_p_nu
|
|| (int *)varp == &curwin->w_p_nu
|
||||||
|
@@ -51,6 +51,12 @@ dd:set ul=100
|
|||||||
:e Xtestfile
|
:e Xtestfile
|
||||||
uuu:w >>test.out
|
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
|
:" And now with encryption, cryptmethod=zip
|
||||||
:e! Xtestfile
|
:e! Xtestfile
|
||||||
:set undofile cm=zip
|
:set undofile cm=zip
|
||||||
|
@@ -7,6 +7,16 @@ seven
|
|||||||
eight
|
eight
|
||||||
nine
|
nine
|
||||||
ten
|
ten
|
||||||
|
one
|
||||||
|
two
|
||||||
|
three
|
||||||
|
four
|
||||||
|
five
|
||||||
|
six
|
||||||
|
seven
|
||||||
|
eight
|
||||||
|
nine
|
||||||
|
ten
|
||||||
monday
|
monday
|
||||||
wednesday
|
wednesday
|
||||||
thursday
|
thursday
|
||||||
|
@@ -714,6 +714,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
392,
|
||||||
/**/
|
/**/
|
||||||
391,
|
391,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user