]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
updated for version 7.0225
authorBram Moolenaar <Bram@vim.org>
Wed, 15 Mar 2006 22:59:18 +0000 (22:59 +0000)
committerBram Moolenaar <Bram@vim.org>
Wed, 15 Mar 2006 22:59:18 +0000 (22:59 +0000)
17 files changed:
runtime/autoload/netrw.vim
runtime/doc/autocmd.txt
runtime/doc/diff.txt
runtime/doc/options.txt
runtime/doc/pi_netrw.txt
runtime/doc/tags
src/auto/configure
src/configure.in
src/gui_mac.c
src/misc2.c
src/os_mac_conv.c
src/popupmenu.c
src/screen.c
src/testdir/Make_amiga.mak
src/testdir/Make_dos.mak
src/undo.c
src/version.h

index 124e6174895db3344fc1737cfab538411e2f8391..6fc74bc7064cf2f4d3111a6c785517fac51c74b7 100644 (file)
@@ -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 <drchipNOSPAM at campbellfamily dot biz>
 " 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")
@@ -3368,6 +3354,47 @@ fun! s:LocalBrowseRename(path) range
 "  call Dret("LocalBrowseRename")
 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()
@@ -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
index 6f2a57ec59b34d35ae83ab7c5f21e49fded5a7e3..4c19f1d4d625b258b93126ebf0197e9a00da3a65 100644 (file)
@@ -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 the modification time of
                                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 before writing the
                                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.
index 8a6c7afde6c892028a7c6ca5f612b4444ff74c00..577b216ef734f61b22b73b97e5df9df6a0e7bf61 100644 (file)
@@ -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 options are set:
        '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 split, prepend |:vertical|.  Examples: >
 
        :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 variables are set to the file names used:
 
 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
index 52ae467b5833ad52c8b03e22914e25f7fa2bcaaf..7e10b85d468191fab2136fc0a0541e377132f9a0 100644 (file)
@@ -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 short description can be found at |Q_op|.
                                                *'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 short description can be found at |Q_op|.
           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 short description can be found at |Q_op|.
                                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 short description can be found at |Q_op|.
                        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
index 5d054e92469f588354644f398e2247867ccdcf77..3baed63a6b60e6dc171875fab5c5c575dd0dece0 100644 (file)
@@ -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 (assuming :set nocp).
 ==============================================================================
 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
index d27b9118f2a24827615e580b8c102deeba384466..3b18a5b9012ddc15a0e04ad632056d2d6bd20d1e 100644 (file)
@@ -646,6 +646,7 @@ $VIMRUNTIME starting.txt    /*$VIMRUNTIME*
 '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 @@ $VIMRUNTIME starting.txt    /*$VIMRUNTIME*
 '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     /*FileAppendPost*
 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*
index 27c2d64147289e4996e928ea887add48a221e2f3..13cb22610a0aaad233922eaef9346a025090ed92 100755 (executable)
@@ -2838,6 +2838,10 @@ if test "`(uname) 2>/dev/null`" = Darwin; then
   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.
index 60a19ef64591f94e7d3c9bdb02c8c176b45abfbb..1797f69c41f5a87063609a325442e01136b11a84 100644 (file)
@@ -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.],
index c4250a00af8cbb815045f0205ba5f1db1f211643..d05fddb2a976acd47ef0e10b98836150833a7fed 100644 (file)
@@ -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 **end, int vertical)
     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 *cbd)
 #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 idx)
        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, int idx)
        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 *icon)
     /* 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 *icon)
     if (title == NULL)         /* nothing to do */
        return;
 
-#if defined(FEAT_MBYTE)
+#ifdef MACOS_CONVERT
     windowTitleLen = STRLEN(title);
     windowTitle  = mac_enc_to_cfstring(title, windowTitleLen);
 
index 44b05178b70d9af8ef967345d614fbebb2ca8400..dece0d96807997d2c9ea8096f663c66166a31c8f 100644 (file)
@@ -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();
index fbce5770d644cda2bb60162ed548dc4ab4b7db5a..9f19a809882ded8110bce8f366b1688ae4e414c3 100644 (file)
 #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, decompLen, precompLen)
 /*
  * 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, actualLen)
 /*
  * 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, actualLen)
 
     return result;
 }
-#endif /* FEAT_MBYTE */
+#endif /* MACOS_CONVERT */
index 5126e8647ba358fd182031f8f63994a717d55f28..ca3547cb58bc910c72a7d179dd62e7e6cd2559f4 100644 (file)
@@ -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;
                    }
                }
            }
index 64c2bb5bc67c265757a50ac23494c81a4257c04c..6de791d5b4afcd5b9bc8a89072039bb32b250fb0 100644 (file)
@@ -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
index 62e3dedb64381b25c9cff2ed0f87016b17ee22c8..3bbd964be924d935d01753d5e9b008ffd4683d28 100644 (file)
@@ -24,7 +24,8 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.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
index cbab6cd1e194884e1b0e2abab57af22dce914ca4..66c9f9f595ac7dcd098a0ef60b6e34a85a22e91f 100644 (file)
@@ -19,7 +19,7 @@ SCRIPTS16 =   test1.out test19.out test20.out test22.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
+               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 \
index 88f11a342a3443953e0495319fc084338083e9ea..27f04b92e55494e6cfb1c8d6663aefbb8ee42b25 100644 (file)
@@ -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)
index d239d8a441f95a9ceca74968836b1d3451180a25..774222d07d5c3eae0cf1c280556291cb07098504 100644 (file)
@@ -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 "