mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
updated for version 7.0220
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
*todo.txt* For Vim version 7.0aa. Last change: 2006 Mar 09
|
*todo.txt* For Vim version 7.0aa. Last change: 2006 Mar 10
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@@ -30,6 +30,11 @@ 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):
|
||||||
@@ -45,58 +50,19 @@ Mac unicode patch (Da Woon Jung):
|
|||||||
- With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
|
- With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
|
||||||
(Alan Schmitt)
|
(Alan Schmitt)
|
||||||
|
|
||||||
Add ShellCmdPre/ShellCmdPost/ShellFilterPre/ShellFilterPost ?
|
|
||||||
Useful for updating the diretory listing in netrw.
|
|
||||||
|
|
||||||
CONSIDERED FOR VERSION 7.0:
|
CONSIDERED FOR VERSION 7.0:
|
||||||
|
|
||||||
Omni completion:
|
Omni completion:
|
||||||
ccomplete:
|
ccomplete:
|
||||||
- For C add tag "kind" field to each match?
|
- For C add tag "kind" field to each match?
|
||||||
- Flickering because of syntax highlighting redrawing further lines.
|
|
||||||
- When a typedef or struct is local to a file only use it in that file?
|
- When a typedef or struct is local to a file only use it in that file?
|
||||||
|
|
||||||
UI:
|
UI:
|
||||||
- Add an "auto" mode: after typing a character (or string) completion is
|
|
||||||
done for the longest common string. plugin defines the possible
|
|
||||||
characters/strings. (Martin Stubenschrott)
|
|
||||||
And/or: Provide a function to popup the menu, so that an insert mode
|
|
||||||
mapping can start it (with a specific selection).
|
|
||||||
- Show "info" from a match in preview window (with an option or by opening
|
- Show "info" from a match in preview window (with an option or by opening
|
||||||
a preview window with a specific name).
|
a preview window with a specific name).
|
||||||
Or use one window for matches, another for context/info (Doug Kearns,
|
Or use one window for matches, another for context/info (Doug Kearns,
|
||||||
2005 Sep 13)
|
2005 Sep 13)
|
||||||
- Ideas on: http://www.wholetomato.com/
|
|
||||||
|
|
||||||
Completion logic:
|
|
||||||
Ideas from others:
|
|
||||||
http://www.vim.org/scripts/script.php?script_id=747
|
|
||||||
http://sourceforge.net/projects/insenvim
|
|
||||||
or http://insenvim.sourceforge.net
|
|
||||||
Java, XML, HTML, C++, JSP, SQL, C#
|
|
||||||
MS-Windows only, lots of dependencies (e.g. Perl, Internet
|
|
||||||
explorer), uses .dll shared libraries.
|
|
||||||
For C++ uses $INCLUDE environment var.
|
|
||||||
Uses Perl for C++.
|
|
||||||
Uses ctags to find the info:
|
|
||||||
ctags -f $allTagsFile --fields=+aiKmnsSz --language-force=C++ --C++-kinds=+cefgmnpsut-dlux -u $files
|
|
||||||
|
|
||||||
www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang)
|
|
||||||
IComplete: http://www.vim.org/scripts/script.php?script_id=1265
|
|
||||||
and http://stud4.tuwien.ac.at/~e0125672/icomplete/
|
|
||||||
http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
|
|
||||||
Ivan Villanueva has something for Java.
|
|
||||||
Emads: http://www.xref-tech.com/xrefactory/more_c_completion.html
|
|
||||||
Ideas from the Vim 7 BOF at SANE:
|
|
||||||
- For interpreted languages, use the interpreter to obtain information.
|
|
||||||
Should work for Java (Eclipse does this), Python, Tcl, etc.
|
|
||||||
Richard Emberson mentioned working on an interface to Java.
|
|
||||||
- Check Readline for its completion interface.
|
|
||||||
- Use ctags for other languages. Writing a file could trigger running
|
|
||||||
ctags, merging the tags of the changed file.
|
|
||||||
Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
|
|
||||||
|
|
||||||
- Pre-expand abbreviations, show which abbrevs would match?
|
|
||||||
|
|
||||||
- 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)
|
||||||
@@ -2186,6 +2152,36 @@ Autocommands:
|
|||||||
them save the file itself besides the swapfile.
|
them save the file itself besides the swapfile.
|
||||||
|
|
||||||
|
|
||||||
|
Omni completion:
|
||||||
|
- Ideas from the Vim 7 BOF at SANE:
|
||||||
|
- For interpreted languages, use the interpreter to obtain information.
|
||||||
|
Should work for Java (Eclipse does this), Python, Tcl, etc.
|
||||||
|
Richard Emberson mentioned working on an interface to Java.
|
||||||
|
- Check Readline for its completion interface.
|
||||||
|
- Use ctags for other languages. Writing a file could trigger running
|
||||||
|
ctags, merging the tags of the changed file.
|
||||||
|
- Ideas from others:
|
||||||
|
http://www.wholetomato.com/
|
||||||
|
http://www.vim.org/scripts/script.php?script_id=747
|
||||||
|
http://sourceforge.net/projects/insenvim
|
||||||
|
or http://insenvim.sourceforge.net
|
||||||
|
Java, XML, HTML, C++, JSP, SQL, C#
|
||||||
|
MS-Windows only, lots of dependencies (e.g. Perl, Internet
|
||||||
|
explorer), uses .dll shared libraries.
|
||||||
|
For C++ uses $INCLUDE environment var.
|
||||||
|
Uses Perl for C++.
|
||||||
|
Uses ctags to find the info:
|
||||||
|
ctags -f $allTagsFile --fields=+aiKmnsSz --language-force=C++ --C++-kinds=+cefgmnpsut-dlux -u $files
|
||||||
|
www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang)
|
||||||
|
IComplete: http://www.vim.org/scripts/script.php?script_id=1265
|
||||||
|
and http://stud4.tuwien.ac.at/~e0125672/icomplete/
|
||||||
|
http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
|
||||||
|
Ivan Villanueva has something for Java.
|
||||||
|
Emads: http://www.xref-tech.com/xrefactory/more_c_completion.html
|
||||||
|
Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
|
||||||
|
- Pre-expand abbreviations, show which abbrevs would match?
|
||||||
|
|
||||||
|
|
||||||
Insert mode completion/expansion:
|
Insert mode completion/expansion:
|
||||||
- GUI implementation of the popup menu.
|
- GUI implementation of the popup menu.
|
||||||
8 When there is no word before the cursor but something like "sys." complete
|
8 When there is no word before the cursor but something like "sys." complete
|
||||||
@@ -2605,6 +2601,7 @@ Mappings and Abbreviations:
|
|||||||
8 To make a mapping work with a prepended "x to select a register, store the
|
8 To make a mapping work with a prepended "x to select a register, store the
|
||||||
last _typed_ register name and access it with "&.
|
last _typed_ register name and access it with "&.
|
||||||
8 Add ":amap", like ":amenu".
|
8 Add ":amap", like ":amenu".
|
||||||
|
7 Add a mapping that works always, for remapping the keyboard.
|
||||||
8 Add ":cab!", abbreviations that only apply to Command-line mode and not to
|
8 Add ":cab!", abbreviations that only apply to Command-line mode and not to
|
||||||
entering search strings.
|
entering search strings.
|
||||||
8 Add a flag to ":abbrev" to eat the character that triggers the
|
8 Add a flag to ":abbrev" to eat the character that triggers the
|
||||||
@@ -2625,12 +2622,17 @@ Mappings and Abbreviations:
|
|||||||
7 Make it possible to map 'wildchar', but only when it's a special character
|
7 Make it possible to map 'wildchar', but only when it's a special character
|
||||||
(like CTRL-E). Currently it's only recognized when typed. Useful for
|
(like CTRL-E). Currently it's only recognized when typed. Useful for
|
||||||
mapping a key to do something and then completion.
|
mapping a key to do something and then completion.
|
||||||
7 Add a mapping that works always, for remapping the keyboard.
|
|
||||||
6 Context-sensitive abbreviations: Specify syntax group(s) in which the
|
6 Context-sensitive abbreviations: Specify syntax group(s) in which the
|
||||||
abbreviations are to be used.
|
abbreviations are to be used.
|
||||||
- Add mappings that take arguments. Could work like the ":s" command. For
|
- Add mappings that take arguments. Could work like the ":s" command. For
|
||||||
example, for a mouse escape sequence:
|
example, for a mouse escape sequence:
|
||||||
:mapexp <Esc>{\([0-9]*\),\([0-9]*\); H\1j\2l
|
:mapexp <Esc>{\([0-9]*\),\([0-9]*\); H\1j\2l
|
||||||
|
- Add optional <Number> argument for mappings:
|
||||||
|
:map <Number>q ^W^W<Number>G
|
||||||
|
:map <Number>q<Number>t ^W^W<Number1-1>G<Number2>l
|
||||||
|
:map q<Char> :s/<Char>/\u\0/g
|
||||||
|
Or implicit:
|
||||||
|
:map q <Register>d<Number>$
|
||||||
- Make it possible to include a <Nul> in the lhs and rhs of a mapping.
|
- Make it possible to include a <Nul> in the lhs and rhs of a mapping.
|
||||||
- Add command to repeat a whole mapping ("." only repeats the last change in
|
- Add command to repeat a whole mapping ("." only repeats the last change in
|
||||||
a mapping). Also: Repeat a whole insert command, including any mappings
|
a mapping). Also: Repeat a whole insert command, including any mappings
|
||||||
@@ -2645,17 +2647,9 @@ Mappings and Abbreviations:
|
|||||||
mappings first, then remove them again when a mapping matches. Avoids
|
mappings first, then remove them again when a mapping matches. Avoids
|
||||||
that characters that are the start of some mapping are not shown until you
|
that characters that are the start of some mapping are not shown until you
|
||||||
hit another character.
|
hit another character.
|
||||||
- Add optional <Number> argument for mappings:
|
|
||||||
:map <Number>q ^W^W<Number>G
|
|
||||||
:map <Number>q<Number>t ^W^W<Number1-1>G<Number2>l
|
|
||||||
:map q<Char> :s/<Char>/\u\0/g
|
|
||||||
Or implicit:
|
|
||||||
:map q <Register>d<Number>$
|
|
||||||
- Add mappings for replace mode: ":rmap". How do we then enter mappings for
|
- Add mappings for replace mode: ":rmap". How do we then enter mappings for
|
||||||
non-replace Insert mode?
|
non-replace Insert mode?
|
||||||
- Add separate mappings for Visual-character/block/line mode?
|
- Add separate mappings for Visual-character/block/line mode?
|
||||||
6 Alias for Normal mode commands, works like :substitute? Would allow
|
|
||||||
mappings with arguments.
|
|
||||||
- Add 'mapstop' command, to stop recursive mappings.
|
- Add 'mapstop' command, to stop recursive mappings.
|
||||||
- List mappings that have a raw escape sequence both with the name of the key
|
- List mappings that have a raw escape sequence both with the name of the key
|
||||||
for that escape sequence (if there is one) and the sequence itself.
|
for that escape sequence (if there is one) and the sequence itself.
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
*version7.txt* For Vim version 7.0aa. Last change: 2006 Mar 09
|
*version7.txt* For Vim version 7.0aa. Last change: 2006 Mar 10
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@@ -32,6 +32,7 @@ POSIX compatibility |new-posix|
|
|||||||
Debugger support |new-debug-support|
|
Debugger support |new-debug-support|
|
||||||
Remote file explorer |new-netrw-explore|
|
Remote file explorer |new-netrw-explore|
|
||||||
Define an operator |new-define-operator|
|
Define an operator |new-define-operator|
|
||||||
|
Mapping to an expression |new-map-expression|
|
||||||
Location list |new-location-list|
|
Location list |new-location-list|
|
||||||
Various new items |new-items-7|
|
Various new items |new-items-7|
|
||||||
|
|
||||||
@@ -400,6 +401,17 @@ through the |g@| operator.
|
|||||||
See |:map-operator| for the explanation and an example.
|
See |:map-operator| for the explanation and an example.
|
||||||
|
|
||||||
|
|
||||||
|
Mapping to an expression *new-map-expression*
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
The {rhs} argument of a mapping can be an expression. That means the
|
||||||
|
resulting characters can depend on the context. Example: >
|
||||||
|
:inoremap <expr> . InsertDot()
|
||||||
|
Here the dot will be mapped to whatever InsertDot() returns.
|
||||||
|
|
||||||
|
Also works for abbreviations. See |:map-<expr>| for the details.
|
||||||
|
|
||||||
|
|
||||||
Location list *new-location-list*
|
Location list *new-location-list*
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
@@ -647,6 +659,9 @@ New autocommand events: ~
|
|||||||
|
|
||||||
|SpellFileMissing| when a spell file can't be found
|
|SpellFileMissing| when a spell file can't be found
|
||||||
|
|
||||||
|
|ShellCmdPost| after executing a shell command
|
||||||
|
|ShellFilterPost| after filtering with a shell command
|
||||||
|
|
||||||
|SourcePre| before sourcing a Vim script
|
|SourcePre| before sourcing a Vim script
|
||||||
|
|
||||||
|CursorHoldI| the user doesn't press a key for a while in Insert mode
|
|CursorHoldI| the user doesn't press a key for a while in Insert mode
|
||||||
|
31
src/eval.c
31
src/eval.c
@@ -467,6 +467,7 @@ static void f_char2nr __ARGS((typval_T *argvars, typval_T *rettv));
|
|||||||
static void f_cindent __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_cindent __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_col __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_col __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
#if defined(FEAT_INS_EXPAND)
|
#if defined(FEAT_INS_EXPAND)
|
||||||
|
static void f_complete __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_complete_add __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_complete_add __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
static void f_complete_check __ARGS((typval_T *argvars, typval_T *rettv));
|
static void f_complete_check __ARGS((typval_T *argvars, typval_T *rettv));
|
||||||
#endif
|
#endif
|
||||||
@@ -6884,6 +6885,7 @@ static struct fst
|
|||||||
{"cindent", 1, 1, f_cindent},
|
{"cindent", 1, 1, f_cindent},
|
||||||
{"col", 1, 1, f_col},
|
{"col", 1, 1, f_col},
|
||||||
#if defined(FEAT_INS_EXPAND)
|
#if defined(FEAT_INS_EXPAND)
|
||||||
|
{"complete", 2, 2, f_complete},
|
||||||
{"complete_add", 1, 1, f_complete_add},
|
{"complete_add", 1, 1, f_complete_add},
|
||||||
{"complete_check", 0, 0, f_complete_check},
|
{"complete_check", 0, 0, f_complete_check},
|
||||||
#endif
|
#endif
|
||||||
@@ -8101,6 +8103,35 @@ f_col(argvars, rettv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(FEAT_INS_EXPAND)
|
#if defined(FEAT_INS_EXPAND)
|
||||||
|
/*
|
||||||
|
* "complete()" function
|
||||||
|
*/
|
||||||
|
/*ARGSUSED*/
|
||||||
|
static void
|
||||||
|
f_complete(argvars, rettv)
|
||||||
|
typval_T *argvars;
|
||||||
|
typval_T *rettv;
|
||||||
|
{
|
||||||
|
int startcol;
|
||||||
|
|
||||||
|
if ((State & INSERT) == 0)
|
||||||
|
{
|
||||||
|
EMSG(_("E785: complete() can only be used in Insert mode"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (argvars[1].v_type != VAR_LIST || argvars[1].vval.v_list == NULL)
|
||||||
|
{
|
||||||
|
EMSG(_(e_invarg));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
startcol = get_tv_number_chk(&argvars[0], NULL);
|
||||||
|
if (startcol <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
set_completion(startcol - 1, argvars[1].vval.v_list);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "complete_add()" function
|
* "complete_add()" function
|
||||||
*/
|
*/
|
||||||
|
@@ -949,9 +949,14 @@ do_bang(addr_count, eap, forceit, do_in, do_out)
|
|||||||
do_shell(newcmd, 0);
|
do_shell(newcmd, 0);
|
||||||
}
|
}
|
||||||
else /* :range! */
|
else /* :range! */
|
||||||
|
{
|
||||||
/* Careful: This may recursively call do_bang() again! (because of
|
/* Careful: This may recursively call do_bang() again! (because of
|
||||||
* autocommands) */
|
* autocommands) */
|
||||||
do_filter(line1, line2, eap, newcmd, do_in, do_out);
|
do_filter(line1, line2, eap, newcmd, do_in, do_out);
|
||||||
|
#ifdef FEAT_AUTOCMD
|
||||||
|
apply_autocmds(EVENT_SHELLFILTERPOST, NULL, NULL, FALSE, curbuf);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
if (free_newcmd)
|
if (free_newcmd)
|
||||||
vim_free(newcmd);
|
vim_free(newcmd);
|
||||||
}
|
}
|
||||||
@@ -1419,6 +1424,10 @@ do_shell(cmd, flags)
|
|||||||
|
|
||||||
/* display any error messages now */
|
/* display any error messages now */
|
||||||
display_errors();
|
display_errors();
|
||||||
|
|
||||||
|
#ifdef FEAT_AUTOCMD
|
||||||
|
apply_autocmds(EVENT_SHELLCMDPOST, NULL, NULL, FALSE, curbuf);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -9,6 +9,7 @@ void backspace_until_column __ARGS((int col));
|
|||||||
int vim_is_ctrl_x_key __ARGS((int c));
|
int vim_is_ctrl_x_key __ARGS((int c));
|
||||||
int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
|
int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
|
||||||
int ins_compl_add __ARGS((char_u *str, int len, int icase, char_u *fname, char_u *extra, int cdir, int flags));
|
int ins_compl_add __ARGS((char_u *str, int len, int icase, char_u *fname, char_u *extra, int cdir, int flags));
|
||||||
|
void set_completion __ARGS((int startcol, list_T *list));
|
||||||
void ins_compl_show_pum __ARGS((void));
|
void ins_compl_show_pum __ARGS((void));
|
||||||
char_u *find_word_start __ARGS((char_u *ptr));
|
char_u *find_word_start __ARGS((char_u *ptr));
|
||||||
char_u *find_word_end __ARGS((char_u *ptr));
|
char_u *find_word_end __ARGS((char_u *ptr));
|
||||||
|
Reference in New Issue
Block a user