# HG changeset patch # User vimboss # Date 1142463558 0 # Node ID f0d0d3d3a1e26c433ca5efd5ccabbf22c30dc54d # Parent 335444c095816a6298b37873f2fe521d0e022db3 updated for version 7.0225 diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim --- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -1,7 +1,7 @@ " netrw.vim: Handles file transfer and remote directory listing across a network " AUTOLOAD PORTION -" Date: Mar 13, 2006 -" Version: 80 +" Date: Mar 14, 2006 +" Version: 81 " Maintainer: Charles E Campbell, Jr " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 @@ -23,7 +23,7 @@ if &cp || exists("g:loaded_netrw") finish endif -let g:loaded_netrw = "v80" +let g:loaded_netrw = "v81" if v:version < 700 echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None finish @@ -2803,21 +2803,7 @@ fun! netrw#DirBrowse(dirname) let s:last_sort_by= g:netrw_sort_by " set up ShellCmdPost handling. Append current buffer to browselist - if !exists("s:netrw_browselist") - let s:netrw_browselist= [] - endif - if g:netrw_fastbrowse <= 1 && (empty(s:netrw_browselist) || bufnr("%") > s:netrw_browselist[-1]) - call add(s:netrw_browselist,bufnr("%")) -" call Decho("browselist=".string(s:netrw_browselist)) - endif - if !exists("s:netrw_browser_shellcmd") && g:netrw_fastbrowse <= 1 -" call Decho("setting up local-browser shell command refresh") - let s:netrw_browser_shellcmd= 1 - augroup AuNetrwShellCmd - au! - au ShellCmdPost * call s:LocalBrowseShellCmdRefresh() - augroup END - endif + call s:LocalFastBrowser() " get the new directory name if has("win32") || has("win95") || has("win64") || has("win16") @@ -3369,6 +3355,47 @@ fun! s:LocalBrowseRename(path) range endfun " --------------------------------------------------------------------- +" LocalFastBrowser: handles setting up/taking down fast browsing for the {{{2 +" local browser +fun! s:LocalFastBrowser() +" call Dfunc("LocalFastBrowser()") + + " initialize browselist, a list of buffer numbers that the local browser has used + if !exists("s:netrw_browselist") + let s:netrw_browselist= [] + endif + + " append current buffer to fastbrowse list + if g:netrw_fastbrowse <= 1 && (empty(s:netrw_browselist) || bufnr("%") > s:netrw_browselist[-1]) + call add(s:netrw_browselist,bufnr("%")) +" call Decho("browselist=".string(s:netrw_browselist)) + endif + + " enable autocmd events to handle refreshing/removing local browser buffers + " If local browse buffer is currently showing: refresh it + " If local browse buffer is currently hidden : wipe it + if !exists("s:netrw_browser_shellcmd") && g:netrw_fastbrowse <= 1 +" call Decho("setting up local-browser shell command refresh") + let s:netrw_browser_shellcmd= 1 + augroup AuNetrwShellCmd + au! + au ShellCmdPost,FocusGained * call s:LocalBrowseShellCmdRefresh() + augroup END + + " user must have changed fastbrowse to its fast setting, so remove + " the associated autocmd events + if g:netrw_fastbrowse > 1 && exists("s:netrw_browser_shellcmd") + unlet s:netrw_browser_shellcmd + augroup AuNetrwShellCmd + au! + augroup END + augroup! AuNetrwShellCmd + endif + +" call Dret("LocalFastBrowser") +endfun + +" --------------------------------------------------------------------- " LocalObtain: copy selected file to current working directory {{{2 fun! s:LocalObtain() " call Dfunc("LocalObtain()") @@ -3883,6 +3910,7 @@ fun! s:NetOptionSave() let w:cinokeep = &cino let w:comkeep = &com let w:cpokeep = &cpo + let w:hidkeep = &hidden let w:magickeep = &magic if !g:netrw_keepdir let w:dirkeep = getcwd() @@ -3894,7 +3922,7 @@ fun! s:NetOptionSave() setlocal cino = setlocal com = setlocal cpo -=aA - setlocal nocin noai noci magic nospell fo=nroql2 + setlocal nocin noai noci magic nospell fo=nroql2 nohid setlocal tw =0 setlocal report=10000 if has("win32") && !has("win95") @@ -3926,6 +3954,7 @@ fun! s:NetOptionRestore() if exists("w:dirkeep") |exe "lcd ".w:dirkeep |unlet w:dirkeep |endif if exists("w:fokeep") |let &fo = w:fokeep |unlet w:fokeep |endif if exists("w:gdkeep") |let &gd = w:gdkeep |unlet w:gdkeep |endif + if exists("w:hidkeep") |let &hidden = w:hidkeep |unlet w:hidkeep |endif if exists("w:magic") |let &magic = w:magic |unlet w:magic |endif if exists("w:repkeep") |let &report = w:repkeep |unlet w:repkeep |endif if exists("w:spellkeep")|let &spell = w:spellkeep |unlet w:spellkeep|endif diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.0aa. Last change: 2006 Mar 10 +*autocmd.txt* For Vim version 7.0aa. Last change: 2006 Mar 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -270,6 +270,7 @@ Name triggered by ~ Various |FileChangedShell| Vim notices that a file changed since editing started +|FileChangedShellPost| After handling a file changed since editing started |FileChangedRO| before making the first change to a read-only file |ShellCmdPost| after executing a shell command @@ -279,6 +280,7 @@ Name triggered by ~ |SpellFileMissing| a spell file is used but it can't be found |SourcePre| before sourcing a Vim script +|VimResized| after the Vim window size changed |FocusGained| Vim got input focus |FocusLost| Vim lost input focus |CursorHold| the user doesn't press a key for a while @@ -537,6 +539,9 @@ FileChangedShell When Vim notices that commands for the FileChangedShell event no other FileChangedShell event will be triggered. + *FileChangedShellPost* +FileChangedShellPost After handling a file that was changed outside + of Vim. Can be used to update the statusline. *FileEncoding* FileEncoding Obsolete. It still works and is equivalent to |EncodingChanged|. @@ -764,6 +769,10 @@ VimLeavePre Before exiting Vim, just b Mostly useful with a "*" pattern. > :autocmd VimLeavePre * call CleanupStuff() < To detect an abnormal exit use |v:dying|. + *VimResized* +VimResized After the Vim window was resized, thus 'lines' + and/or 'columns' changed. Not when starting + up though. *WinEnter* WinEnter After entering another window. Not done for the first window, when Vim has just started. diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt --- a/runtime/doc/diff.txt +++ b/runtime/doc/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.0aa. Last change: 2006 Mar 14 +*diff.txt* For Vim version 7.0aa. Last change: 2006 Mar 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -51,6 +51,8 @@ splits add the |-o| argument: > vimdiff -o file1 file2 [file3] +If you always prefer horizontal splits include "horizontal" in 'diffopt'. + In each of the edited files these options are set: 'diff' on @@ -58,7 +60,7 @@ In each of the edited files these option 'scrollopt' includes "hor" 'wrap' off 'foldmethod' "diff" - 'foldcolumn' 2 + 'foldcolumn' value from 'diffopt', default is 2 These options are set local to the window. When editing another file they are reset to the global value. @@ -107,7 +109,9 @@ To make these commands use a vertical sp :vert diffsplit main.c~ :vert diffpatch /tmp/diff -< + +If you always prefer a vertical split include "vertical" in 'diffopt'. + *E96* There can be up to four buffers with 'diff' set. @@ -378,8 +382,8 @@ will have the same effect. These variab Example (this does the same as 'patchexpr' being empty): > - let patchexpr=MyPatch() - function MyPatch + set patchexpr=MyPatch() + function MyPatch() :call system("patch -o " . v:fname_out . " " . v:fname_in . \ " < " . v:fname_diff) endfunction diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.0aa. Last change: 2006 Mar 12 +*options.txt* For Vim version 7.0aa. Last change: 2006 Mar 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1624,6 +1624,8 @@ A jump table for the options with a shor *'completeopt'* *'cot'* 'completeopt' 'cot' string (default: "menu,preview") global + {not available when compiled without the + |+insert_expand| feature} {not in Vi} A comma separated list of options for Insert mode completion |ins-completion|. The supported values are: @@ -1644,7 +1646,6 @@ A jump table for the options with a shor preview Show extra information about the currently selected completion in the preview window. - *'confirm'* *'cf'* *'noconfirm'* *'nocf'* 'confirm' 'cf' boolean (default off) global @@ -2184,11 +2185,20 @@ A jump table for the options with a shor exactly. It should ignore adding trailing white space, but not leading white space. + horizontal Start diff mode with horizontal splits (unless + explicitly specified otherwise). + + vertical Start diff mode with vertical splits (unless + explicitly specified otherwise). + + foldcolumn:{n} Set the 'foldcolumn' option to {n} when + starting diff mode. Without this 2 is used. + Examples: > :set diffopt=filler,context:4 :set diffopt= - :set diffopt=filler + :set diffopt=filler,foldcolumn:3 < *'digraph'* *'dg'* *'nodigraph'* *'nodg'* 'digraph' 'dg' boolean (default off) @@ -5019,6 +5029,17 @@ A jump table for the options with a shor global When on a ":" prompt is used in Ex mode. + *'pumheight'* *'ph'* +'pumheight' 'ph' number (default 0) + global + {not available when compiled without the + |+insert_expand| feature} + {not in Vi} + Determines the maximum number of items to show in the popup menu. + When zero as much space as available is used. + |ins-completion-menu|. + + *'quoteescape'* *'qe'* 'quoteescape' 'qe' string (default "\") local to buffer diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt --- a/runtime/doc/pi_netrw.txt +++ b/runtime/doc/pi_netrw.txt @@ -1,4 +1,4 @@ -*pi_netrw.txt* For Vim version 7.0. Last change: Mar 10, 2006 +*pi_netrw.txt* For Vim version 7.0. Last change: Mar 14, 2006 VIM REFERENCE MANUAL by Charles E. Campbell, Jr. @@ -1439,6 +1439,13 @@ which is loaded automatically at startup ============================================================================== 11. History *netrw-history* {{{1 + v81: * FocusGained also used to refresh/wipe local browser directory + buffers + * (bugfix) netrw was leaving [Scratch] buffers behind when the + the user had the "hidden" option set. The 'hidden' option is + now bypassed. + v80: * ShellCmdPost event used in conjunction with g:netrw_fastbrowse + to refresh/wipe local browser directory buffers. v79: * directories are now displayed with nowrap * (bugfix) if the column width was smaller than the largest file's name, then netrw would hang when using wide-listing diff --git a/runtime/doc/tags b/runtime/doc/tags --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -646,6 +646,7 @@ 'pex' options.txt /*'pex'* 'pexpr' options.txt /*'pexpr'* 'pfn' options.txt /*'pfn'* +'ph' options.txt /*'ph'* 'pheader' options.txt /*'pheader'* 'pi' options.txt /*'pi'* 'pm' options.txt /*'pm'* @@ -665,6 +666,7 @@ 'printoptions' options.txt /*'printoptions'* 'prompt' options.txt /*'prompt'* 'pt' options.txt /*'pt'* +'pumheight' options.txt /*'pumheight'* 'pvh' options.txt /*'pvh'* 'pvw' options.txt /*'pvw'* 'qe' options.txt /*'qe'* @@ -3979,6 +3981,7 @@ FileAppendPost autocmd.txt /*FileAppendP FileAppendPre autocmd.txt /*FileAppendPre* FileChangedRO autocmd.txt /*FileChangedRO* FileChangedShell autocmd.txt /*FileChangedShell* +FileChangedShellPost autocmd.txt /*FileChangedShellPost* FileEncoding autocmd.txt /*FileEncoding* FileReadCmd autocmd.txt /*FileReadCmd* FileReadPost autocmd.txt /*FileReadPost* @@ -4181,6 +4184,7 @@ View starting.txt /*View* VimEnter autocmd.txt /*VimEnter* VimLeave autocmd.txt /*VimLeave* VimLeavePre autocmd.txt /*VimLeavePre* +VimResized autocmd.txt /*VimResized* Virtual-Replace-mode insert.txt /*Virtual-Replace-mode* VisVim if_ole.txt /*VisVim* Visual visual.txt /*Visual* diff --git a/src/auto/configure b/src/auto/configure --- a/src/auto/configure +++ b/src/auto/configure @@ -2838,6 +2838,10 @@ if test "`(uname) 2>/dev/null`" = Darwin echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 + if test x$prefix = xNONE; then + prefix=/Applications + fi + echo "$as_me:$LINENO: checking --disable-darwin argument" >&5 echo $ECHO_N "checking --disable-darwin argument... $ECHO_C" >&6 # Check whether --enable-darwin or --disable-darwin was given. diff --git a/src/configure.in b/src/configure.in --- a/src/configure.in +++ b/src/configure.in @@ -85,6 +85,11 @@ AC_MSG_CHECKING([for Darwin (Mac OS X)]) if test "`(uname) 2>/dev/null`" = Darwin; then AC_MSG_RESULT(yes) + dnl Default install directory is not /usr/local + if test x$prefix = xNONE; then + prefix=/Applications + fi + AC_MSG_CHECKING(--disable-darwin argument) AC_ARG_ENABLE(darwin, [ --disable-darwin Disable Darwin (Mac OS X) support.], diff --git a/src/gui_mac.c b/src/gui_mac.c --- a/src/gui_mac.c +++ b/src/gui_mac.c @@ -52,8 +52,8 @@ static EventHandlerUPP mouseWheelHandlerUPP = NULL; SInt32 gMacSystemVersion; -#if defined(FEAT_MBYTE) -#define USE_CARBONKEYHANDLER +#ifdef MACOS_CONVERT +# define USE_CARBONKEYHANDLER static EventHandlerUPP keyEventHandlerUPP = NULL; #endif @@ -130,7 +130,7 @@ static struct Boolean isPanelVisible; } gFontPanelInfo = { 0, 0, 0, false }; -#if defined(FEAT_MBYTE) +#ifdef MACOS_CONVERT # define USE_ATSUI_DRAWING ATSUStyle gFontStyle; Boolean gIsFontFallbackSet; @@ -419,7 +419,7 @@ points_to_pixels(char_u *str, char_u **e return pixels; } -#if defined(FEAT_MBYTE) +#ifdef MACOS_CONVERT /* * Deletes all traces of any Windows-style mnemonic text (including any * parentheses) from a menu item and returns the cleaned menu item title. @@ -4437,7 +4437,7 @@ clip_mch_request_selection(VimClipboard #endif tempclip[scrapSize] = 0; -#if defined(FEAT_MBYTE) +#ifdef MACOS_CONVERT /* Convert from utf-16 (clipboard) */ size_t encLen = 0; char_u *to = mac_utf16_to_enc((UniChar *)tempclip, scrapSize, &encLen); @@ -4510,7 +4510,7 @@ clip_mch_set_selection(VimClipboard *cbd type = clip_convert_selection(&str, (long_u *) &scrapSize, cbd); -#if defined(FEAT_MBYTE) +#ifdef MACOS_CONVERT size_t utf16_len = 0; UniChar *to = mac_enc_to_utf16(str, scrapSize, &utf16_len); if (to) @@ -4628,7 +4628,7 @@ gui_mch_add_menu(vimmenu_T *menu, int id menu_after_me = hierMenu; /* Convert the name */ -#if defined(FEAT_MBYTE) +#ifdef MACOS_CONVERT name = menu_title_removing_mnemonic(menu); #else name = C2Pascal_save(menu->dname); @@ -4721,7 +4721,7 @@ gui_mch_add_menu_item(vimmenu_T *menu, i for older OS call GetMenuItemData (menu, item, isCommandID?, data) */ /* Convert the name */ -#if defined(FEAT_MBYTE) +#ifdef MACOS_CONVERT name = menu_title_removing_mnemonic(menu); #else name = C2Pascal_save(menu->dname); @@ -5745,7 +5745,7 @@ gui_mch_settitle(char_u *title, char_u * /* TODO: Get vim to make sure maxlen (from p_titlelen) is smaller * that 256. Even better get it to fit nicely in the titlebar. */ -#if defined(FEAT_MBYTE) +#ifdef MACOS_CONVERT CFStringRef windowTitle; size_t windowTitleLen; #else @@ -5755,7 +5755,7 @@ gui_mch_settitle(char_u *title, char_u * if (title == NULL) /* nothing to do */ return; -#if defined(FEAT_MBYTE) +#ifdef MACOS_CONVERT windowTitleLen = STRLEN(title); windowTitle = mac_enc_to_cfstring(title, windowTitleLen); diff --git a/src/misc2.c b/src/misc2.c --- a/src/misc2.c +++ b/src/misc2.c @@ -964,8 +964,10 @@ free_all_mem() #ifdef FEAT_WINDOWS /* close all tabs and windows */ - do_cmdline_cmd((char_u *)"tabonly!"); - do_cmdline_cmd((char_u *)"only!"); + if (first_tabpage->tp_next != NULL) + do_cmdline_cmd((char_u *)"tabonly!"); + if (firstwin != lastwin) + do_cmdline_cmd((char_u *)"only!"); #endif # if defined(FEAT_SPELL) @@ -1077,6 +1079,10 @@ free_all_mem() reset_last_sourcing(); +#ifdef FEAT_WINDOWS + vim_free(first_tabpage); +#endif + # ifdef UNIX /* Machine-specific free. */ mch_free_mem(); diff --git a/src/os_mac_conv.c b/src/os_mac_conv.c --- a/src/os_mac_conv.c +++ b/src/os_mac_conv.c @@ -16,7 +16,14 @@ #define NO_X11_INCLUDES #include "vim.h" -#ifdef FEAT_MBYTE +#if defined(MACOS_CONVERT) || defined(PROTO) +# ifdef PROTO +/* A few dummy types to be able to generate function prototypes. */ +typedef int UniChar; +typedef int *TECObjectRef; +typedef int CFStringRef; +# endif + static char_u *mac_utf16_to_utf8 __ARGS((UniChar *from, size_t fromLen, size_t *actualLen)); static UniChar *mac_utf8_to_utf16 __ARGS((char_u *from, size_t fromLen, size_t *actualLen)); @@ -477,7 +484,7 @@ mac_precompose_path(decompPath, decompLe /* * Converts from UTF-16 UniChars to precomposed UTF-8 */ - char_u * + static char_u * mac_utf16_to_utf8(from, fromLen, actualLen) UniChar *from; size_t fromLen; @@ -517,7 +524,7 @@ mac_utf16_to_utf8(from, fromLen, actualL /* * Converts from UTF-8 to UTF-16 UniChars */ - UniChar * + static UniChar * mac_utf8_to_utf16(from, fromLen, actualLen) char_u *from; size_t fromLen; @@ -548,4 +555,4 @@ mac_utf8_to_utf16(from, fromLen, actualL return result; } -#endif /* FEAT_MBYTE */ +#endif /* MACOS_CONVERT */ diff --git a/src/popupmenu.c b/src/popupmenu.c --- a/src/popupmenu.c +++ b/src/popupmenu.c @@ -87,11 +87,13 @@ redo: pum_height = size; else pum_height = PUM_DEF_HEIGHT; + if (p_ph > 0 && pum_height > p_ph) + pum_height = p_ph; /* Put the pum below "row" if possible. If there are few lines decide on * where there is more room. */ - if (row >= cmdline_row - top_clear - pum_height - && row > (cmdline_row - top_clear - height) / 2) + if (row >= cmdline_row - pum_height + && row > (cmdline_row - top_clear - height) / 2) { /* pum above "row" */ if (row >= size) @@ -104,6 +106,11 @@ redo: pum_row = 0; pum_height = row; } + if (p_ph > 0 && pum_height > p_ph) + { + pum_row += pum_height - p_ph; + pum_height = p_ph; + } } else { @@ -113,6 +120,8 @@ redo: pum_height = cmdline_row - pum_row; else pum_height = size; + if (p_ph > 0 && pum_height > p_ph) + pum_height = p_ph; } /* don't display when we only have room for one line */ @@ -214,7 +223,7 @@ pum_redraw() int i; int idx; char_u *s; - char_u *p; + char_u *p = NULL; int totwidth, width, w; int thumb_pos = 0; int thumb_heigth = 1; @@ -330,6 +339,7 @@ pum_set_selected(n) int n; { int resized = FALSE; + int context = pum_height / 2; pum_selected = n; @@ -364,20 +374,22 @@ pum_set_selected(n) pum_first = pum_selected - pum_height + 1; } - if (pum_height > 6) + /* Give a few lines of context when possible. */ + if (context > 3) + context = 3; + if (pum_height > 2) { - /* Give three lines of context when possible. */ - if (pum_first > pum_selected - 3) + if (pum_first > pum_selected - context) { /* scroll down */ - pum_first = pum_selected - 3; + pum_first = pum_selected - context; if (pum_first < 0) pum_first = 0; } - else if (pum_first < pum_selected + 3 - pum_height + 1) + else if (pum_first < pum_selected + context - pum_height + 1) { /* scroll up */ - pum_first = pum_selected + 3 - pum_height + 1; + pum_first = pum_selected + context - pum_height + 1; } } @@ -479,6 +491,12 @@ pum_set_selected(n) if (win_valid(curwin_save)) win_enter(curwin_save, TRUE); + + /* May need to update the screen again when there are + * autocommands involved. */ + pum_do_redraw = TRUE; + update_screen(0); + pum_do_redraw = FALSE; } } } diff --git a/src/screen.c b/src/screen.c --- a/src/screen.c +++ b/src/screen.c @@ -7305,6 +7305,11 @@ screenalloc(clear) #endif entered = FALSE; + +#ifdef FEAT_AUTOCMD + if (starting == 0) + apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf); +#endif } void diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak --- a/src/testdir/Make_amiga.mak +++ b/src/testdir/Make_amiga.mak @@ -24,7 +24,8 @@ SCRIPTS = test1.out test3.out test4.out test38.out test39.out test40.out test41.out test42.out \ test43.out test44.out test45.out test46.out test47.out \ test48.out test51.out test53.out test54.out test55.out \ - test56.out test57.out test58.out test59.out test60.out + test56.out test57.out test58.out test59.out test60.out \ + test61.out .SUFFIXES: .in .out @@ -104,3 +105,4 @@ test57.out: test57.in test58.out: test58.in test59.out: test59.in test60.out: test60.in +test61.out: test61.in diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak --- a/src/testdir/Make_dos.mak +++ b/src/testdir/Make_dos.mak @@ -19,7 +19,7 @@ SCRIPTS16 = test1.out test19.out test20. test44.out test45.out test46.out test47.out \ test48.out test51.out test53.out test54.out \ test55.out test56.out test57.out test58.out test59.out \ - test60.out + test60.out test61.out SCRIPTS = test3.out test4.out test5.out test6.out test7.out \ test8.out test9.out test11.out test13.out test14.out \ diff --git a/src/undo.c b/src/undo.c --- a/src/undo.c +++ b/src/undo.c @@ -295,6 +295,8 @@ u_savecommon(top, bot, newbot) if (uhp == NULL) goto nomem; } + else + uhp = NULL; /* * If we undid more than we redid, move the entry lists before and @@ -326,7 +328,7 @@ u_savecommon(top, bot, newbot) } } - if (p_ul < 0) /* no undo at all */ + if (uhp == NULL) /* no undo at all */ { if (old_curhead != NULL) u_freebranch(curbuf, old_curhead, NULL); @@ -655,6 +657,10 @@ undo_time(step, sec) int dosec = sec; int above = FALSE; + /* First make sure the current undoable change is synced. */ + if (curbuf->b_u_synced == FALSE) + u_sync(); + u_newcount = 0; u_oldcount = 0; if (curbuf->b_ml.ml_flags & ML_EMPTY) diff --git a/src/version.h b/src/version.h --- a/src/version.h +++ b/src/version.h @@ -36,5 +36,5 @@ #define VIM_VERSION_NODOT "vim70aa" #define VIM_VERSION_SHORT "7.0aa" #define VIM_VERSION_MEDIUM "7.0aa ALPHA" -#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 14)" -#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 14, compiled " +#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 15)" +#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 15, compiled "