" 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
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
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")
" 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()
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()
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")
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
-*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
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
|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
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|.
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.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
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
'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.
: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.
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
-*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
*'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:
preview Show extra information about the currently selected
completion in the preview window.
-
*'confirm'* *'cf'* *'noconfirm'* *'nocf'*
'confirm' 'cf' boolean (default off)
global
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)
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
-*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.
==============================================================================
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
'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'*
'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'*
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*
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*
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.
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.],
static EventHandlerUPP mouseWheelHandlerUPP = NULL;
SInt32 gMacSystemVersion;
-#if defined(FEAT_MBYTE)
-#define USE_CARBONKEYHANDLER
+#ifdef MACOS_CONVERT
+# define USE_CARBONKEYHANDLER
static EventHandlerUPP keyEventHandlerUPP = NULL;
#endif
Boolean isPanelVisible;
} gFontPanelInfo = { 0, 0, 0, false };
-#if defined(FEAT_MBYTE)
+#ifdef MACOS_CONVERT
# define USE_ATSUI_DRAWING
ATSUStyle gFontStyle;
Boolean gIsFontFallbackSet;
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.
#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);
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)
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);
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);
/* 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
if (title == NULL) /* nothing to do */
return;
-#if defined(FEAT_MBYTE)
+#ifdef MACOS_CONVERT
windowTitleLen = STRLEN(title);
windowTitle = mac_enc_to_cfstring(title, windowTitleLen);
#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)
reset_last_sourcing();
+#ifdef FEAT_WINDOWS
+ vim_free(first_tabpage);
+#endif
+
# ifdef UNIX
/* Machine-specific free. */
mch_free_mem();
#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));
/*
* 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;
/*
* Converts from UTF-8 to UTF-16 UniChars
*/
- UniChar *
+ static UniChar *
mac_utf8_to_utf16(from, fromLen, actualLen)
char_u *from;
size_t fromLen;
return result;
}
-#endif /* FEAT_MBYTE */
+#endif /* MACOS_CONVERT */
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)
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
{
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 */
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;
int n;
{
int resized = FALSE;
+ int context = pum_height / 2;
pum_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;
}
}
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;
}
}
}
#endif
entered = FALSE;
+
+#ifdef FEAT_AUTOCMD
+ if (starting == 0)
+ apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
+#endif
}
void
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
test58.out: test58.in
test59.out: test59.in
test60.out: test60.in
+test61.out: test61.in
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 \
if (uhp == NULL)
goto nomem;
}
+ else
+ uhp = NULL;
/*
* If we undid more than we redid, move the entry lists before and
}
}
- 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);
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)
#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 "