forked from aniani/vim
updated for version 7.0221
This commit is contained in:
parent
038221bcd0
commit
eb94e559e0
@ -1,7 +1,7 @@
|
|||||||
" Vim completion script
|
" Vim completion script
|
||||||
" Language: C
|
" Language: C
|
||||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||||
" Last Change: 2006 Mar 09
|
" Last Change: 2006 Mar 11
|
||||||
|
|
||||||
|
|
||||||
" This function is used for the 'omnifunc' option.
|
" This function is used for the 'omnifunc' option.
|
||||||
@ -123,7 +123,8 @@ function! ccomplete#Complete(findstart, base)
|
|||||||
" Completing one word and it's a local variable: May add '[', '.' or
|
" Completing one word and it's a local variable: May add '[', '.' or
|
||||||
" '->'.
|
" '->'.
|
||||||
let match = items[0]
|
let match = items[0]
|
||||||
if match(line, match . '\s*\[') > 0
|
let kind = 'v'
|
||||||
|
if match(line, '\<' . match . '\s*\[') > 0
|
||||||
let match .= '['
|
let match .= '['
|
||||||
else
|
else
|
||||||
let res = s:Nextitem(strpart(line, 0, col), [''], 0, 1)
|
let res = s:Nextitem(strpart(line, 0, col), [''], 0, 1)
|
||||||
@ -136,7 +137,7 @@ function! ccomplete#Complete(findstart, base)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
let res = [{'match': match, 'tagline' : ''}]
|
let res = [{'match': match, 'tagline' : '', 'kind' : kind, 'info' : line}]
|
||||||
else
|
else
|
||||||
" Completing "var.", "var.something", etc.
|
" Completing "var.", "var.something", etc.
|
||||||
let res = s:Nextitem(strpart(line, 0, col), items[1:], 0, 1)
|
let res = s:Nextitem(strpart(line, 0, col), items[1:], 0, 1)
|
||||||
@ -145,13 +146,24 @@ function! ccomplete#Complete(findstart, base)
|
|||||||
|
|
||||||
if len(items) == 1
|
if len(items) == 1
|
||||||
" Only one part, no "." or "->": complete from tags file.
|
" Only one part, no "." or "->": complete from tags file.
|
||||||
call extend(res, map(taglist('^' . base), 's:Tag2item(v:val)'))
|
let tags = taglist('^' . base)
|
||||||
|
|
||||||
|
" Remove members, these can't appear without something in front.
|
||||||
|
call filter(tags, 'has_key(v:val, "kind") ? v:val["kind"] != "m" : 1')
|
||||||
|
|
||||||
|
" Remove static matches in other files.
|
||||||
|
call filter(tags, '!has_key(v:val, "static") || !v:val["static"] || bufnr("%") == bufnr(v:val["filename"])')
|
||||||
|
|
||||||
|
call extend(res, map(tags, 's:Tag2item(v:val)'))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if len(res) == 0
|
if len(res) == 0
|
||||||
" Find the variable in the tags file(s)
|
" Find the variable in the tags file(s)
|
||||||
let diclist = taglist('^' . items[0] . '$')
|
let diclist = taglist('^' . items[0] . '$')
|
||||||
|
|
||||||
|
" Remove members, these can't appear without something in front.
|
||||||
|
call filter(diclist, 'has_key(v:val, "kind") ? v:val["kind"] != "m" : 1')
|
||||||
|
|
||||||
let res = []
|
let res = []
|
||||||
for i in range(len(diclist))
|
for i in range(len(diclist))
|
||||||
" New ctags has the "typename" field.
|
" New ctags has the "typename" field.
|
||||||
@ -216,17 +228,29 @@ endfunction
|
|||||||
" If it is a variable we may add "." or "->". Don't do it for other types,
|
" If it is a variable we may add "." or "->". Don't do it for other types,
|
||||||
" such as a typedef, by not including the info that s:GetAddition() uses.
|
" such as a typedef, by not including the info that s:GetAddition() uses.
|
||||||
function! s:Tag2item(val)
|
function! s:Tag2item(val)
|
||||||
let x = s:Tagcmd2extra(a:val['cmd'], a:val['name'], a:val['filename'])
|
let res = {'match': a:val['name']}
|
||||||
|
|
||||||
|
let res['extra'] = s:Tagcmd2extra(a:val['cmd'], a:val['name'], a:val['filename'])
|
||||||
|
|
||||||
|
" Use the whole search command as the "info" entry.
|
||||||
|
let s = matchstr(a:val['cmd'], '/^\s*\zs.*\ze$/')
|
||||||
|
if s != ''
|
||||||
|
let res['info'] = substitute(s, '\\\(.\)', '\1', 'g')
|
||||||
|
endif
|
||||||
|
|
||||||
|
let res['tagline'] = ''
|
||||||
if has_key(a:val, "kind")
|
if has_key(a:val, "kind")
|
||||||
if a:val["kind"] == 'v'
|
let kind = a:val['kind']
|
||||||
return {'match': a:val['name'], 'tagline': "\t" . a:val['cmd'], 'dict': a:val, 'extra': x}
|
let res['kind'] = kind
|
||||||
endif
|
if kind == 'v'
|
||||||
if a:val["kind"] == 'f'
|
let res['tagline'] = "\t" . a:val['cmd']
|
||||||
return {'match': a:val['name'] . '(', 'tagline': "", 'extra': x}
|
let res['dict'] = a:val
|
||||||
|
elseif kind == 'f'
|
||||||
|
let res['match'] = a:val['name'] . '('
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
return {'match': a:val['name'], 'tagline': '', 'extra': x}
|
|
||||||
|
return res
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Turn a match item "val" into an item for completion.
|
" Turn a match item "val" into an item for completion.
|
||||||
@ -234,17 +258,42 @@ endfunction
|
|||||||
" "val['tagline']" is the tagline in which the last part was found.
|
" "val['tagline']" is the tagline in which the last part was found.
|
||||||
function! s:Tagline2item(val, brackets)
|
function! s:Tagline2item(val, brackets)
|
||||||
let line = a:val['tagline']
|
let line = a:val['tagline']
|
||||||
let word = a:val['match'] . a:brackets . s:GetAddition(line, a:val['match'], [a:val], a:brackets == '')
|
let add = s:GetAddition(line, a:val['match'], [a:val], a:brackets == '')
|
||||||
|
let res = {'word': a:val['match'] . a:brackets . add }
|
||||||
|
|
||||||
|
if has_key(a:val, 'info')
|
||||||
|
" Use info from Tag2item().
|
||||||
|
let res['info'] = a:val['info']
|
||||||
|
else
|
||||||
|
" Use the whole search command as the "info" entry.
|
||||||
|
let s = matchstr(line, '\t/^\s*\zs.*\ze$/')
|
||||||
|
if s != ''
|
||||||
|
let res['info'] = substitute(s, '\\\(.\)', '\1', 'g')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has_key(a:val, 'kind')
|
||||||
|
let res['kind'] = a:val['kind']
|
||||||
|
elseif add == '('
|
||||||
|
let res['kind'] = 'f'
|
||||||
|
else
|
||||||
|
let s = matchstr(line, '\t\(kind:\)\=\zs\S\ze\(\t\|$\)')
|
||||||
|
if s != ''
|
||||||
|
let res['kind'] = s
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
if has_key(a:val, 'extra')
|
if has_key(a:val, 'extra')
|
||||||
return {'word': word, 'menu': a:val['extra']}
|
let res['menu'] = a:val['extra']
|
||||||
|
return res
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Isolate the command after the tag and filename.
|
" Isolate the command after the tag and filename.
|
||||||
let s = matchstr(line, '[^\t]*\t[^\t]*\t\zs\(/^.*$/\|[^\t]*\)\ze\(;"\t\|\t\|$\)')
|
let s = matchstr(line, '[^\t]*\t[^\t]*\t\zs\(/^.*$/\|[^\t]*\)\ze\(;"\t\|\t\|$\)')
|
||||||
if s != ''
|
if s != ''
|
||||||
return {'word': word, 'menu': s:Tagcmd2extra(s, a:val['match'], matchstr(line, '[^\t]*\t\zs[^\t]*\ze\t'))}
|
let res['menu'] = s:Tagcmd2extra(s, a:val['match'], matchstr(line, '[^\t]*\t\zs[^\t]*\ze\t'))
|
||||||
endif
|
endif
|
||||||
return {'word': word}
|
return res
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Turn a command from a tag line to something that is useful in the menu
|
" Turn a command from a tag line to something that is useful in the menu
|
||||||
@ -297,20 +346,27 @@ function! s:Nextitem(lead, items, depth, all)
|
|||||||
" Use the tags file to find out if this is a typedef.
|
" Use the tags file to find out if this is a typedef.
|
||||||
let diclist = taglist('^' . tokens[tidx] . '$')
|
let diclist = taglist('^' . tokens[tidx] . '$')
|
||||||
for tagidx in range(len(diclist))
|
for tagidx in range(len(diclist))
|
||||||
|
let item = diclist[tagidx]
|
||||||
|
|
||||||
" New ctags has the "typename" field.
|
" New ctags has the "typename" field.
|
||||||
if has_key(diclist[tagidx], 'typename')
|
if has_key(item, 'typename')
|
||||||
call extend(res, s:StructMembers(diclist[tagidx]['typename'], a:items, a:all))
|
call extend(res, s:StructMembers(item['typename'], a:items, a:all))
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Only handle typedefs here.
|
" Only handle typedefs here.
|
||||||
if diclist[tagidx]['kind'] != 't'
|
if item['kind'] != 't'
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Skip matches local to another file.
|
||||||
|
if has_key(item, 'static') && item['static'] && bufnr('%') != bufnr(item['filename'])
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" For old ctags we recognize "typedef struct aaa" and
|
" For old ctags we recognize "typedef struct aaa" and
|
||||||
" "typedef union bbb" in the tags file command.
|
" "typedef union bbb" in the tags file command.
|
||||||
let cmd = diclist[tagidx]['cmd']
|
let cmd = item['cmd']
|
||||||
let ei = matchend(cmd, 'typedef\s\+')
|
let ei = matchend(cmd, 'typedef\s\+')
|
||||||
if ei > 1
|
if ei > 1
|
||||||
let cmdtokens = split(strpart(cmd, ei), '\s\+\|\<')
|
let cmdtokens = split(strpart(cmd, ei), '\s\+\|\<')
|
||||||
@ -385,11 +441,26 @@ function! s:StructMembers(typename, items, all)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Put matching members in matches[].
|
||||||
let matches = []
|
let matches = []
|
||||||
for l in qflist
|
for l in qflist
|
||||||
let memb = matchstr(l['text'], '[^\t]*')
|
let memb = matchstr(l['text'], '[^\t]*')
|
||||||
if memb =~ '^' . a:items[0]
|
if memb =~ '^' . a:items[0]
|
||||||
call add(matches, {'match': memb, 'tagline': l['text']})
|
" Skip matches local to another file.
|
||||||
|
if match(l['text'], "\tfile:") < 0 || bufnr('%') == bufnr(matchstr(l['text'], '\t\zs[^\t]*'))
|
||||||
|
let item = {'match': memb, 'tagline': l['text']}
|
||||||
|
|
||||||
|
" Add the kind of item.
|
||||||
|
let s = matchstr(l['text'], '\t\(kind:\)\=\zs\S\ze\(\t\|$\)')
|
||||||
|
if s != ''
|
||||||
|
let item['kind'] = s
|
||||||
|
if s == 'f'
|
||||||
|
let item['match'] = memb . '('
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
call add(matches, item)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
*todo.txt* For Vim version 7.0aa. Last change: 2006 Mar 10
|
*todo.txt* For Vim version 7.0aa. Last change: 2006 Mar 11
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@ -30,11 +30,6 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
|
|||||||
*known-bugs*
|
*known-bugs*
|
||||||
-------------------- Known bugs and current work -----------------------
|
-------------------- Known bugs and current work -----------------------
|
||||||
|
|
||||||
--remote-tab to open file in new tab in existing Vim server?
|
|
||||||
--remote-tab-silent
|
|
||||||
--remote-tab-wait
|
|
||||||
--remote-tab-wait-silent
|
|
||||||
|
|
||||||
Win32: Describe how to do debugging. (George Reilly)
|
Win32: Describe how to do debugging. (George Reilly)
|
||||||
|
|
||||||
Mac unicode patch (Da Woon Jung):
|
Mac unicode patch (Da Woon Jung):
|
||||||
@ -53,17 +48,6 @@ Mac unicode patch (Da Woon Jung):
|
|||||||
|
|
||||||
CONSIDERED FOR VERSION 7.0:
|
CONSIDERED FOR VERSION 7.0:
|
||||||
|
|
||||||
Omni completion:
|
|
||||||
ccomplete:
|
|
||||||
- For C add tag "kind" field to each match?
|
|
||||||
- When a typedef or struct is local to a file only use it in that file?
|
|
||||||
|
|
||||||
UI:
|
|
||||||
- Show "info" from a match in preview window (with an option or by opening
|
|
||||||
a preview window with a specific name).
|
|
||||||
Or use one window for matches, another for context/info (Doug Kearns,
|
|
||||||
2005 Sep 13)
|
|
||||||
|
|
||||||
- UNDO TREE: keep all states of the text, don't delete undo info.
|
- UNDO TREE: keep all states of the text, don't delete undo info.
|
||||||
When making a change, instead of clearing any future undo (thus redo)
|
When making a change, instead of clearing any future undo (thus redo)
|
||||||
info, make a new branch.
|
info, make a new branch.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
*version7.txt* For Vim version 7.0aa. Last change: 2006 Mar 10
|
*version7.txt* For Vim version 7.0aa. Last change: 2006 Mar 11
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@ -1896,4 +1896,9 @@ would be given for using a '|'. Also with ":loadkeymap".
|
|||||||
Motif: When using a fontset and 'encoding' is "utf-8" and sizeof(wchar_t) !=
|
Motif: When using a fontset and 'encoding' is "utf-8" and sizeof(wchar_t) !=
|
||||||
sizeof(XChar2b) then display was wrong. (Yukihiro Nakadaira)
|
sizeof(XChar2b) then display was wrong. (Yukihiro Nakadaira)
|
||||||
|
|
||||||
|
":all" always set the current window to the first window, even when it
|
||||||
|
contains a buffer that is not in the argument list (can't be closed because it
|
||||||
|
is modified). Now go to the window that has the first item of the argument
|
||||||
|
list.
|
||||||
|
|
||||||
vim:tw=78:ts=8:ft=help:norl:
|
vim:tw=78:ts=8:ft=help:norl:
|
||||||
|
80
src/main.c
80
src/main.c
@ -1461,20 +1461,16 @@ early_arg_scan(parmp)
|
|||||||
mainerr_arg_missing((char_u *)argv[i]);
|
mainerr_arg_missing((char_u *)argv[i]);
|
||||||
parmp->serverName_arg = (char_u *)argv[++i];
|
parmp->serverName_arg = (char_u *)argv[++i];
|
||||||
}
|
}
|
||||||
else if (STRICMP(argv[i], "--serverlist") == 0
|
else if (STRICMP(argv[i], "--serverlist") == 0)
|
||||||
|| STRICMP(argv[i], "--remote-send") == 0
|
|
||||||
|| STRICMP(argv[i], "--remote-expr") == 0
|
|
||||||
|| STRICMP(argv[i], "--remote") == 0
|
|
||||||
|| STRICMP(argv[i], "--remote-silent") == 0)
|
|
||||||
parmp->serverArg = TRUE;
|
parmp->serverArg = TRUE;
|
||||||
else if (STRICMP(argv[i], "--remote-wait") == 0
|
else if (STRNICMP(argv[i], "--remote", 8) == 0)
|
||||||
|| STRICMP(argv[i], "--remote-wait-silent") == 0)
|
|
||||||
{
|
{
|
||||||
parmp->serverArg = TRUE;
|
parmp->serverArg = TRUE;
|
||||||
#ifdef FEAT_GUI
|
# ifdef FEAT_GUI
|
||||||
/* don't fork() when starting the GUI to edit the files ourself */
|
if (strstr(argv[i], "-wait") != 0)
|
||||||
gui.dofork = FALSE;
|
/* don't fork() when starting the GUI to edit files ourself */
|
||||||
#endif
|
gui.dofork = FALSE;
|
||||||
|
# endif
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
# ifdef FEAT_GUI_GTK
|
# ifdef FEAT_GUI_GTK
|
||||||
@ -3127,7 +3123,7 @@ gettimeofday(struct timeval *tv, char *dummy)
|
|||||||
* Common code for the X command server and the Win32 command server.
|
* Common code for the X command server and the Win32 command server.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static char_u *build_drop_cmd __ARGS((int filec, char **filev, int sendReply));
|
static char_u *build_drop_cmd __ARGS((int filec, char **filev, int tabs, int sendReply));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do the client-server stuff, unless "--servername ''" was used.
|
* Do the client-server stuff, unless "--servername ''" was used.
|
||||||
@ -3235,6 +3231,7 @@ cmdsrv_main(argc, argv, serverName_arg, serverStr)
|
|||||||
#define ARGTYPE_EDIT_WAIT 2
|
#define ARGTYPE_EDIT_WAIT 2
|
||||||
#define ARGTYPE_SEND 3
|
#define ARGTYPE_SEND 3
|
||||||
int silent = FALSE;
|
int silent = FALSE;
|
||||||
|
int tabs = FALSE;
|
||||||
# ifndef FEAT_X11
|
# ifndef FEAT_X11
|
||||||
HWND srv;
|
HWND srv;
|
||||||
# else
|
# else
|
||||||
@ -3264,24 +3261,40 @@ cmdsrv_main(argc, argv, serverName_arg, serverStr)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (STRICMP(argv[i], "--remote") == 0)
|
if (STRICMP(argv[i], "--remote-send") == 0)
|
||||||
argtype = ARGTYPE_EDIT;
|
|
||||||
else if (STRICMP(argv[i], "--remote-silent") == 0)
|
|
||||||
{
|
|
||||||
argtype = ARGTYPE_EDIT;
|
|
||||||
silent = TRUE;
|
|
||||||
}
|
|
||||||
else if (STRICMP(argv[i], "--remote-wait") == 0)
|
|
||||||
argtype = ARGTYPE_EDIT_WAIT;
|
|
||||||
else if (STRICMP(argv[i], "--remote-wait-silent") == 0)
|
|
||||||
{
|
|
||||||
argtype = ARGTYPE_EDIT_WAIT;
|
|
||||||
silent = TRUE;
|
|
||||||
}
|
|
||||||
else if (STRICMP(argv[i], "--remote-send") == 0)
|
|
||||||
argtype = ARGTYPE_SEND;
|
argtype = ARGTYPE_SEND;
|
||||||
|
else if (STRNICMP(argv[i], "--remote", 8) == 0)
|
||||||
|
{
|
||||||
|
char *p = argv[i] + 8;
|
||||||
|
|
||||||
|
argtype = ARGTYPE_EDIT;
|
||||||
|
while (*p != NUL)
|
||||||
|
{
|
||||||
|
if (STRNICMP(p, "-wait", 5) == 0)
|
||||||
|
{
|
||||||
|
argtype = ARGTYPE_EDIT_WAIT;
|
||||||
|
p += 5;
|
||||||
|
}
|
||||||
|
else if (STRNICMP(p, "-silent", 7) == 0)
|
||||||
|
{
|
||||||
|
silent = TRUE;
|
||||||
|
p += 7;
|
||||||
|
}
|
||||||
|
else if (STRNICMP(p, "-tab", 4) == 0)
|
||||||
|
{
|
||||||
|
tabs = TRUE;
|
||||||
|
p += 4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
argtype = ARGTYPE_OTHER;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
argtype = ARGTYPE_OTHER;
|
argtype = ARGTYPE_OTHER;
|
||||||
|
|
||||||
if (argtype != ARGTYPE_OTHER)
|
if (argtype != ARGTYPE_OTHER)
|
||||||
{
|
{
|
||||||
if (i == *argc - 1)
|
if (i == *argc - 1)
|
||||||
@ -3294,7 +3307,7 @@ cmdsrv_main(argc, argv, serverName_arg, serverStr)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
*serverStr = build_drop_cmd(*argc - i - 1, argv + i + 1,
|
*serverStr = build_drop_cmd(*argc - i - 1, argv + i + 1,
|
||||||
argtype == ARGTYPE_EDIT_WAIT);
|
tabs, argtype == ARGTYPE_EDIT_WAIT);
|
||||||
if (*serverStr == NULL)
|
if (*serverStr == NULL)
|
||||||
{
|
{
|
||||||
/* Probably out of memory, exit. */
|
/* Probably out of memory, exit. */
|
||||||
@ -3473,9 +3486,10 @@ cmdsrv_main(argc, argv, serverName_arg, serverStr)
|
|||||||
* Build a ":drop" command to send to a Vim server.
|
* Build a ":drop" command to send to a Vim server.
|
||||||
*/
|
*/
|
||||||
static char_u *
|
static char_u *
|
||||||
build_drop_cmd(filec, filev, sendReply)
|
build_drop_cmd(filec, filev, tabs, sendReply)
|
||||||
int filec;
|
int filec;
|
||||||
char **filev;
|
char **filev;
|
||||||
|
int tabs; /* Use ":tab drop" instead of ":drop". */
|
||||||
int sendReply;
|
int sendReply;
|
||||||
{
|
{
|
||||||
garray_T ga;
|
garray_T ga;
|
||||||
@ -3500,9 +3514,13 @@ build_drop_cmd(filec, filev, sendReply)
|
|||||||
ga_init2(&ga, 1, 100);
|
ga_init2(&ga, 1, 100);
|
||||||
ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd ");
|
ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd ");
|
||||||
ga_concat(&ga, p);
|
ga_concat(&ga, p);
|
||||||
/* Call inputsave() so that a prompt for an encryption key works. */
|
|
||||||
ga_concat(&ga, (char_u *)"<CR>:if exists('*inputsave')|call inputsave()|endif|drop");
|
|
||||||
vim_free(p);
|
vim_free(p);
|
||||||
|
|
||||||
|
/* Call inputsave() so that a prompt for an encryption key works. */
|
||||||
|
ga_concat(&ga, (char_u *)"<CR>:if exists('*inputsave')|call inputsave()|endif|");
|
||||||
|
if (tabs)
|
||||||
|
ga_concat(&ga, (char_u *)"tab ");
|
||||||
|
ga_concat(&ga, (char_u *)"drop");
|
||||||
for (i = 0; i < filec; i++)
|
for (i = 0; i < filec; i++)
|
||||||
{
|
{
|
||||||
/* On Unix the shell has already expanded the wildcards, don't want to
|
/* On Unix the shell has already expanded the wildcards, don't want to
|
||||||
|
Loading…
x
Reference in New Issue
Block a user