summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/autoload/netrw.vim67
-rw-r--r--runtime/doc/autocmd.txt11
-rw-r--r--runtime/doc/diff.txt14
-rw-r--r--runtime/doc/options.txt27
-rw-r--r--runtime/doc/pi_netrw.txt9
-rw-r--r--runtime/doc/tags4
-rwxr-xr-xsrc/auto/configure4
-rw-r--r--src/configure.in5
-rw-r--r--src/gui_mac.c20
-rw-r--r--src/misc2.c10
-rw-r--r--src/os_mac_conv.c15
-rw-r--r--src/popupmenu.c36
-rw-r--r--src/screen.c5
-rw-r--r--src/testdir/Make_amiga.mak4
-rw-r--r--src/testdir/Make_dos.mak2
-rw-r--r--src/undo.c8
-rw-r--r--src/version.h4
17 files changed, 186 insertions, 59 deletions
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index 124e61748..6fc74bc70 100644
--- 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 <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")
@@ -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
index 6f2a57ec5..4c19f1d4d 100644
--- 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 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.
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index 8a6c7afde..577b216ef 100644
--- 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 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
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 52ae467b5..7e10b85d4 100644
--- 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 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
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 5d054e924..3baed63a6 100644
--- 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 (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
diff --git a/runtime/doc/tags b/runtime/doc/tags
index d27b9118f..3b18a5b90 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -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*
diff --git a/src/auto/configure b/src/auto/configure
index 27c2d6414..13cb22610 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -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.
diff --git a/src/configure.in b/src/configure.in
index 60a19ef64..1797f69c4 100644
--- 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
index c4250a00a..d05fddb2a 100644
--- 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 **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);
diff --git a/src/misc2.c b/src/misc2.c
index 44b05178b..dece0d968 100644
--- 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
index fbce5770d..9f19a8098 100644
--- 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, 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 */
diff --git a/src/popupmenu.c b/src/popupmenu.c
index 5126e8647..ca3547cb5 100644
--- 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
index 64c2bb5bc..6de791d5b 100644
--- 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
index 62e3dedb6..3bbd964be 100644
--- a/src/testdir/Make_amiga.mak
+++ b/src/testdir/Make_amiga.mak
@@ -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
diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak
index cbab6cd1e..66c9f9f59 100644
--- a/src/testdir/Make_dos.mak
+++ b/src/testdir/Make_dos.mak
@@ -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 \
diff --git a/src/undo.c b/src/undo.c
index 88f11a342..27f04b92e 100644
--- 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
index d239d8a44..774222d07 100644
--- 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 "