1
0
forked from aniani/vim

updated for version 7.0106

This commit is contained in:
Bram Moolenaar
2005-07-09 21:03:22 +00:00
parent ac76e4dd91
commit a466c99842
7 changed files with 41 additions and 17 deletions

View File

@@ -932,26 +932,36 @@ completion can be enabled:
-complete=tag_listfiles tags, file names are shown when CTRL-D is hit -complete=tag_listfiles tags, file names are shown when CTRL-D is hit
-complete=var user variables -complete=var user variables
-complete=custom,{func} custom completion, defined via {func} -complete=custom,{func} custom completion, defined via {func}
-complete=customlist,{func} custom completion, defined via {func}
Custom completion *:command-completion-custom* Custom completion *:command-completion-custom*
*E467* *E468* *E467* *E468*
It is possible to define customized completion schemes via the "custom,{func}" It is possible to define customized completion schemes via the "custom,{func}"
completion argument. The {func} part should be a function with the following or the "customlist,{func}" completion argument. The {func} part should be a
prototype > function with the following prototype >
:function {func}(ArgLead, CmdLine, CursorPos) :function {func}(ArgLead, CmdLine, CursorPos)
The function need not use all these arguments, but it should provide the The function need not use all these arguments. The function should provide the
completion candidates as the return value, one per line in a newline separated completion candidates as the return value.
string. The function arguments are:
For the "custom" argument, the function should return the completion
candidates one per line in a newline separated string.
For the "customlist" argument, the function should return the completion
candidates as a Vim List. Non-string items in the list are ignored.
The function arguments are:
ArgLead the leading portion of the argument currently being ArgLead the leading portion of the argument currently being
completed on completed on
CmdLine the entire command line CmdLine the entire command line
CursorPos the cursor position in it CursorPos the cursor position in it
The function may use these for determining context. It is not necessary to The function may use these for determining context. For the "custom"
filter candidates against the (implicit pattern in) ArgLead. Vim will do argument, it is not necessary to filter candidates against the (implicit
filter the candidates with its regexp engine after function return, and this pattern in) ArgLead. Vim will do filter the candidates with its regexp engine
is probably more efficient in most cases. after function return, and this is probably more efficient in most cases. For
the "customlist" argument, Vim will not filter the returned completion
candidates and the user supplied function should filter the candidates.
The following example lists user names to a Finger command > The following example lists user names to a Finger command >
:com -complete=custom,ListUsers -nargs=1 Finger !finger <args> :com -complete=custom,ListUsers -nargs=1 Finger !finger <args>
@@ -959,6 +969,14 @@ The following example lists user names to a Finger command >
: return system("cut -d: -f1 /etc/passwd") : return system("cut -d: -f1 /etc/passwd")
:endfun :endfun
The following example completes filenames from the directories specified in
the 'path' option: >
:com -nargs=1 -bang -complete=customlist,EditFileComplete
\ EditFile edit<bang> <args>
:fun EditFileComplete(A,L,P)
: return split(globpath(&path, a:ArgLead))
:endfun
<
Range handling *E177* *E178* Range handling *E177* *E178*
By default, user-defined commands do not accept a line number range. However, By default, user-defined commands do not accept a line number range. However,

View File

@@ -3252,7 +3252,7 @@ set_one_cmd_context(xp, buff)
++xp->xp_pattern; ++xp->xp_pattern;
#if defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL) #if defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)
/* Avoid that the assignment uses EXPAND_FILES again. */ /* Avoid that the assignment uses EXPAND_FILES again. */
if (compl != EXPAND_USER_DEFINED) if (compl != EXPAND_USER_DEFINED && compl != EXPAND_USER_LIST)
compl = EXPAND_ENV_VARS; compl = EXPAND_ENV_VARS;
#endif #endif
} }
@@ -4992,6 +4992,7 @@ static struct
{EXPAND_COMMANDS, "command"}, {EXPAND_COMMANDS, "command"},
#if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL) #if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
{EXPAND_USER_DEFINED, "custom"}, {EXPAND_USER_DEFINED, "custom"},
{EXPAND_USER_LIST, "customlist"},
#endif #endif
{EXPAND_DIRECTORIES, "dir"}, {EXPAND_DIRECTORIES, "dir"},
{EXPAND_ENV_VARS, "environment"}, {EXPAND_ENV_VARS, "environment"},
@@ -5301,7 +5302,8 @@ invalid_count:
return FAIL; return FAIL;
} }
#if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL) #if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
if (*compl != EXPAND_USER_DEFINED && arg != NULL) if (*compl != EXPAND_USER_DEFINED && *compl != EXPAND_USER_LIST &&
arg != NULL)
#else #else
if (arg != NULL) if (arg != NULL)
#endif #endif
@@ -5310,7 +5312,8 @@ invalid_count:
return FAIL; return FAIL;
} }
#if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL) #if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
if (*compl == EXPAND_USER_DEFINED && arg == NULL) if ((*compl == EXPAND_USER_DEFINED || *compl == EXPAND_USER_LIST) &&
arg == NULL)
{ {
EMSG(_("E467: Custom completion requires a function argument")); EMSG(_("E467: Custom completion requires a function argument"));
return FAIL; return FAIL;

View File

@@ -2855,7 +2855,7 @@ vim_SelFile(toplevel, prompt, init_path, show_entry, x, y, fg, bg, scroll_fg, sc
SFdirModTimerId = XtAppAddTimeOut(SFapp, (unsigned long) 1000, SFdirModTimerId = XtAppAddTimeOut(SFapp, (unsigned long) 1000,
SFdirModTimer, (XtPointer) NULL); SFdirModTimer, (XtPointer) NULL);
while (1) for (;;)
{ {
XtAppNextEvent(SFapp, &event); XtAppNextEvent(SFapp, &event);
XtDispatchEvent(&event); XtDispatchEvent(&event);

View File

@@ -317,7 +317,7 @@ vms_read(char *inbuf, size_t nbytes)
function = (IO$_READLBLK | IO$M_EXTEND); function = (IO$_READLBLK | IO$M_EXTEND);
memset(inbuf, 0, nbytes); memset(inbuf, 0, nbytes);
while (1) for (;;)
{ {
status = sys$qiow(0, iochan, function, &iosb, 0, 0, inbuf, nbytes - 1, status = sys$qiow(0, iochan, function, &iosb, 0, 0, inbuf, nbytes - 1,
0, 0, &itmlst, sizeof(itmlst)); 0, 0, &itmlst, sizeof(itmlst));

View File

@@ -4828,7 +4828,7 @@ myresetstkoflw(void)
* committed block. */ * committed block. */
BYTE *pBlock = pStackBase; BYTE *pBlock = pStackBase;
while (1) for (;;)
{ {
if (VirtualQuery(pBlock, &mbi, sizeof mbi) == 0) if (VirtualQuery(pBlock, &mbi, sizeof mbi) == 0)
return 0; return 0;

View File

@@ -13,10 +13,12 @@ VIMRUNTIME = ../../runtime
endif endif
LANGUAGES = af ca cs de en_GB es fr ga it ja ko no pl ru sk sv uk vi zh_TW \ LANGUAGES = af ca cs de en_GB es fr ga it ja ko no pl ru sk sv uk vi zh_TW \
zh_TW.UTF-8 zh_CN zh_CN.UTF-8 cs.cp1250 ja.sjis pl.cp1250 ru.cp1251 sk.cp1250 uk.cp1251 \
zh_TW.UTF-8 zh_CN zh_CN.cp936 zh_CN.UTF-8
MOFILES = af.mo ca.mo cs.mo de.mo en_GB.mo es.mo fr.mo ga.mo it.mo ja.mo \ MOFILES = af.mo ca.mo cs.mo de.mo en_GB.mo es.mo fr.mo ga.mo it.mo ja.mo \
ko.mo no.mo pl.mo ru.mo sk.mo sv.mo uk.mo vi.mo \ ko.mo no.mo pl.mo ru.mo sk.mo sv.mo uk.mo vi.mo \
zh_TW.mo zh_TW.UTF-8.mo zh_CN.mo zh_CN.UTF-8.mo cs.cp1250.mo ja.sjis.mo pl.cp1250.mo ru.cp1251.mo sk.cp1250.mo uk.cp1251.mo \
zh_TW.mo zh_TW.UTF-8.mo zh_CN.mo zh_CN.cp936.mo zh_CN.UTF-8.mo
PACKAGE = vim PACKAGE = vim

View File

@@ -648,6 +648,7 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname);
#define EXPAND_COLORS 28 #define EXPAND_COLORS 28
#define EXPAND_COMPILER 29 #define EXPAND_COMPILER 29
#define EXPAND_USER_DEFINED 30 #define EXPAND_USER_DEFINED 30
#define EXPAND_USER_LIST 31
/* Values for exmode_active (0 is no exmode) */ /* Values for exmode_active (0 is no exmode) */
#define EXMODE_NORMAL 1 #define EXMODE_NORMAL 1