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();
|
||||
}
|
||||
|
||||
#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
|
||||
|
@@ -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
|
||||
|
@@ -7,6 +7,16 @@ seven
|
||||
eight
|
||||
nine
|
||||
ten
|
||||
one
|
||||
two
|
||||
three
|
||||
four
|
||||
five
|
||||
six
|
||||
seven
|
||||
eight
|
||||
nine
|
||||
ten
|
||||
monday
|
||||
wednesday
|
||||
thursday
|
||||
|
@@ -714,6 +714,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
392,
|
||||
/**/
|
||||
391,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user