Bram Moolenaar | 46c9c73 | 2004-12-12 11:37:09 +0000 | [diff] [blame^] | 1 | *todo.txt* For Vim version 7.0aa. Last change: 2004 Dec 11 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2 | |
| 3 | |
| 4 | VIM REFERENCE MANUAL by Bram Moolenaar |
| 5 | |
| 6 | |
| 7 | TODO list for Vim *todo* |
| 8 | |
| 9 | This is a veeeery long list of known bugs, current work and desired |
| 10 | improvements. To make it a little bit accessible, the items are grouped by |
| 11 | subject. In the first column of the line a classification is used to be able |
| 12 | to look for "the next thing to do": |
| 13 | |
| 14 | Priority classification: |
| 15 | 9 next point release |
| 16 | 8 next release |
| 17 | 7 as soon as possible |
| 18 | 6 soon |
| 19 | 5 should be included |
| 20 | 4 nice to have |
| 21 | 3 consider including |
| 22 | 2 maybe not |
| 23 | 1 probably not |
| 24 | - unclassified |
| 25 | |
| 26 | *votes-for-changes* |
| 27 | See |develop.txt| for development plans. You can vote for which items should |
| 28 | be worked on, but only if you sponsor Vim development. See |sponsor|. |
| 29 | |
| 30 | *known-bugs* |
| 31 | -------------------- Known bugs and current work ----------------------- |
| 32 | |
Bram Moolenaar | 35a9aaa | 2004-10-24 19:23:07 +0000 | [diff] [blame] | 33 | ":e <cfile>" does not expand ~/file, very confusing compared to ":e ~/file". |
| 34 | |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 35 | When no termcap/termlib library is found, check that compiling Vim works in |
| 36 | configure. Give an clear error message ("install termcap or ncurses-dev |
| 37 | package") when it doesn't. |
| 38 | |
| 39 | When doing ":w file" 'modified' is reset, but "u" sets it, while the file is |
| 40 | actually unchanged. Don't reset 'modified' when 'nocp' is set. |
| 41 | |
| 42 | Win32: "gvim -V100" should use dialog with scrollbar. |
| 43 | |
| 44 | Using CTRL-A on "08" should not work like octal. (Matthew Duggan) |
| 45 | |
| 46 | Cursor onder laatste regel na ":g/pat/s//>" commando waardoor regels niet meer |
| 47 | wrappen. (Adri Verhoef, Dec 1) |
| 48 | |
| 49 | Included NetBeans patches (Gordon Prieur, Oct 20) |
| 50 | See two messages for list of changed files. Additionally: |
| 51 | doc/eval.txt |
| 52 | Docs for message E680. |
| 53 | Docs for ":nbkey". |
| 54 | Asked Gordon to send the differences again, some parts apparently are |
| 55 | missing. |
Bram Moolenaar | c0197e2 | 2004-09-13 20:26:32 +0000 | [diff] [blame] | 56 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 57 | For version 7.0: |
Bram Moolenaar | c0197e2 | 2004-09-13 20:26:32 +0000 | [diff] [blame] | 58 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 59 | - Include many PATCHES: |
Bram Moolenaar | 2df6dcc | 2004-07-12 15:53:54 +0000 | [diff] [blame] | 60 | 7 Add 'taglistfiles' option, show file name and type when listing matching |
| 61 | tags name with CTRL-D completion. Patch from Yegappan Lakshmanan. |
| 62 | 2004 Jul 11 |
| 63 | 7 For Visual mode: Command to do a search for the string in the marked |
| 64 | area. Only when fewer than two lines. Use "g/" and "gb". Patch from |
| 65 | Yegappan Lakshmanan. 2004 Jul 11 |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 66 | When more than two lines: perform a search in the Visual area only. |
Bram Moolenaar | 2df6dcc | 2004-07-12 15:53:54 +0000 | [diff] [blame] | 67 | 8 Make 'statusline' local, so that each window can have a different |
| 68 | value. But should it also be local to a buffer? (Yegappan Lakshmanan |
| 69 | has a patch, 2004 Jul 11) |
Bram Moolenaar | 5eb86f9 | 2004-07-26 12:53:41 +0000 | [diff] [blame] | 70 | 8 Add buffer-local autocommands? Reduces overhead for autocommands that |
| 71 | trigger often (inserting a character, switching mode). |
| 72 | :au Event <buffer> do-something |
| 73 | E.g.: |
| 74 | :au BufEnter <buffer> menu enable ... |
| 75 | :au BufLeave <buffer> menu disable ... |
| 76 | Patch from Yakov Lerner, including test (2004 Jan 7). |
| 77 | VimResized - When the Vim window has been resized (SIGWINCH) |
| 78 | patch from Yakov Lerner, 2003 July 24. |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 79 | Patch for specifying an expression for numbered lists. (Hugo Haas, |
| 80 | 2004 Aug 7) |
Bram Moolenaar | 8299df9 | 2004-07-10 09:47:34 +0000 | [diff] [blame] | 81 | --- awaiting updated patch --- |
| 82 | 7 Add patch from Wall for this one ( ~/Mail/oldmail/wall/in.00019 ): |
| 83 | 'flipcase' variable: upper/lowercase pairs. |
| 84 | Insert comma's between pairs and allow a range, make it look like |
| 85 | 'isfname'. E.g. ":set flipcase=a-zA-Z,xX,23-33:143-153". The colon to |
| 86 | separate the from and to part is optional. |
| 87 | Resp: no time now. |
| 88 | 8 Add GTK 2.3 file dialog support. Patch by Grahame Bowland, 2004 Mar 15, |
| 89 | but it doesn't use "initdir" or "dflt". (will update patch) |
| 90 | 8 Add ":n" to fnamemodify(): normalize path, remove "../" when possible. |
| 91 | Aric Blumer has a patch for this. |
| 92 | He will update the patch for 6.3. |
Bram Moolenaar | 8299df9 | 2004-07-10 09:47:34 +0000 | [diff] [blame] | 93 | Autocommands: |
Bram Moolenaar | 8299df9 | 2004-07-10 09:47:34 +0000 | [diff] [blame] | 94 | 7 Completion of network shares, patch by Yasuhiro Matsumoto. |
Bram Moolenaar | 15d0a8c | 2004-09-06 17:44:46 +0000 | [diff] [blame] | 95 | Update 2004 Sep 6. |
Bram Moolenaar | 8299df9 | 2004-07-10 09:47:34 +0000 | [diff] [blame] | 96 | How does this work? Missing comments. |
Bram Moolenaar | c0197e2 | 2004-09-13 20:26:32 +0000 | [diff] [blame] | 97 | gettext() Translate a message. (Patch from Yasuhiro Matsumoto) |
| 98 | Update 2004 Sep 10 |
| 99 | More docs. Search in 'runtimepath'? |
Bram Moolenaar | 8299df9 | 2004-07-10 09:47:34 +0000 | [diff] [blame] | 100 | How to get the messages into the .po files? |
| 101 | --- did not respond (yet) -- |
| 102 | 7 Make "5dd" on last-but-one-line not delete anything (Vi compatible). |
| 103 | Add flag in 'cpoptions' for this. When not present, "2dd" in the last |
| 104 | line should delete the last line. Patch from greenx 2002 Apr 11. |
| 105 | 8 Accelerators don't work in a dialog. Include patch from Martin Dalecki |
| 106 | (Jan 3, tested by David Harrison). Should work with Alt-o then. |
| 107 | 7 Use accelerators for the Motif file selection dialog. Patch from |
| 108 | Martin Dalecki 2002 Jan 11. |
| 109 | 8 Add a few more command names to the menus. Patch from Jiri Brezina |
| 110 | (28 feb 2002). |
| 111 | 7 ATTENTION dialog choices are more logical when "Delete it' appears |
| 112 | before "Quit". Patch by Robert Webb, 2004 May 3. |
| 113 | - Include flipcase patch: ~/vim/patches/wall.flipcase2 ? Make it work |
| 114 | for multi-byte characters. |
| 115 | - Win32: add options to print dialog. Patch from Vipin Aravind. |
| 116 | - Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5) |
| 117 | use the patch that keeps using HLF_8 if HLF_WS has not |
| 118 | been given values. |
| 119 | Add section in help files for these highlight groups? |
| 120 | 8 "fg" and "bg" don't work in an xterm. Get default colors from xterm |
| 121 | with an ESC sequence. Ideas in: ~/vim/patches/vikas.xtermcolors . |
| 122 | 7 Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Martin |
| 123 | Dalecki has a patch for Motif) |
| 124 | - Add possibility to highlight specific columns (for Fortran). Or put a |
| 125 | line in between columns (e.g. for 'textwidth'). |
| 126 | Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20. |
| 127 | 8 Add functions: |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 128 | confirm() add "flags" argument, with 'v' for vertical |
| 129 | layout and 'c' for console dialog. (Haegg) |
| 130 | Flemming Madsen has a patch for the 'c' flag |
| 131 | (2003 May 13) |
| 132 | system({cmd}, {expr}) Filter {expr} through the shell command |
| 133 | {cmd} and return the result. |
| 134 | (Patch from Yegappan Lakshmanan) |
| 135 | raisewin() raise gvim window (see HierAssist patch for |
| 136 | Tcl implementation ~/vim/HierAssist/ ) |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 137 | 7 Add patch from Benoit Cerrina to integrate Vim and Perl functions |
| 138 | better. Now also works for Ruby (2001 Nov 10) |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 139 | - Patch from Herculano de Lima Einloft Neto for better formatting of the |
| 140 | quickfix window (2004 dec 2) |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 141 | 7 Motif: use the menu font consistently. Patch from Martin Dalecki 2002 |
| 142 | Jan 11. |
| 143 | - Motif: add 3D shading for the menu entries? Patch from Martin Dalecki. |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 144 | 7 When 'rightleft' is set, the search pattern should be displayed right |
| 145 | to left as well? See patch of Dec 26. (Nadim Shaikli) |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 146 | 8 Lock all used memory so that it doesn't get swapped to disk (uncrypted). |
| 147 | Patch by Jason Holt, 2003 May 23. |
| 148 | 7 Support a stronger encryption. Jason Holt implemented AES (May 6 2003). |
| 149 | 7 Add ! register, for shell commands. (patch from Grenie) |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 150 | 8 In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc. Like it's |
| 151 | done for filetype detection. Patch from Walter Briscoe, 2003 Jul 1. |
| 152 | 7 Add a "-@ filelist" argument: read file names from a file. (David |
| 153 | Kotchan has a patch for it) |
| 154 | 8 Add term entries for function keys on xterm with alt and ctrl (new in |
| 155 | pl 94). E.g., Control adds ";5" in "<Esc>[20;5~". Find a generic way |
| 156 | to prepend a modifier in console mode, to avoid having to specify each |
| 157 | individual modified key. |
| 158 | Steve Wall has a patch (2002 Mar 12) for adding function keys up to 37, |
| 159 | with modifiers. |
| 160 | 8 Include a connection to an external program through a pipe? See |
| 161 | patches from Felbinger for a mathematica interface. |
| 162 | Or use emacs server kind of thing? |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 163 | 7 Add ":justify" command. Patch from Vit Stradal 2002 Nov 25. |
| 164 | - findmatch() should be adjusted for Lisp. See remark at |
| 165 | get_lisp_indent(). Esp. \( and \) should be skipped. (Dorai Sitaram, |
| 166 | incomplete patch Mar 18) |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 167 | - Set user variables to the names of the actually used user vimrc file, |
| 168 | the first directory looked for user plugins/syntax files. |
| 169 | $MYVIMRC for .vimrc, $MYGVIMRC for .gvimrc, $MYRUNTIME/plugin for |
| 170 | runtime files? |
| 171 | Also: when the environment variable exists, use it. If it doesn't |
| 172 | exist, set it. Requires good names: $VIM_USER_VIMRC $VIM_USER_DIR |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 173 | - Add the ":cbuffer" command: read list of errors from a buffer instead |
| 174 | of from a file. (Yegappan Lakshmanan, Oct 31, but avoid the temp file) |
| 175 | Perhaps ":cexpr" could read from a list? |
| 176 | Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh |
| 177 | Govindachar) |
| 178 | - The Replace dialog takes "\r" literal, unless "replace all" is used. |
| 179 | Need to escape backslashes. |
| 180 | Win32: the text to replace with isn't remembered. |
| 181 | - For GUI Find/Replace dialog support using a regexp. Patch for Motif |
| 182 | and GTK by degreneir (nov 10 and nov 18). |
| 183 | - Use a builtin grep command for ":grep"? Makes it possible to add the |
| 184 | column number. Can use the code of ":helpgrep". |
| 185 | Patch from Yegappan Lakshmanan, Nov 4. Or use ":grep" and set 'grepprg' |
| 186 | to something special? Could also do both. |
| 187 | Also support using "**" in filename, so that a directory tree can be |
| 188 | searched. |
| 189 | Also see the "minigrep.vim" script on www.vim.org. |
Bram Moolenaar | 843ee41 | 2004-06-30 16:16:41 +0000 | [diff] [blame] | 190 | |
| 191 | |
Bram Moolenaar | 35a9aaa | 2004-10-24 19:23:07 +0000 | [diff] [blame] | 192 | - Edit same file on Unix and from MS-Windows: no warning for swap file. |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 193 | - Drop the kvim support? There is no maintenance and "yzis" is supposed to |
| 194 | replace it. |
Bram Moolenaar | cfbc5ee | 2004-07-02 15:38:35 +0000 | [diff] [blame] | 195 | - In the kvim/KDE source files fix the formatting. |
| 196 | - KDE version is called "kvim". Make it "gvim", like the others? |
Bram Moolenaar | 592e0a2 | 2004-07-03 16:05:59 +0000 | [diff] [blame] | 197 | - Better configure check for KDE include files from Dan Sharp. |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 198 | - KDE GUI Input method patch. (Yasuhiro Matsumoto) (upd. Oct 25 2004) |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 199 | - Change ga_room into ga_maxlen, so that it doesn't need to be |
| 200 | incremented/decremented each time. |
Bram Moolenaar | 843ee41 | 2004-06-30 16:16:41 +0000 | [diff] [blame] | 201 | - For string variables, use length instead of NUL termination. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 202 | - new DATA TYPES: lists, dictionaries and function references. |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 203 | Check old patch from Robert Webb for array support. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 204 | Add type checking? See ~/vim/ideas.txt. |
| 205 | - Add SPELLCHECKER, with easy to add support for many languages. |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 206 | 8 Add spell checking. Use "ispell -a" somehow. |
| 207 | ~/vim/patches/wm_vim-5_4d.zip can be used as an example (includes |
| 208 | ispell inside Vim). Gautam Iyer has an example with "aspell". |
| 209 | "engspchk" from Charles Campbell is a good way. Support for |
| 210 | approximate-regexps will help (agrep http://www.tgries.de/agrep/). |
Bram Moolenaar | f4b8e57 | 2004-06-24 15:53:16 +0000 | [diff] [blame] | 211 | - Charles Campbell asks for method to add "contained" groups to |
| 212 | existing syntax items (to add @Spell). Add ":syntax contains |
| 213 | {pattern} add=@Spell" command? A bit like ":syn cluster" but change |
| 214 | the contains list directly for matching syntax items. |
| 215 | - Keep wordlist in syntax group, load it only once and use it several |
| 216 | times later. Sort of global syntax items. |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 217 | - Use wordlists from openoffice (myspell). Work together with them to |
| 218 | update the wordlist. (Adri Verhoef, Aad Nales) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 219 | - REFACTORING: The main() function is very long. Move parts to separate |
| 220 | functions, especially loops. Ideas from Walter Briscoe (2003 Apr 3, 2004 |
| 221 | Feb 9). |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 222 | - Improve the interface between the generic GUI code and the system-specific |
| 223 | code. Generic code handles text window with scrollbars, system-specific |
| 224 | code menu, toolbar, etc. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 225 | - Store messages to allow SCROLLING BACK for all commands. And other "less" |
| 226 | like commands. |
| 227 | - "INTELLISENSE". First cleanup the Insert-mode completion. |
| 228 | http://www.vim.org/scripts/script.php?script_id=747 |
| 229 | http://sourceforge.net/projects/insenvim |
Bram Moolenaar | 35a9aaa | 2004-10-24 19:23:07 +0000 | [diff] [blame] | 230 | of http://insenvim.sourceforge.net |
Bram Moolenaar | 15d0a8c | 2004-09-06 17:44:46 +0000 | [diff] [blame] | 231 | http://cedet.sourceforge.net/intellisense.shtml (for Emacs) |
Bram Moolenaar | c0197e2 | 2004-09-13 20:26:32 +0000 | [diff] [blame] | 232 | Ivan Villanueva has something for Java. |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 233 | Can't call it Intellisense, it is a trademark by Microsoft. |
| 234 | Ideas from the Vim 7 BOF at SANE: |
| 235 | - It's not possible to have one solution for all languages. Design an |
| 236 | interface for completion plugins. The matches can be done in a |
| 237 | Vim-script list. |
| 238 | - For interpreted languages, use the interpreter to obtain information. |
| 239 | Should work for Java (Eclipse does this), Python, Tcl, etc. |
| 240 | - Check Readline for its completion interface. |
| 241 | - Use ctags for other languages. Writing a file could trigger running |
| 242 | ctags, merging the tags of the changed file. |
| 243 | - UNDO TREE: keep all states of the text, don't delete undo info. |
| 244 | When making a change, instead of clearing any future undo (thus redo) |
| 245 | info, make a new branch. |
| 246 | To navigate through the undo tree number the states of the text |
| 247 | sequentially and make it possible to go through the tree in that order. |
Bram Moolenaar | 35a9aaa | 2004-10-24 19:23:07 +0000 | [diff] [blame] | 248 | Use "g+++" to go forward, "g---" to go backward. Can mix - and +. |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 249 | Could also use timestamps (to show the time and/or jump to a state five |
| 250 | minutes ago). (David Schweikert) |
| 251 | To go from one state to another: backtrack to a common state, then forward |
| 252 | again. |
| 253 | Only difficult thing: When going back in time, how to find the previous |
| 254 | text state in the tree? |
| 255 | Show the list of changes in a window to be able to select a version? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 256 | - PERSISTENT UNDO: store undo in a file. |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 257 | Use timestamps, so that a version a certain time ago can be found and info |
| 258 | before some time/date can be flushed. 'undopersist' gives maximum time to |
| 259 | keep undo: "3h", "1d", "2w", "1y", etc. For the file use dot and |
| 260 | extension: ".filename.un~" (like swapfile but "un~" instead of "swp"). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 261 | 7 SWAP FILE CHANGE: When a dos format file was edited with ":e ++ff=unix", |
| 262 | Vim is killed and trying to recover the file, 'ff' will be dos. Same for |
| 263 | non-default fileencoding. (Miroslaw Dobrzanski-Neumann, Jul 17) |
| 264 | Should store the values in block 0 of the swap file, but that is an |
| 265 | incompatible change. |
| 266 | 7 Support WINDOW TABS. Works like several pages, each with their own |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 267 | split windows. Patch for GTK 1.2 passed on by Christian Michon, 2004 Jan 6. |
| 268 | Also for the console! |
| 269 | In Emacs these are called frames. Could also call them "pages". |
Bram Moolenaar | 35a9aaa | 2004-10-24 19:23:07 +0000 | [diff] [blame] | 270 | Use "1gt" - "99gt" to switch to a tab? |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 271 | Simple patch for GTK by Luis M (nov 7). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 272 | - EMBEDDING: Make it possible to run Vim inside a window of another program. |
| 273 | For Xwindows this can be done with XReparentWindow(). |
| 274 | For GTK Neil Bird has a patch to use Vim like a widget. |
| 275 | - Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd". Block |
| 276 | can be selected with CTRL-V. Allow '$' (end of line) for col2. |
| 277 | - Add DEBUGGER INTERFACE. Implementation for gdb by Xavier de Gaye, |
| 278 | assisted by Mikolaj Machowski. Should work like an IDE. Try to keep it |
| 279 | generic. Also found here: http://skawina.eu.org/mikolaj/vimgdb |
| 280 | To be able to start the debugger from inside Vim: For GUI run a program |
| 281 | with a netbeans connection; for console: start a program that splits the |
| 282 | terminal, runs the debugger in one window and reconnect Vim I/O to the |
| 283 | other window. |
| 284 | Wishes for NetBeans commands: |
| 285 | - make it possible to have 'defineAnnoType' also handle terminal colors. |
| 286 | - send 'balloonText' events for the cursor position (using CursorHold ?) |
| 287 | in terminal mode. |
| 288 | - STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is. |
| 289 | Especially when using the scrollbar. Typing a cursor-movement command |
| 290 | scrolls back to where the cursor is. |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 291 | - Execute a function with standard option values. No need to save and |
| 292 | restore option values. Especially useful for new options. Problem: how |
| 293 | to avoid a performance penalty (esp. for string options)? |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 294 | 8 Support four composing/combining characters, needed for Hebrew. (Ron Aaron) |
| 295 | Add the 'maxcombining' option to set the nr. of composing characters. |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 296 | At the same time support more colors (use two bytes when necessary). |
Bram Moolenaar | f4b8e57 | 2004-06-24 15:53:16 +0000 | [diff] [blame] | 297 | - Add a few more things to 'diffopt': "horizontal", "vertical", |
| 298 | "foldcolumn". (Benji Fisher, 2004 Jun 21) |
| 299 | - FileChangedShellPost autocommand event: after (not) reloading a changed |
| 300 | file. Can be used to update statusline oslt. |
Bram Moolenaar | 35a9aaa | 2004-10-24 19:23:07 +0000 | [diff] [blame] | 301 | - Running a shell command from the GUI still has limitations. Look into how |
| 302 | the Vim shell project can help: http://vimshell.wana.at |
Bram Moolenaar | 2df6dcc | 2004-07-12 15:53:54 +0000 | [diff] [blame] | 303 | 8 When a file is change outside of Vim and unmodified in Vim there is no |
| 304 | simple way to automatically reload the file. Either add an option for |
| 305 | this or make it simple to have the FileChangedShell invoke the normal |
| 306 | action, telling it what to do. |
Bram Moolenaar | f4b8e57 | 2004-06-24 15:53:16 +0000 | [diff] [blame] | 307 | - Displaying size of Visual area: use 24-33 column display. |
Bram Moolenaar | 843ee41 | 2004-06-30 16:16:41 +0000 | [diff] [blame] | 308 | - Mac: Unicode input and display (Eckehard Berns, June 27) |
Bram Moolenaar | cfbc5ee | 2004-07-02 15:38:35 +0000 | [diff] [blame] | 309 | 8 Add patch from Muraoka Taro (Mar 16) to support input method on Mac? |
| 310 | New patch 2004 Jun 16 |
Bram Moolenaar | 592e0a2 | 2004-07-03 16:05:59 +0000 | [diff] [blame] | 311 | 9 Add cursor-column highlighting. Enable it with 'cursorcolumn' option, |
| 312 | set highlighting with "CursorColumn" group. Useful for aligning text. |
| 313 | Also cursor-row highlighting. Patch from Yasuhiro Matsumoto for |
| 314 | underlining the cursor line: 2004 Jun 17. Should use highlight group |
| 315 | instead. |
| 316 | Alternative: when 'number' is set highlight the number of the current |
| 317 | line. |
Bram Moolenaar | 325b7a2 | 2004-07-05 15:58:32 +0000 | [diff] [blame] | 318 | 7 Make ":startinsert" command work directly for functions and scripts? |
| 319 | Also make it possible to append (it's difficult at end of line). |
Bram Moolenaar | 21cf823 | 2004-07-16 20:18:37 +0000 | [diff] [blame] | 320 | - When using 'incsearch" CTRL-R CTRL-W gets the word under the cursor, but |
| 321 | the part that already matched is doubled then. Remove the part of the |
| 322 | word that would be doubled. Make it work line CTRL-N in Insert mode. |
Bram Moolenaar | ab79bcb | 2004-07-18 21:34:53 +0000 | [diff] [blame] | 323 | - Add Lua interface? (Wolfgang Oertl) |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 324 | - "onemore" flag in 'virtualedit': move cursor past end of line. Patch by |
| 325 | Mattias Flodin (2004 Jul 30) |
| 326 | |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 327 | Win32: When setting 'encoding' in a Vim server to "utf-8", and using "vim |
| 328 | --remote russian" in a console, "russian" should be converted from the console |
| 329 | encoding to utf-8. Send all remote messages in utf-8? Only on Win32? |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 330 | |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 331 | Support ":set syntax=cpp.doxygen"? Suggested patch by Michael Geddes (9 Aug |
| 332 | 2004). Should also work for 'filetype'. |
| 333 | |
| 334 | Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 335 | Smilauer, 2004 Sep 13, fix Oct 31) |
| 336 | |
| 337 | ":bufdo g/something/p" has the last match overwritten by the file info. |
| 338 | Example by Cesar Andalou (Nov 3). |
Bram Moolenaar | c0197e2 | 2004-09-13 20:26:32 +0000 | [diff] [blame] | 339 | |
| 340 | Win32: In 'fileencodings' allow using "acp" for the active codepage. Useful |
| 341 | value: "ucs-bom,utf-8,acp,latin1" |
| 342 | |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 343 | Win32: Cannot edit a file starting with # with --remote. (Giuseppe Bilotta, |
| 344 | Oct 6 2004) |
| 345 | |
Bram Moolenaar | c0197e2 | 2004-09-13 20:26:32 +0000 | [diff] [blame] | 346 | For manipulating buffers without opening a new window, support Virtual |
| 347 | windows. Example: |
| 348 | :virtwin let l = GetBufLine(4, 10) |
| 349 | :fun GetBufLine(bufnr, lnum) |
| 350 | : exe "buffer " . a:bufnr |
| 351 | : return getline(lnum) |
| 352 | :endfun |
| 353 | The getline() and setline() functions could work for other buffers, using a |
| 354 | Virtual window. |
| 355 | A Virtual window only exists for one command. There can be several (for |
| 356 | nested commands). The window works as if it comes after the last window, size |
| 357 | is the Vim window size, but it's never displayed. |
| 358 | |
| 359 | Win32: In the generated batch files, use $VIMRUNTIME if it's set. Examples by |
| 360 | Mathias Michaelis (2004 Sep 6) |
| 361 | Also place vimtutor.bat in %windir%? |
Bram Moolenaar | ab79bcb | 2004-07-18 21:34:53 +0000 | [diff] [blame] | 362 | |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 363 | Support ":enew filename" to edit a new buffer with a name. It's like "enew | |
| 364 | file filename" but without setting the alternate file to a buffer without a |
| 365 | name. (Charles Campbell) |
| 366 | |
Bram Moolenaar | 7b0294c | 2004-10-11 10:16:09 +0000 | [diff] [blame] | 367 | Add gui_mch_browsedir() for Motif, KDE and Mac OS/X. |
| 368 | |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 369 | Add Makefile code to install *-it.1 manual pages in .../man/it/man1/*.1 |
| 370 | |
| 371 | HTML indenting can be slow, find out why. Any way to do some kind of |
| 372 | profiling for Vim script? |
| 373 | |
| 374 | Mac: problem with Xcode, Vim doesn't continue until the next click. |
| 375 | Apparently hanges in handle_drop(). A PostEvent() avoids it. (Da Woon Jung) |
Bram Moolenaar | 47136d7 | 2004-10-12 20:02:24 +0000 | [diff] [blame] | 376 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 377 | |
| 378 | Vi incompatibility: |
Bram Moolenaar | 15d0a8c | 2004-09-06 17:44:46 +0000 | [diff] [blame] | 379 | 9 In Ex mode, "u" undoes all changes, not just the last one. (John Cowan) |
| 380 | 8 In Ex mode, an empty file doesn't have a first line, "1p" should fail. |
| 381 | 8 In Ex mode, "1,3" should print three lines. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 382 | 8 With undo/redo only marks in the changed lines should be changed. Other |
| 383 | marks should be kept. Vi keeps each mark at the same text, even when it |
| 384 | is deleted or restored. (Webb) |
| 385 | Also: A mark is lost after: make change, undo, redo and undo. |
| 386 | Example: "{d''" then "u" then "d''": deletes an extra line, because the '' |
| 387 | position is one line down. (Veselinovic) |
| 388 | 8 ":change" in a single-line file adds an empty line. When the file used to |
| 389 | be longer a "~" line is displayed, but there really is an empty line. |
| 390 | (Haakon Riiser, 2003 Dec 3 and Dec 16) |
| 391 | 8 ":append" and ":insert" in an empty file add an extra empty line. (Haakon |
| 392 | Riiser, 2003 Dec 3) Test for ML_EMPTY. |
| 393 | 8 When stdin is not a tty, and Vim reads commands from it, an error should |
| 394 | make Vim exit. |
| 395 | 7 Unix Vim (not gvim): Typing CTRL-C in Ex mode should finish the line |
| 396 | (currently you can continue typing, but it's truncated later anyway). |
| 397 | Requires a way to make CTRL-C interrupt select() when in cooked input. |
| 398 | 8 When loading a file in the .exrc, Vi loads the argument anyway. Vim skips |
| 399 | loading the argument if there is a file already. When no file argument |
| 400 | given, Vi starts with an empty buffer, Vim keeps the loaded file. (Bearded) |
| 401 | 6 In Insert mode, when using <BS> or <Del>, don't wipe out the text, but |
| 402 | only move back the cursor. Behaves like '$' in 'cpoptions'. Use a flag |
| 403 | in 'cpoptions' to switch this on/off. |
| 404 | 8 When editing a file which is a symbolic link, and then opening another |
| 405 | symbolic link on the same file, Vim uses the name of the first one. |
| 406 | Adjust the file name in the buffer to the last one used? Use several file |
| 407 | names in one buffer??? |
| 408 | Also: When first editing file "test", which is symlink to "test2", and |
| 409 | then editing "test2", you end up editing buffer "test" again. It's not |
| 410 | logical that the name that was first used sticks with the buffer. |
| 411 | 7 The ":undo" command works differently in Ex mode. Edit a file, make some |
| 412 | changes, "Q", "undo" and _all_ changes are undone, like the ":visual" |
| 413 | command was one command. |
| 414 | 7 The ":map" command output overwrites the command. Perhaps it should keep |
| 415 | the ":map" when it's used without arguments? |
| 416 | 7 CTRL-L is not the end of a section? It is for Posix! Make it an option. |
| 417 | 7 Implement 'prompt' option. Init to off when stdin is not a tty. |
| 418 | 7 CTRL-T in Insert mode inserts 'shiftwidth' of spaces at the cursor. Add a |
| 419 | flag in 'cpoptions' for this. |
| 420 | 7 Add a way to send an email for a crashed edit session. Create a file when |
| 421 | making changes (containing name of the swap file), delete it when writing |
| 422 | the file. Supply a program that can check for crashed sessions (either |
| 423 | all, for a system startup, or for one user, for in a .login file). |
| 424 | 7 Vi doesn't do autoindenting when input is not from a tty (in Ex mode). |
| 425 | 7 "z3<CR>" should still use the whole window, but only redisplay 3 lines. |
| 426 | 7 ":tag xx" should move the cursor to the first non-blank. Or should it go |
| 427 | to the match with the tag? Option? |
| 428 | 7 Implement 'autoprint'/'ap' option. |
| 429 | 7 Add flag in 'cpoptions' that makes <BS> after a count work like <Del> |
| 430 | (Sayre). |
| 431 | 7 Add flag in 'cpoptions' that makes operator (yank, filter) not move the |
| 432 | cursor, at least when cancelled. (default Vi compatible). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 433 | 7 This Vi-trick doesn't work: "Q" to go to Ex mode, then "g/pattern/visual". |
| 434 | In Vi you can edit in visual mode, and when doing "Q" you jump to the next |
| 435 | match. Nvi can do it too. |
| 436 | 7 Support '\' for line continuation in Ex mode for these commands: (Luebking) |
| 437 | g/./a\ g/pattern1/ s/pattern2/rep1\\ |
| 438 | line 1\ line 2\\ |
| 439 | line 2\ line 3\\ |
| 440 | . line4/ |
| 441 | 6 ":e /tmp/$tty" doesn't work. ":e $uid" does. Is $tty not set because of |
| 442 | the way the shell is started? |
| 443 | 6 Vi compatibility (optional): make "ia<CR><ESC>10." do the same strange |
| 444 | thing. (only repeat insert for the first line). |
| 445 | |
| 446 | |
| 447 | GTK+ 1 (OK in GTK 2): |
| 448 | 8 When menus are disabled, 'm' removed from 'guioptions', Alt-F still pops |
| 449 | up the File menu. Cannot reproduce this: gives a warning for a NULL |
| 450 | pointer if the menu was never displayed. |
| 451 | 8 When using "gvim -geom 40x30" or setting 'columns' in .gvimrc or with a |
| 452 | GUIEnter autocommand, the width is still set to fit the toolbar. Also |
| 453 | happens when changing the font. How to avoid that the toolbar specifies |
| 454 | the minimal window width? |
| 455 | 8 When using a theme with different scrollbars (gtkstep), the scrollbars can |
| 456 | be too narrow. (Drazen Kacar) |
| 457 | 8 Font "7x14" has a bold version "7x14bold". Try to find the bold font by |
| 458 | appending "bold" when there are not 14 dashes. |
| 459 | |
| 460 | GTK+ GUI known bugs: |
| 461 | 8 GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj |
| 462 | Machowski) They are displayed as separate characters. Problem in |
| 463 | creating a label? |
| 464 | 9 Can't paste a Visual selection from GTK-gvim to vim in xterm or Motif gvim |
| 465 | when it is longer than 4000 characters. Works OK from gvim to gvim and |
| 466 | vim to vim. Pasting through xterm (using the shift key) also works. |
| 467 | It starts working after GTK gvim loses the selection and gains it again. |
| 468 | 7 DND doesn't work with KDE (also with GTK 1). |
| 469 | |
Bram Moolenaar | cfbc5ee | 2004-07-02 15:38:35 +0000 | [diff] [blame] | 470 | KDE GUI known bugs: |
| 471 | - The default font is ugly. bold text isn't displayed correctly. |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 472 | (bold characters are half the width of normal characters) |
Bram Moolenaar | cfbc5ee | 2004-07-02 15:38:35 +0000 | [diff] [blame] | 473 | - Error messages when starting up. The "tip of the day" box is empty. |
| 474 | - Encoding of menu items needs to be converted. (Yasuhiro Matsumoto) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 475 | |
| 476 | Win32 GUI known bugs: |
| 477 | 8 On Windows 98 the unicows library is needed to support functions with UCS2 |
| 478 | file names. Can we load unicows.dll dynamically? |
| 479 | 8 The -P argument doesn't work very well with many MDI applications. |
| 480 | The last argument of CreateWindowEx() should be used, see MSDN docs. |
| 481 | Tutorial: http://win32assembly.online.fr/tut32.html |
| 482 | 8 In eval.c, io.h is included when MSWIN32 is defined. Shouldn't this be |
| 483 | WIN32? Or can including io.h be moved to vim.h? (Dan Sharp) |
| 484 | 7 Windows XP: When using "ClearType" for text smoothing, a column of yellow |
| 485 | pixels remains when typing spaces in front of a "D" ('guifont' set to |
| 486 | "lucida_console:h8"). |
| 487 | 6 Win32 GUI: With "-u NONE -U NONE" and doing "CTRL-W v" "CTRL-W o", the ":" |
| 488 | of ":only" is highlighted like the cursor. (Lipelis) |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 489 | 8 When 'encoding' is "utf-8", should use 'guifont' for both normal and wide |
| 490 | characters to make Asian languages work. Win32 fonts contain both |
| 491 | type of characters. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 492 | 7 When font smoothing is enabled, redrawing can become very slow. The reason |
| 493 | appears to be drawing with a transparent background. Would it be possible |
| 494 | to use an opaque background in most places? |
| 495 | 8 Use another default for 'termencoding': the active codepage. Means that |
| 496 | when 'encoding' is changed typing characters still works properly. |
| 497 | Alternative: use the Unicode functions to obtain typed characters. |
| 498 | 8 Win32: Multi-byte characters are not displayed, even though the same font |
| 499 | in Notepad can display them. (Srinath Avadhanula) Try with the |
| 500 | UTF-8-demo.txt page with Andale Mono. |
| 501 | 7 The cursor color indicating IME mode doesn't work properly. (Shizhu Pan, |
| 502 | 2004 May 9) |
| 503 | 8 Win32: When clicking on the gvim title bar, which gives it focus, produces |
| 504 | a file-changed dialog, after clicking on a button in that dialog the gvim |
| 505 | window follows the mouse. The button-up event is lost. Only with |
| 506 | MS-Windows 98? |
| 507 | Try this: ":set sw ts", get enter-prompt, then change the file in a |
| 508 | console, go back to Vim and click "reload" in the dialog for the changed |
| 509 | file: Window moves with the cursor! |
| 510 | Put focus event in input buffer and let generic Vim code handle it? |
| 511 | 8 When activating the Vim window with mouse click, don't move cursor to |
| 512 | mouse position. Catch WM_MOUSEACTIVATE. (Luevelsmeyer) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 513 | 8 Win32: When mouse is hidden and in the toolbar, moving it won't make it |
| 514 | appear. (Sami Salonen) |
| 515 | 8 Windows NT: writing to aux.* makes Vim hang. (Acevedo) |
| 516 | 8 Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that |
| 517 | comes available. (Poucet) It works OK on Win 98 but doesn't work on Win |
| 518 | NT 4.0. Leaves a grey area where the scrollbar was. ":set go+=r" also |
| 519 | doesn't work properly. |
| 520 | 8 When Vim is minimized and when maximizing it a file-changed dialog pops |
| 521 | up, Vim isn't maximized. It should be done before the dialog, so that it |
| 522 | appears in the right position. (Webb) |
| 523 | 9 When selecting at the more-prompt or hit-enter-prompt, the right mouse |
| 524 | button doesn't give popup menu. |
| 525 | At the hit-enter prompt CTRL-Y doesn't work to copy the modeless |
| 526 | selection. |
| 527 | On the command line, don't get a popup menu for the right mouse button. |
| 528 | Let the middle button paste selected text (not the clipboard but the |
| 529 | non-Visual selection)? Otherwise CTRL-Y has to be used to copy the text. |
| 530 | 8 When 'grepprg' doesn't execute, the error only flashes by, the |
| 531 | user can hardly see what is wrong. (Moore) |
| 532 | Could use vimrun with an "-nowait" argument to only wait when an error |
| 533 | occurs, but "command.com" doesn't return an error code. |
| 534 | 8 When the 'shell' cannot be executed, should give an appropriate error msg. |
| 535 | Esp. for a filter command, currently it only complains the file could not |
| 536 | be read. |
| 537 | 8 MessageBox used for error messages can be too big. There is no way to |
| 538 | scroll it, or even hit the OK button (but you can hit return). |
| 539 | Use a scrollable window. |
| 540 | 7 Add an option to add one pixel column to the character width? Lucida |
| 541 | Console italic is wider than the normal font ("d" overlaps with next char). |
| 542 | Opposite of 'linespace': 'columnspace'. |
| 543 | 7 At the hit-enter prompt scrolling now no longer works. Need to use the |
| 544 | keyboard to get around this. Pretend <CR> was hit when the user tries to |
| 545 | scroll? Need to be able to get out of hit-enter prompt with the mouse |
| 546 | anyway. |
| 547 | 7 Scrollbar width doesn't change when selecting other windows appearance. |
| 548 | Also background color of Toolbar and rectangle below vert. scrollbar. |
| 549 | 7 "!start /min cmd" should run in a minimized window, instead of using |
| 550 | "/min" as the command name. (Rogall) |
| 551 | 6 Drawing text transparently doesn't seem to work (when drawing part cursor). |
| 552 | 8 CTRL key doesn't always work in combination with ALT key. It does work |
| 553 | for function keys, not for alphabetic characters. Perhaps this is because |
| 554 | CTRL-ALT is used by Windows as AltGr? |
| 555 | 8 CTRL-- doesn't work for AZERTY, because it's CTRL-[ for QWERTY. How do we |
| 556 | know which keyboard is being used? |
| 557 | 7 When scrolling, and a background color is dithered, the dither pattern |
| 558 | doesn't always join correctly between the scrolled area and the new drawn |
| 559 | area (Koloseike). |
| 560 | 8 When gui_init_font() is called with "*", p_guifont is freed while it might |
| 561 | still be used somewhere. This is too tricky, do the font selection first, |
| 562 | then set the new font by name (requires putting all logfont parameters in |
| 563 | the font name). |
| 564 | |
| 565 | |
| 566 | Athena and Motif: |
| 567 | 9 Can configure be changed to disable netbeans if the Xpm library is |
| 568 | required and it's missing? |
| 569 | 8 When using the resource "Vim*borderwidth 2" the widgets are positioned |
| 570 | wrong. |
| 571 | 9 XIM is disabled by default for SGI/IRIX. Fix XIM so that 'imdisable' can |
| 572 | be off by default. |
| 573 | 9 XIM doesn't work properly for Athena/Motif. (Yasuhiro Matsumoto) For now, |
| 574 | keep XIM active at all times when the input method has the preediting |
| 575 | flag. |
| 576 | 8 X11: A menu that contains an umlaut is truncated at that character. |
| 577 | Happens when the locale is "C", which uses ASCII instead of IS0-8859-1. |
| 578 | Is there a way to use latin1 by default? Gnome_init() seems to do this. |
| 579 | 8 Perhaps use fontsets for everything? |
| 580 | 6 When starting in English and switching the language to Japanese, setting |
| 581 | the locale with ":lang", 'guifontset' and "hi menu font=", deleting all |
| 582 | menus and setting them again, the menus don't use the new font. Most of |
| 583 | the tooltips work though... |
| 584 | 7 Motif: when using a file selection dialog, the specified file name is not |
| 585 | always used (when specifying a filter or another directory). |
| 586 | 8 When 'encoding' is different from the current locale (e.g., utf-8) the |
| 587 | menu strings don't work. Requires conversion from 'encoding' to the |
| 588 | current locale. Workaround: set 'langmenu'. |
| 589 | |
| 590 | |
| 591 | Athena GUI: |
| 592 | 9 When dragging the scrollbar thumb very fast, focus is only obtained in |
| 593 | the scrollbar itself. And the thumb is no longer updated when moving |
| 594 | through files. |
| 595 | 7 The file selector is not resizable. With a big font it is difficult to |
| 596 | read long file names. (Schroeder) |
| 597 | 4 Re-write the widget attachments and code so that we will not have to go |
| 598 | through and calculate the absolute position of every widget every time the |
| 599 | window is refreshed/changes size. This will help the "flashing-widgets" |
| 600 | problem during a refresh. |
| 601 | 5 When starting gvim with all the default colors and then typing |
| 602 | ":hi Menu guibg=cyan", the menus change color but the background of the |
| 603 | pullright pixmap doesn't change colors. |
| 604 | If you type ":hi Menu guibg=cyan font=anyfont", then the pixmap changes |
| 605 | colors as it should. |
| 606 | Allocating a new pixmap and setting the resource doesn't change the |
| 607 | pullright pixmap's colors. Why? Possible Athena bug? |
| 608 | |
| 609 | |
| 610 | Motif GUI: |
| 611 | 8 Popup menu ordering is wrong. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 612 | 7 Use XmStringCreateLocalized() instead of XmStringCreateSimple()? |
| 613 | David Harrison says it's OK (it exists in Motif 1.2). |
| 614 | 8 The texts in the find/replace dialog don't use the right font. |
| 615 | 8 Lesstif: When deleting a menu that's torn off, the torn off menu becomes |
| 616 | very small instead of disappearing. When closing it, Vim crashes. |
| 617 | (Phillipps) |
| 618 | |
| 619 | |
| 620 | GUI: |
| 621 | 9 On Solaris, creating the popup menu causes the right mouse button no |
| 622 | longer to work for extending the selection. (Halevy) |
| 623 | 9 When running an external program, it can't always be killed with CTRL-C. |
| 624 | e.g. on Solaris 5.5, when using "K" (Keech). Other 'guipty' problems on |
| 625 | Solaris 2.6. (Marley) |
| 626 | 9 On Solaris: Using a "-geometry" argument, bigger than the window where Vim |
| 627 | is started from, causes empty lines below the cmdline. (raf) |
| 628 | 8 X11 GUI: When menu is disabled by excluding 'm' from 'guioptions', ALT key |
| 629 | should not be used to trigger a menu (like the Win32 version). |
| 630 | 8 When setting 'langmenu', it should be effective immediately. Store both |
| 631 | the English and the translated text in the menu structure. Re-generate |
| 632 | the translation when 'langmenu' has changed. |
| 633 | 8 Basic flaw in the GUI code: NextScreen is updated before calling |
| 634 | gui_write(), but the GUI code relies on NextScreen to represent the state |
| 635 | of where it is processing the output. |
| 636 | Need better separation of Vim core and GUI code. |
| 637 | 8 When fontset support is enabled, setting 'guifont' to a single font |
| 638 | doesn't work. |
| 639 | 8 Menu priority for sub-menus for: Amiga, BeOS. |
| 640 | 8 Add menu separators for Amiga, RISCOS. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 641 | 8 Add way to specify the file filter for the browse dialog. At least for |
| 642 | browse(). |
| 643 | 8 Add dialog for search/replace to other GUIs? Tk has something for this, |
| 644 | use that code? Or use console dialog. |
| 645 | 8 When selecting a font with the font dialog and the font is invalid, the |
| 646 | error message disappears too quick. |
| 647 | 8 gui_check_colors() is not called at the right moment. Do it much later, |
| 648 | to avoid problems. |
| 649 | 8 gui_update_cursor() is called for a cursor shape change, even when there |
| 650 | are mappings to be processed. Only do something when going to wait for |
| 651 | input. Or maybe every 100 ms? |
| 652 | 8 X11: When the window size is reduced to fit on screen, there are blank |
| 653 | lines below the text and bottom scrollbar. "gvim -geometry 80x78+0+0". |
| 654 | When the "+0+0" is omitted it works. |
| 655 | 8 When starting an external command, and 'guipty' set, BS and DEL are mixed |
| 656 | up. Set erase character somehow? |
| 657 | 8 A dead circumflex followed by a space should give the '^' character |
| 658 | (Rommel). Look how xterm does this. |
| 659 | Also: Bednar has some code for dead key handling. |
| 660 | Also: Nedit 5.0.2 with USE_XMIM does it right. (Gaya) |
| 661 | 8 The compose key doesn't work properly (Cepas). Both for Win32 and X11. |
| 662 | 7 The cursor in an inactive window should be hollow. Currently it's not |
| 663 | visible. |
| 664 | 7 GUI on Solaris 2.5.1, using /usr/dt/..: When gvim starts, cursor is |
| 665 | hollow, after window lowered/raised it's OK. (Godfrey) |
| 666 | 7 When starting GUI with ":gui", and window is made smaller because it |
| 667 | doesn't fit on the screen, there is an extra redraw. |
| 668 | 8 When setting font with .Xdefaults, there is an extra empty line at the |
| 669 | bottom, which disappears when using ":set guifont=<Tab>". (Chadzelek) |
| 670 | 8 When font shape changes, but not the size, doing ":set font=" does not |
| 671 | redraw the screen with the new font. Also for Win32. |
| 672 | When the size changes, on Solaris 2.5 there isn't a redraw for the |
| 673 | remaining part of the window (Phillipps). |
| 674 | - Flashes really badly in certain cases when running remotely from a Sun. |
| 675 | 4 Re-write the code so that the highlighting isn't changed multiple times |
| 676 | when doing a ":hi clear". The color changes happen three or more times |
| 677 | currently. This is very obvious on a 66Mhz 486. |
| 678 | |
| 679 | |
| 680 | MSDOS/DJGPP: |
| 681 | 9 Pressing CTRL-C often crashes the console Vim runs in. (Ken Liao) |
| 682 | When 'bioskey' isn't set it doesn't happen. Could be a problem with the |
| 683 | BIOS emulation of the console. Version 5.6 already had this problem. |
| 684 | 8 DJGPP: "cd c:" can take us to a directory that no longer exists. |
| 685 | change_drive() doesn't check this. How to check for this error? |
| 686 | 9 The 16 bit version runs out of memory very quickly. Should find unused |
| 687 | code and reduce static data. |
| 688 | 9 Crash when running on Windows 98 in a console window and pressing CTRL-C. |
| 689 | Happens now and then. When debugging Vim in gdb this also happens. Since |
| 690 | the console crashes, might be a bug in the DOS console. Resetting |
| 691 | 'bioskey' avoids it, but then CTRL-C doesn't work. |
| 692 | 9 DOS: Make CTRL-Fx and ALT-Fx work. |
| 693 | CTRL-F1 = CE-5E, CTRL-F2 = CE-5F, .., CTRL-F10 = CE-67 |
| 694 | ALT-F1 = CE-68, ALT-F2 = CE-69, .., ALT-F10 = CE-71 |
| 695 | Shifted cursor keys produce same codes as unshifted keys. Use bioskey(2) |
| 696 | to get modifier mask for <S-C-M-Fx>. |
| 697 | Use K_SPECIAL/KS_MODIFIER codes to insert modifier mask in input stream? |
| 698 | Make this work like in Win32 console. |
| 699 | Mapping things like <M-A> doesn't work, because it generates an extended |
| 700 | key code. Use a translation table? |
| 701 | 9 Can't read an opened swap file when the "share" command has not been used. |
| 702 | At least ignore the swap files that Vim has opened itself. |
| 703 | 8 Use DJGPP 2.03. |
| 704 | 8 The Dos32 version (DJGPP) can't use long file names on Windows NT. |
| 705 | Check if new package can be used (v2misc/ntlfn08[bs].zip). |
| 706 | 8 setlocale() is bogus. |
| 707 | 8 Vim busy waits for new characters or mouse clicks. Should put in some |
| 708 | sort of sleep, to avoid eating 50% of the CPU time. Test on an unpatched |
| 709 | Windows 95 system! |
| 710 | 8 DJGPP: when shell is bash, make fails. (Donahoe) |
| 711 | 7 Hitting CTRL-P twice quickly (e.g. in keyword completion) on a 8088 |
| 712 | machine, starts printer echo! (John Mullin). |
| 713 | 7 MSDOS 16 bit version can't work with COMSPEC that has an argument, e.g.: |
| 714 | COMSPEC=C:\WINDOWS\COMMAND.COM /E:4096 (Bradley) |
| 715 | Caused by BCC system() function (Borland "make" has the same problem). |
| 716 | 8 Mouse: handle left&right button pressed as middle button pressed. Add |
| 717 | modifier keys shift, ctrl and alt. |
| 718 | 7 When too many files are open (depends on FILES), strange things happen. |
| 719 | The Dos16 version runs out of memory, in the Dos32 version "!ls" causes a |
| 720 | crash. Another symptom: .swp files are not deleted, existing files are |
| 721 | "[New file]". |
| 722 | 7 DJGPP version doesn't work with graphics display mode. Switch to a mode |
| 723 | that is supported? |
| 724 | 8 DJGPP: ":mode" doesn't work for many modes. Disable them. |
| 725 | 8 DJGPP: When starting in Ex mode, shouldn't clear the screen. (Walter |
| 726 | Briscoe) |
| 727 | |
| 728 | |
| 729 | MSDOS, OS/2 and Win32: |
| 730 | 8 OS/2: Add backtick expansion. Undefine NO_EXPANDPATH and use |
| 731 | gen_expand_wildcards(). |
| 732 | 8 OS/2: Add clipboard support? See example clipbrd.exe from Alexander |
| 733 | Wagner. |
| 734 | 8 OS/2: Add Extended Attributes support and define HAVE_ACL. |
| 735 | 8 OS/2: When editing a file name "foo.txt" that is actually called FOO.txt, |
| 736 | writing uses "foo.txt". Should obtain the real file name. |
| 737 | 8 Should $USERPROFILE be used instead of $HOMEDRIVE/$HOMEPATH? |
| 738 | 8 Win32 console: <M-Up> and <M-Down> don't work. (Geddes) We don't have |
| 739 | special keys for these. Should use modifier + key. |
| 740 | 8 Win32 console: caps-lock makes non-alpha keys work like with shift. |
| 741 | Should work like in the GUI version. |
| 742 | 8 Environment variables in DOS are not case sensitive. Make a define for |
| 743 | STRCMP_ENV(), and use it when comparing environment var names. |
| 744 | 8 Setting 'shellslash' has no immediate effect. Change all file names when |
| 745 | it is set/reset? Or only use it when actually executing a shell command? |
| 746 | 8 When editing a file on a Samba server, case might matter. ":e file" |
| 747 | followed by ":e FILE" will edit "file" again, even though "FILE" might be |
| 748 | another one. Set last used name in buflist_new()? Fix do_ecmd(), etc. |
| 749 | 8 ":mksession" generates a "cd" command where "aa\#bb" means directory "#bb" |
| 750 | in "aa", but it's used as "aa#bb". (Ronald Hoellwarth) |
| 751 | 8 When a buffer is editing a file like "ftp://mach/file", which is not going |
| 752 | to be used like a normal file name, don't change the slashes to |
| 753 | backslashes. (Ronald Hoellwarth) |
| 754 | |
| 755 | |
| 756 | Windows 95: |
| 757 | 8 Editing a file by it's short file name and writing it, makes the long file |
| 758 | name disappear. Setting 'backupcopy' helps. |
| 759 | Use FindFirstFile()->cAlternateFileName in fname_case() (George Reilly). |
| 760 | 8 Doing wildcard expansion, will match the short filename, but result in the |
| 761 | long filename (both DJGPP and Win32). |
| 762 | |
| 763 | |
| 764 | Win32 console: |
| 765 | 9 When editing a file by its short file name, it should be expanded into its |
| 766 | long file name, to avoid problems like these: (Mccollister) |
| 767 | 1) Create a file called ".bashrc" using some other editor. |
| 768 | 2) Drag that file onto a shortcut or the actual executable. |
| 769 | 3) Note that the file name is something like BASHRC~1 |
| 770 | 4) Go to File->Save As menu item and type ".bashrc" as the file name. |
| 771 | 5) Press "Yes" to indicate that I want to overwrite the file. |
| 772 | 6) Note that the message "File exists (add ! to override)" is displayed |
| 773 | and the file is not saved. |
| 774 | Use FindFirstFile() to expand a file name and directory in the path to its |
| 775 | long name. |
| 776 | 8 Also implement 'conskey' option for the Win32 console version? Look at |
| 777 | how Xvi does console I/O under Windows NT. |
| 778 | 7 Re-install the use of $TERM and support the use of different terminals, |
| 779 | besides the console. |
| 780 | 8 Use of <altgr> modifier doesn't work? 5.3 was OK. (Garcia-Suarez/Guckes) |
| 781 | 9 Mapping <C-S-Tab> doesn't work correctly. How to see the difference with |
| 782 | <C-S-i>? |
| 783 | 9 tmpnam() uses file in root of file system: "\asdf". That doesn't work on |
| 784 | a Netware network drive. Use same function as for Win32 GUI? |
| 785 | 8 In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__ |
| 786 | is not defined. Shouldn't that be the other way around? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 787 | 7 Use SetConsoleCP() and SetConsoleOutputCP() to implement 'termencoding'? |
| 788 | Avoids that input and output work differently. Need to be restored when |
| 789 | exiting. |
| 790 | |
| 791 | |
| 792 | Amiga: |
| 793 | 8 In mch_inchar() should use convert_input_safe() to handle incomplete byte |
| 794 | sequences. |
| 795 | 9 In mch_expandpath() a "*" is to be expanded, but "\*" isn't. Remove |
| 796 | backslashes in result. |
| 797 | 8 Executing a shell, only one option for 'shell' is separated. Should do |
| 798 | all options, using white space separation. |
| 799 | |
| 800 | |
| 801 | Macintosh: |
Bram Moolenaar | 69a7cb4 | 2004-06-20 12:51:53 +0000 | [diff] [blame] | 802 | 7 Patch to add 'transparency' option. Disadvantage: it's slow. (Eckehard |
| 803 | Berns, 2004 May 9) http://ecki.to/vim/TransBack-2004-05-09.diff |
| 804 | Needs more work. Add when someone really wants it. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 805 | 7 Loading the Perl library only works on OS/X 10.2 or 10.3, never on both. |
| 806 | Load the Perl library dynamically see Python sources file dynload_mac |
| 807 | (Jack) |
| 808 | dynamic linking: http://developer.apple.com/technotes/tn2002/tn2064.html |
| 809 | 8 Inputting Unicode characters does not work in the terminal. They appear |
| 810 | to arrive as upper and lower bytes. (David Brown, 2004 April 17) |
| 811 | 8 Typing Unicode characters doesn't work at all in the GUI. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 812 | 9 Problems in Carbon version for OS X: (Benji Fisher) |
| 813 | - keyboard shortcuts in the menus get lost. |
| 814 | 8 The Vim/About menu doesn't work. |
| 815 | 8 ":gui" doesn't fork. Enabling the code in gui.c to fork causes a SEGV. |
| 816 | 8 Define vim_mkdir() for Macintosh. |
| 817 | 8 Define mch_writable() for Macintosh. |
| 818 | 9 When DiskLock is running, using a swap file causes a crash. Appears to be |
| 819 | a problem with writing a file that starts with a dot. (Giacalone) |
| 820 | 9 On G3 Mac, OS version 8, control strip causes characters messed up when |
| 821 | scrolling (CTRL-L cleans it up). (Benji Fisher) |
| 822 | 9 On G3 Mac, OS version 8, variable-speed scrolling doesn't work, after two |
| 823 | seconds of scrolling the screen freezes. (Benji Fisher) |
| 824 | 9 In mac_expandpath() check that handling of backslashes is done properly. |
| 825 | 8 Standard Mac shortcuts are missing. (Amerige) |
| 826 | 8 Handling of non-fixed width fonts is wrong. (Amerige) |
| 827 | |
| 828 | |
| 829 | "Small" problems: |
| 830 | 8 When an ":edit" is inside a try command and the ATTENTION prompt is used, |
| 831 | the :catch commands are always executed, also when the file is edited |
| 832 | normally. Should reset did_emsg and undo side effects. Also make sure |
Bram Moolenaar | 2df6dcc | 2004-07-12 15:53:54 +0000 | [diff] [blame] | 833 | the ATTENTION message shows up. Servatius Brandt works on this. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 834 | 9 When using ":e ++enc=foo file" and the file is already loaded with |
| 835 | 'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though |
| 836 | the fileencoding differs. Reload the buffer in this situation? Need to |
| 837 | check for the buffer to be unmodified. |
| 838 | 8 ":g//" gives "Pattern not found error" with E486. Should not use the |
| 839 | error number, it's not a regular error message. |
| 840 | 7 Vimtutor leaves escape sequence in terminal. This is the xterm response to |
| 841 | requesting the version number. (Yasuhiro Matsumoto) |
| 842 | 8 When redirecting and using ":silent" the current column for displaying and |
| 843 | redirection can be different. Use a separate variable to hold the column |
| 844 | for redirection. |
| 845 | 7 There is no way to change directory and go back without changing the local |
| 846 | and/or global directory. Add a way to find out if the current window uses |
| 847 | a local directory. Add cdcmd() that returns ":cd" or ":lcd"? |
| 848 | 7 After running "make test" the window title is sometimes not restored. |
| 849 | Mostly sticks at "test3.in", but not always. Appears to happen more often |
| 850 | when compiled with Python (threading). |
| 851 | 7 The messages for "vim --help" and "vim --version" don't use |
| 852 | 'termencoding'. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 853 | 8 When 'scrollbind' is set, a window won't scroll horizontally if the cursor |
| 854 | line is too short. Add a word in 'scrollopt' to allow moving the cursor |
| 855 | to longer line that is visible. A similar thing is done for the GUI when |
| 856 | using the horizontal scrollbar. |
| 857 | 7 VisVim can only open one file. Hard to solve: each opened file is passed |
| 858 | with a separate invocation, would need to use timestamps to know the |
| 859 | invocations belong together. |
| 860 | 8 When giving a ":bwipeout" command a file-changed dialog may popup for this |
| 861 | buffer, which is pointless. (Mike Williams) |
| 862 | 8 On MS-Windows ":make" doesn't show output while it is working. Use the |
| 863 | tee.exe from http://unxutils.sourceforge.net/ ? About 16 Kbyte in the |
| 864 | UnxUtils.zip archive. |
| 865 | Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter |
| 866 | Briscoe says it's not as good. |
| 867 | 8 'fillchars' doesn't work for multi-byte characters. |
| 868 | 9 Editing a XML file with a long line is extremely slow. Example file from |
| 869 | Randy Parker (Dec 13). Editing the dictionaries for engspchk plugin with |
| 870 | syntax highlighting is also very slow. |
| 871 | Limit the searching for items to a few hundred characters? |
| 872 | 8 Command line completion: buffers "foo.txt" and "../b/foo.txt", completing |
| 873 | ":buf foo<Tab>" doesn't find the second one. (George V. Reilly) |
| 874 | 7 Output for ":scriptnames" and ":breaklist" should shorten the file names: |
| 875 | use "~/" when possible. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 876 | 7 mb_off2cells() doesn't work correctly on the tail byte of a double-byte |
| 877 | character. (Yasuhiro Matsumoto) It should return 1 when used on a tail |
| 878 | byte, like for utf-8. Store second byte of double-byte in ScreenLines2[] |
| 879 | (like for DBCS_JPNU) and put a zero in the second byte (like for UTF-8). |
| 880 | 8 'backupdir' and 'directory' should use $TMPDIR, $TMP and/or $TEMP when |
| 881 | defined. |
| 882 | 7 Inside a function with "perl <<EOF" a line with "$i++" is recognized as an |
| 883 | ":insert" command, causing the following "endfunction" not to be found. |
| 884 | Add skipping this perl construction inside function definitions. |
| 885 | 7 When 'ttimeoutlen' is 10 and 'timeoutlen' is 1000, there is a keycode |
| 886 | "<Esc>a" and a mapping <Esc>x", when typing "<Esc>a" with half a second |
| 887 | delay should not be interpreted as a keycode. (Hans Ginzel) |
| 888 | 7 ":botright 1 new" twice causes all window heights to be changed. Make the |
| 889 | bottom window only bigger as much as needed. |
| 890 | 7 "[p" doesn't work in Visual mode. (David Brown) |
| 891 | 7 The Cygwin and MingW makefiles define "PC", but it's not used anywhere. |
| 892 | Remove? (Dan Sharp) |
| 893 | 9 The argument <f-args> of a user command doesn't handle backslashes |
| 894 | properly. "Cmd \ e" is one argument, "Cmd \\ e" still is one argument. |
| 895 | "Cmd \ e" is two arguments, first one ending in space. (Kontra Gergely) |
| 896 | 9 User commands use the context of the script they were defined in. This |
| 897 | causes a "s:var" argument to unexpectedly use a variable in the defining |
| 898 | script, not the calling script. Add an argument to ":command": |
| 899 | "-keepcontext". Do replace <SID>, so that a function in the defining |
| 900 | script can be called. |
| 901 | 8 The Japanese message translations for MS-Windows are called ja.sjis.po, |
| 902 | but they use encoding cp932. Rename the file and check that it still |
| 903 | works. |
| 904 | 9 When a syntax region does not use "keepend" and a contained item does use |
| 905 | "extend", this makes the outer region stop at the end of the contained |
| 906 | region. (Lutz Eymers) Another example Nov 14 2002. |
| 907 | 8 A very long message in confirm() can't be quit. Make this possible with |
| 908 | CTRL-C. |
| 909 | 7 clip_x11_own_selection() uses CurrentTime, that is not allowed. VNC X |
| 910 | server has a problem with this. (Mark Waggoner) Remembering the timestamp |
| 911 | of events isn't always possible. We don't get them in an xterm. GTK |
| 912 | doesn't obtain the selection again when the timestamp differs, thus it |
| 913 | won't work for GTK anyway. |
| 914 | 8 When the clipboard isn't supported: ":yank*" gives a confusing error |
| 915 | message. Specifically mention that the register name is invalid. |
| 916 | 8 "gf" always excludes trailing punctuation characters. file_name_in_line() |
| 917 | is currently fixed to use ".,:;!". Add an option to make this |
| 918 | configurable? |
| 919 | 8 'hkmap' should probably be global-local. |
| 920 | 9 When "$" is in 'cpoptions' and folding is active, a "C" command changes |
| 921 | the folds and resets w_lines_valid. The display updating doesn't work |
| 922 | then. (Pritesh Mistry) |
| 923 | 8 ":s!from!to!" works, but ":smagic!from!to!" doesn't. It sees the "!" as a |
| 924 | flag to to the command. Same for ":snomagic". (Johan Spetz) |
| 925 | 8 Using ":s" in a function changes the previous replacement string. Save |
| 926 | "old_sub" in save_search_patterns()? |
| 927 | 8 When appending to a file and 'patchmode' isn't empty, a backup file is |
| 928 | always written, even when the original file already exists. |
| 929 | 7 When using "daw" on the last word in a file and this is a single letter, |
| 930 | nothing is deleted. Should delete the letter and preceding white space. |
| 931 | 9 When getting focus while writing a large file, could warn for this file |
| 932 | being changed outside of Vim. Avoid checking this while the file is being |
| 933 | written. |
| 934 | 9 The "Error detected while processing modelines" message should have an |
| 935 | error number. |
| 936 | 7 The message in bt_dontwrite_msg() could be clearer. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 937 | 8 The script ID that is stored with an option and displayed with ":verbose |
| 938 | set" isn't reset when the option is set internally. For example when |
| 939 | 'foldlevel' is set from 'foldlevelstart'. |
| 940 | 8 In the fileformat dialog, "Cancel" isn't translated. Add a global |
| 941 | variable for this. (Eduardo Fernandez) |
| 942 | 9 When editing a file with 'readonly' set, there is no check for an existing |
| 943 | swap file. Then using ":write" (without making any changes) doesn't give |
| 944 | a warning either. Should check for an existing swap file without creating |
| 945 | one. |
| 946 | 7 On MS-DOS or MS-Windows, when editing the same file over a network, the |
| 947 | drive letter is different, thus an existing swap file doesn't generate a |
| 948 | warning. Use some flag to indicate the swap file is in the same directory |
| 949 | as the original file? Could make b0_fname[] start with a special |
| 950 | character like ">". |
| 951 | 7 When 'showbreak' is set, the amount of space a Tab occupies changes. |
| 952 | Should work like 'showbreak' is inserted without changing the Tabs. |
| 953 | 7 When there is a "help.txt" window in a session file, restoring that |
| 954 | session will not get the "LOCAL ADDITIONS" back. |
| 955 | 7 When 'mousefocus' is set and switching to another window with a typed |
| 956 | command, the mouse pointer may be moved to a part of the window that's |
| 957 | covered by another window and we lose focus. Only move in the y |
| 958 | direction, not horizontally? |
| 959 | 8 When using CTRL-D after ":help", restrict the number of matches to a |
| 960 | thousand, otherwise using CTRL-D without an argument takes too long. |
| 961 | 8 ":hardcopy": |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 962 | - Using the cterm_color[] table is wrong when t_colors is > 16. |
| 963 | - Need to handle unprintable characters. |
| 964 | - Win32: On a B&W printer syntax highlighting isn't visible. Perform |
| 965 | dithering to make grey text? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 966 | - Add a flag in 'printoptions' to add an empty page to make the total |
| 967 | number even. "addempty"? (Mike Williams) |
Bram Moolenaar | c0197e2 | 2004-09-13 20:26:32 +0000 | [diff] [blame] | 968 | - Respect 'linebreak'. Perhaps also 'showbreak'? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 969 | - Should interpreted CTRL-L as a page break. |
| 970 | - Grey line numbers are not always readable. Add field in 'printoptions'. |
| 971 | Default to black when no syntax highlighting. |
| 972 | - Be able to print a window in diff mode. |
| 973 | - Be able to specify a colorscheme to use for printing. And a separate |
| 974 | one for B&W printing (if that can be detected). |
| 975 | 8 In Visual block mode with 'lbr' set, a change command doesn't insert the |
| 976 | text in following lines where the linebreak changes. |
| 977 | 9 dosinst.c: The DJGPP version can't uninstall the Uninstall registry key on |
| 978 | Windows NT. How to install a .inf file on Windows NT and how to detect |
| 979 | that Windows NT is being used? |
| 980 | 8 When opening the same file on Unix and on MS-Windows, there is no |
| 981 | ATTENTION message, because the path in the swap file is different. Using |
| 982 | a relative path name will cause no ATTENTION for Vim 5.8. |
| 983 | Somehow add a flag that the swap file is in the same dir as the file? |
| 984 | 8 When 'virtualedit' is "block,insert" and encoding is "utf-8", selecting a |
| 985 | block of one double-wide character, then "d" deletes only half of it. |
| 986 | 8 When 'virtualedit' is set, should "I" in blockwise visual mode also insert |
| 987 | in lines that don't extend into the block? |
| 988 | 8 With 'virtualedit' set, in Insert mode just after the end of line, CTRL-O |
| 989 | yh does not yank the last character of the line. (Pavel Papushev) |
| 990 | Doing "hl" first appears to make it work. |
| 991 | 8 With 'virtualedit' set it's possible to move into the blank area from |
| 992 | 'linebreak'. |
| 993 | 8 With 'virtualedit' set and 'selection' "exclusive", a Visual selection |
| 994 | that ends in or after a tab, "d" doesn't delete (part of) the tab. |
| 995 | (Helmut Stiegler) |
| 996 | 8 With 'virtualedit' set, a blockwise Visual selection that starts and ends |
| 997 | in a tab, "<" shifts too much. (Helmut Stiegler) |
| 998 | 9 When jumping to a tag, the search pattern is put in the history. When |
| 999 | 'magic' is on, the pattern may not work. Translate the pattern depending |
| 1000 | on p_magic when putting it in the history? Alternative: Store value of |
| 1001 | 'magic' in history. (Margo) |
| 1002 | 9 optwin.vim: Restoring a mapping for <Space> or <CR> is not correct for |
| 1003 | ":noremap". Add "mapcmd({string}, {mode})? Use code from ":mkexrc". |
| 1004 | 9 incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern |
| 1005 | isn't updated). |
| 1006 | 9 term_console is used before it is set (msdos, Amiga). |
| 1007 | 9 Get out-of-memory for ":g/^/,$s//@/" on 1000 lines, this is not handled |
| 1008 | correctly. Get many error messages while redrawing the screen, which |
| 1009 | cause another redraw, etc. |
| 1010 | 8 [<C-I> doesn't work when '*' is in 'iskeyword'. find_pattern_in_path() |
| 1011 | must escape special characters in the pattern. |
| 1012 | 8 Vim can overwrite a read-only file with ":w!". ":w" can't overwrite an |
| 1013 | existing file, "w!" can, but perhaps not a read-only file? Then use |
| 1014 | ":w!!" for that. |
| 1015 | Or ask for permission to overwrite it (if file can be made writable) and |
| 1016 | restore file to readonly afterwards. |
| 1017 | 7 When compiled with "xterm_clipboard", startup can be slower and might get |
| 1018 | error message for invalid $DISPLAY. Try connecting to the X server in the |
| 1019 | background (forked), so that Vim starts up quicker? Connect as soon as |
| 1020 | the clipboard is to be used (Visual select mode starts, paste from |
| 1021 | clipboard) |
| 1022 | 7 X11: Some people prefer to use CLIPBOARD instead of PRIMARY for the normal |
| 1023 | selection. Add an "xclipboard" argument to the 'clipboard' option? (Mark |
| 1024 | Waggoner) |
| 1025 | 8 For xterm need to open a connection to the X server to get the window |
| 1026 | title, which can be slow. Can also get the title with "<Esc>[21t", no |
| 1027 | need to use X11 calls. This returns "<Esc>]l{title}<Esc>\". |
Bram Moolenaar | 35a9aaa | 2004-10-24 19:23:07 +0000 | [diff] [blame] | 1028 | 6 When the xterm reports the number of colors, a redraw occurs. This is |
| 1029 | annoying on a slow connection. Wait for the xterm to report the number of |
| 1030 | colors before drawing the screen. With a timeout. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1031 | 8 When the builtin xterm termcap contains codes that are not wanted, need a |
| 1032 | way to avoid using the builtin termcap. |
| 1033 | 8 Xterm sends ^[[H for <Home> and ^[[F for <End> in some mode. Also |
| 1034 | recognize these keys? Mostly useful for xterm simulators, like gnometerm. |
| 1035 | See http://dickey.his.com/xterm/xterm.faq.html#xterm_pc_style. |
| 1036 | 8 '[ and '] should be set to start/end of line when using a linewise operator |
| 1037 | (e.g., ":w"). |
| 1038 | 8 CTRL-A can't handle big "long" numbers, they become negative. Check for |
| 1039 | "-" character, if not present, use unsigned long. |
| 1040 | 8 Make it possible to disable the special meaning of "#" in the first column |
| 1041 | for ">>". |
| 1042 | 8 Add suspending with CTRL-Z at the "more" prompt, and when executing a long |
| 1043 | script in do_cmdline(). |
| 1044 | 8 When using 'hidden', many swap files will be open. When Vim runs into the |
| 1045 | maximum number of open files, error messages will appear. Detect that |
| 1046 | this problem is present, and close any hidden files that don't have |
| 1047 | changes. |
| 1048 | 8 With 'viminfo' set such that the ".viminfo" file is written on a FAT |
| 1049 | filesystem, an illegal file name may be created: ".vim". |
| 1050 | 8 For each buffer that is opened, the viminfo file is opened and read to |
| 1051 | check for file marks. This can be slow. |
| 1052 | 7 In xterm, recognize both vt100 and vt220 cursor keys. Change |
| 1053 | add_termcode() to not remove an existing entry for a name, when it's |
| 1054 | needed. |
| 1055 | Need a generic solution to recognize different codes for the same key. |
| 1056 | 8 Core dump within signal function: gdb doesn't show stack backtrace! Option |
| 1057 | to skip catch_signals()? |
| 1058 | 9 Repeating a "cw" with "." doesn't work if the text was pasted from the |
| 1059 | clipboard. (Thomas Jones) It's because the menu/toolbar item exits Insert |
| 1060 | mode and uses "gP". How to fix this without breaking inserting a block of |
| 1061 | text? |
| 1062 | 8 In Replace mode pasting from the clipboard (using menu or toolbar) inserts |
| 1063 | all the text. Add ":rmenu"? |
| 1064 | 8 Pasting with the mouse in Replace mode inserts the text, instead of |
| 1065 | overwriting, when it is more than one line. Same for using <C-R>. |
| 1066 | 9 CTRL-E and CTRL-Y don't work in small window when 'so' is 4 and lines are |
| 1067 | wrapping (Acevedo/in.226). E.g., when using CTRL-E, window height 7, |
| 1068 | window might actually scroll down when last line of buffer is displayed. |
| 1069 | --> Remember if the previous command was "cursor follows screen" or |
| 1070 | "screen follow cursor" and use this in cursupdate(). |
| 1071 | 7 tilde_replace() can only handle "~/", should also do "~user/". |
| 1072 | Get the list of home directories (from /etc/passwd? Use getpwent()) and |
| 1073 | use some clever algorithm to match a path with that. Find common strings |
| 1074 | in the list? |
| 1075 | 8 When dragging status line with mouse, sometimes a jump when first clicking |
| 1076 | on the status line (caused by 'winheight'). Select window on button up, |
| 1077 | instead of on button down. |
| 1078 | 8 Dragging the status line doesn't scroll but redraw. |
| 1079 | 9 Evaluating 'statusline' in build_stl_str_hl() does not properly check for |
| 1080 | reaching the end of the available buffer. |
| 1081 | 8 When performing incremental search, should abort searching as soon as a |
| 1082 | character is typed. |
| 1083 | 8 When the value of $MAKE contains a path, configure can't handle this. |
| 1084 | It's an autoconf bug. Remove the path from $MAKE to work around it. |
| 1085 | 8 How to set VIMRC_FILE to \"something\" for configure? Why does this not |
| 1086 | work: CFLAGS='-DVIMRC_FILE=\"/mydir/myfile\"' ./configure |
| 1087 | 8 The temporary file is sometimes not writable. Check for this, and use an |
| 1088 | alternate name when it isn't. Or add the 'temptemplate' option: template |
| 1089 | for the temp file name ":set temptemplate=/usr/tmp/?????.tmp". |
| 1090 | Also: Win32 version uses Windows temp directory, which might not work for |
| 1091 | cygwin bash. |
| 1092 | 7 Get error "*, \+ or \( operand could be empty" for pattern "\(.\)\1\{3}". |
| 1093 | Remember flags for backreferences. |
| 1094 | 7 When switching to Daylight Saving Time, Vim complains that a file has been |
| 1095 | changed since last read. Can we use a function that uses GMT? |
| 1096 | 7 When completing an environment variable after a '$', check for file names |
| 1097 | that contain a '$' after all have been found. |
| 1098 | 8 When "cm" termcap entry is missing, starting gvim shouldn't complain about |
| 1099 | it. (Lohner) Try out with "vt100" entry, cm replaced with cX. |
| 1100 | 7 When an include file starts with "../", the check for already visiting |
| 1101 | this file doesn't work. Need to simplify the file name. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1102 | 7 The names and comments for the arguments of do_browse() are confusing. |
| 1103 | "dflt" isn't the default file name when "initdir" is not NULL and |
| 1104 | "initdir" is the default path to be used. |
| 1105 | 7 When 'scrolloff' is exactly half the window height, "j" causes a scroll of |
| 1106 | two lines at a time. "k" doesn't do this. (Cory T. Echols) |
| 1107 | 8 When write_viminfo() is used while there are many orphaned viminfo |
| 1108 | tempfiles writing the viminfo file fails. Give a clear error message so |
| 1109 | that the user knows he has to delete the files. |
| 1110 | 7 It's possible to redefine a script-local function with ":func |
| 1111 | <SNR>123_Test()". (Krishna) Disallow this. |
| 1112 | 7 After ":%d" an undo reports the number of lines added as if there still |
| 1113 | was one line. |
| 1114 | |
| 1115 | |
| 1116 | I can't reproduce these (if you can, let me know how!): |
| 1117 | 9 NT 4.0 on NTFS file system: Editing ".bashrc" (drag and drop), file |
| 1118 | disappears. Editing ".xyz" is OK. Also, drag&drop only works for three |
| 1119 | files. (McCollister) |
| 1120 | 8 Motif: Tear-off menu item crashes Vim on some machines. (Netherton) It |
| 1121 | works fine for me, maybe it's a Motif problem. |
| 1122 | |
| 1123 | |
| 1124 | Problems that will (probably) not be solved: |
Bram Moolenaar | 35a9aaa | 2004-10-24 19:23:07 +0000 | [diff] [blame] | 1125 | - xterm title: The following scenario may occur (esp. when running the Vim |
| 1126 | test script): Vim 1 sets the title to "file1", then restores the title to |
| 1127 | "xterm" when exiting with an ESC sequence. Vim 2 obtains the old title |
| 1128 | with an X library call, this may result in "file1", because the window |
| 1129 | manager hasn't processed the "xterm" title yet. Can apparently only be |
| 1130 | worked around with a delay. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1131 | - In a terminal with 'mouse' set such that the mouse is active when entering |
| 1132 | a command line, after executing a shell command that scrolls up the |
| 1133 | display and then pressing ":": Selecting text with the mouse works like |
| 1134 | the display wasn't scrolled. Vim doesn't know how much the external |
| 1135 | command scrolled up the display. Use Shift to select text. |
| 1136 | - X windows: When $DISPLAY points to a X server where there is no access |
| 1137 | permission, trying to connect to the X server causes an error message. |
| 1138 | XtOpenDisplay() prints this directly, there is no way to avoid it. |
| 1139 | - X windows: Setting 'guifontset' to an illegal value sometimes crashes Vim. |
| 1140 | This is caused by a fault in a X library function, can't be solved in Vim. |
| 1141 | - Motif: When adding a menu item "Find this &Symbol", the "s" in "this" will |
| 1142 | be underlined, instead of in "Symbol". Motif doesn't let us specify which |
| 1143 | character gets the highlighting. |
| 1144 | - Moving the cursor removes color in color-xterm. This is a color-xterm |
| 1145 | problem! color-xterm ver. 6.1 beta 3 and later work properly. |
| 1146 | - In zsh, "gvim&" changes the terminal settings. This is a zsh problem. |
| 1147 | (Jennings) |
| 1148 | - Problem with HPterm under X: old contents of window is lost (Cosentino). |
| 1149 | - Amiga: When using quickfix with the Manx compiler we only get the first 25 |
| 1150 | errors. How do we get the rest? |
| 1151 | - Amiga: The ":cq" command does not always abort the Manx compiler. Why? |
| 1152 | - Linux: A file with protection r--rw-rw- is seen readonly for others. The |
| 1153 | access() function in GNU libc is probably wrong. |
| 1154 | - MSDOS: When using smartdrive with write-back buffering, writing to a |
| 1155 | readonly floppy will cause problems. How to test for a writable floppy |
| 1156 | first? |
| 1157 | - MSDOS: Both 16 and 32 bit versions: File name expansion doesn't work for |
| 1158 | names that start with a dot. These used to be illegal file names. |
| 1159 | - When doing a CTRL-Z and typing a command for the shell, while Vim is busy |
| 1160 | (e.g. writing a file), the command for the shell is sometimes eaten by Vim, |
| 1161 | because the terminal mode is changed from RAW to CBREAK. |
| 1162 | - An old version of GNU tgoto can't handle the terminfo code for "AF". The |
| 1163 | "%p1" is interpreted as "%p" and "1", causing color not to be working. |
| 1164 | Fix: Change the "%p1" in the "AF" and "AB" terminfo entries to "%p". |
| 1165 | (Benzinger). |
| 1166 | - When running an external command from the GUI, typeahead is going to that |
| 1167 | program, not to Vim. It looks like the shell eats the characters, Vim |
| 1168 | can't get back what the external command didn't use. |
| 1169 | - Win32 GUI: Error code from external command not returned in shell_error. |
| 1170 | It appears that cmd.exe and command.com don't return an error code. |
| 1171 | - Win32 GUI: The Toolbar is a bit too high when the flat style is being |
| 1172 | used. We don't have control over the height of the Toolbar. |
| 1173 | - Win32: All files created on the day of switching from winter to summer |
| 1174 | time cause "changed since editing started" messages. It goes away when |
| 1175 | the file is written again the next day, or the timezone is adjusted. |
| 1176 | DJGPP version is OK. (Zaimi) Looks like a problem with the Win32 library. |
| 1177 | Rebooting doesn't help. Time stamps look OK in directory. (Penn) |
| 1178 | Is this on FAT (stores wall clock time) or NTFS (stores UTS)? |
| 1179 | - Win32, MS-Windows XP: $HOME uses the wrong drive when the user profiles |
| 1180 | are not on the boot disk. This is caused by a wrong value of $HOMEDRIVE. |
| 1181 | This is a bug in XP, see MSKB article 818134. |
| 1182 | - SunOS 5.5.1 with Motif: The file open dialog does not have a horizontal |
| 1183 | scroll bar for the "files" selection. This is a problem in the Motif |
| 1184 | libraries, get a patch from Sun. |
| 1185 | - Solaris 2.6 with GTK and Perl: gvim crashes when started. Problem with X |
| 1186 | input method called from GDK code. Without Perl it doesn't crash. |
| 1187 | - VMS: Vimdiff doesn't work with the VMS diff, because the output looks |
| 1188 | different. This makes test 47 fail. Install a Unix-compatible diff. |
| 1189 | - VMS v7.1 and older: Tests 21 and 32 fail. From VMS v7.1-2 and newer Vim |
| 1190 | does not have this behavior. (Zoltan Arpadffy) |
| 1191 | - Win32 GUI: mouse wheel always scrolls rightmost window. The events arrive |
| 1192 | in Vim as if the rightmost scrollbar was used. |
| 1193 | - GTK with Gnome: Produces an error message when starting up: |
| 1194 | Gdk-WARNING **: locale not supported by C library |
| 1195 | This is caused by the gnome library gnome_init() setting $LC_CTYPE to |
| 1196 | "en_US". Not all systems support this locale name, thus causing the |
| 1197 | error. Hopefully a newer version of GTK/Gnome fixes this problem. |
| 1198 | - GTK 2: With this mapping the hit-enter prompt is _sometimes_ below the |
| 1199 | screen, at other times there is a grey area below the command line: |
| 1200 | :nmap <F11> :if &guioptions=~'m' \| set guioptions-=m \| else \| set guioptions+=m \| endif<cr> |
| 1201 | - GTK: When pasting a selection from Vim to xclipboard gvim crashes with a |
| 1202 | ABRT signal. Probably an error in the file gdkselection.c, the assert |
| 1203 | always fails when XmbTextListToTextProperty() fails. (Tom Allard) |
Bram Moolenaar | f4b8e57 | 2004-06-24 15:53:16 +0000 | [diff] [blame] | 1204 | - GTK 2: gives an assertion error for every non-builtin icon in the toolbar. |
| 1205 | This is a GTK 2.4.x bug, fixed in GTK 2.4.2. (Thomas de Grenier de Latour) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1206 | - When using an xterm that supports the termresponse feature, and the 't_Co' |
| 1207 | termcap option was wrong when Vim started, it will be corrected when the |
| 1208 | termresponse is received. Since the number of colors changes, the |
| 1209 | highlighting needs to be initialized again. This may cause colors defined |
| 1210 | in the vimrc file to be lost. |
| 1211 | - On Windows NT 4.0 the number of files passed to Vim with drag&drop and |
| 1212 | "Edit with Vim" is limited. The maximum command line length is 255 chars. |
| 1213 | |
| 1214 | --------------------- extensions and improvements ---------------------- |
| 1215 | *extensions-improvements* |
| 1216 | |
| 1217 | Documentation: |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 1218 | 8 The GUI help should explain the Find and Find/Replace dialogs. Add a link |
| 1219 | to it from ":promptrepl" and ":promptfind". |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 1220 | 8 List of options should mention whether environment variables are expanded |
| 1221 | or not. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1222 | 8 Extend usr_27.txt a bit. (Adam Seyfarth) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1223 | 7 Add a section on debugging scripts in the user manual. |
| 1224 | 9 Make the Reference Manual more precise. For each command mention: |
| 1225 | - change to cursor position and curswant |
| 1226 | - if it can be undone (u/CTRL-R) and redone (.) |
| 1227 | - how it works for folded lines |
| 1228 | - how it works with multi-byte characters |
| 1229 | 9 In change.txt, remark about Javadoc isn't right. Right alignment would |
| 1230 | work too. |
| 1231 | 8 Spread the windows commands over the other files. For example, ":stag" |
| 1232 | should be with ":tag". Cross-link with tags to avoid too much double |
| 1233 | text. |
| 1234 | 8 Add tags for all features, e.g. "gui_running". |
| 1235 | 7 MS-Windows: When a wrong command is typed with an ALT key, give a hint to |
| 1236 | look at the help for 'winaltkeys'. |
| 1237 | 7 Add a help.vim plugin that maps <Tab> to jump to the next tag in || and |
| 1238 | <C-Tab> (and <S-Tab>) to the previous tag. |
| 1239 | - Check text editor compendium for vi and Vim remarks. |
| 1240 | |
| 1241 | |
| 1242 | Help: |
| 1243 | - First try using the ":help" argument literally, before using it as a |
| 1244 | pattern. And then match it as part of a tag. |
| 1245 | - When a help item has multiple matches make it possible to use ":tn" to go |
| 1246 | to the other matches. |
| 1247 | - Support a way to view (and edit) .info files. |
| 1248 | - Default mapping for help files: <Tab> to position cursor on next |:tag|. |
| 1249 | - Implement a "sticky" help window, some help text lines that are always |
| 1250 | displayed in a window with fixed height. (Guckes) Use "~/.vimhelp" file, |
| 1251 | user can edit it to insert his favorite commands, new account can contain a |
| 1252 | default contents. |
| 1253 | - Make 'winminheight' a local option, so that the user can set a minimal |
| 1254 | height for the help window (and other windows). |
| 1255 | - ":help :s^I" should expand to ":help :substitute". |
| 1256 | - Make the help key (<F1>) context sensitive? |
| 1257 | - Learn mode: show short help while typing commands. |
| 1258 | |
| 1259 | |
| 1260 | User Friendlier: |
| 1261 | 8 Windows install with install.exe: Use .exe instead of .bat files for |
| 1262 | links, so that command line arguments are passed on unmodified? (Walter |
| 1263 | Briscoe) |
| 1264 | 8 Windows install: Be able to associate Vim with a selection of file types? |
| 1265 | 8 Windows uninstall: Have uninstal.c delete the vimfiles directories that |
| 1266 | dosinst.c creates. List the contents of the directory (recursively) if |
| 1267 | the user asks for it. Requires an implementation of "rm -rf". |
| 1268 | 8 Remember the name of the vimrc file that was used (~/.vimrc, $VIM/_vimrc, |
| 1269 | $HOME/_vimrc, etc.) and add "edit vimrc" to the File menu. |
| 1270 | - Add a way to save local settings and mappings into a new plugin file. |
| 1271 | ":mkplugin <file>"? |
| 1272 | 8 Add ":plugininstall" command. Can be used to install a plugin file that |
| 1273 | includes documentation. Let the user select a directory from |
| 1274 | 'runtimepath'. |
| 1275 | " Vim plugin |
| 1276 | <main plugin code> |
| 1277 | " >>> plugin help start <<< |
| 1278 | <plugin docs> |
| 1279 | - Add mappings local to a window: ":map <window> ..."? |
| 1280 | 9 Add buffer-local menu. Should offer a choice between removing the menu or |
| 1281 | disabling it. Be careful that tear-offs don't disappear (keep one empty |
| 1282 | item?). |
| 1283 | Alternative: use BufEnter and BufLeave autocommands. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1284 | 8 make a vimtutor script for Amiga and other systems. |
| 1285 | 7 Add the arguments for configure to the ":version" output? |
| 1286 | |
| 1287 | |
| 1288 | Diff mode: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1289 | 8 Use diff mode to show the changes made in a buffer (compared to the file). |
| 1290 | Use an unnamed buffer, like doing: |
| 1291 | new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis |
| 1292 | 7 Add cursor-binding: when moving the cursor in one diff'ed buffer, also |
| 1293 | move it in other diff'ed buffers, so that CTRL-W commands go to the same |
| 1294 | location. |
| 1295 | |
| 1296 | |
| 1297 | Folding: |
| 1298 | (commands still available: zg zG zI zJ zK zp zP zq zQ zV zw zW zy zY; |
| 1299 | secondary: zB zS zT zZ) |
| 1300 | 8 Add different highlighting for a fold line depending on the fold level. |
| 1301 | (Noel Henson) |
| 1302 | 8 When a closed fold is displayed open because of 'foldminlines', the |
| 1303 | behavior of commands is still like the fold is closed. How to make the |
| 1304 | user aware of this? |
| 1305 | 8 Add an option 'foldskip' with values like 'foldopen' that specifies which |
| 1306 | commands skip over a closed fold. |
| 1307 | 8 "H" and "L" count buffer lines instead of window lines. (Servatius Brandt) |
| 1308 | 8 Add a way to add fold-plugins. Johannes Zellner has one for VB. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1309 | 7 When using manual folding, the undo command should also restore folds. |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 1310 | - Allow completely hiding a closed fold. E.g., by setting 'foldtext' to an |
| 1311 | empty string. Require showing a character in 'foldcolumn' to avoid the |
| 1312 | missing line goes unnoticed. |
| 1313 | How to implement this? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1314 | - When pressing the down arrow of a scrollbar, a closed fold doesn't scroll |
| 1315 | until after a long time. How to make scrolling with closed folds |
| 1316 | smoother? |
| 1317 | - When creating a session, also store folds for buffers in the buffer list, |
| 1318 | using the wininfo in wi_folds. |
| 1319 | - 'foldmethod' "textobject": fold on sections and paragraph text objects. |
| 1320 | - Add 'hidecomment' option: don't display comments in /* */ and after //. |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 1321 | Or is the conceal patch from Vince Negri a more generic solution? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1322 | - "zu": undo change in manual fold. "zU" redo change in manual fold. How to |
| 1323 | implement this? |
| 1324 | - "zJ" command: add the line or fold below the fold in the fold under the |
| 1325 | cursor. |
| 1326 | - 'foldmethod' "syntax": "fold=3": set fold level for a region. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1327 | - Apply a new foldlevel to a range of lines. (Steve Litt) |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 1328 | 8 Have some way to restrict commands to not folded text. Also commands like |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1329 | searches. |
| 1330 | |
| 1331 | |
| 1332 | Multi-byte characters: |
| 1333 | 9 When the tail byte of a double-byte character is illegal (e.g., a CR), the |
| 1334 | display is messed up (Yasuhiro Matsumoto). Should check for illegal |
| 1335 | double-byte characters and display them differently (display each single |
| 1336 | byte). |
| 1337 | 8 Add an item in 'fileencodings' to check the first lines of a file for |
| 1338 | the encoding. See Python PEP: http://www.python.org/peps/pep-0263.html. |
| 1339 | To avoid getting a wrong encoding only accept something Emacs-like: |
| 1340 | "-*- coding: enc-na_me.foo -*-" and "-*- coding= enc-na_me.foo -*-" |
| 1341 | Match with "-\*-\s*coding[:=]\s*\([::word::-_.]\+\)\s*-\*-" and use first |
| 1342 | item. |
| 1343 | 8 Add an item in 'fileencodings' to check the first line of an XML file for |
| 1344 | the encoding. <?xml version="1.0" encoding="UTF-8"?> Or "charset=UTF-8"? |
| 1345 | 8 The quickfix file is read without conversion, thus in 'encoding'. Add an |
| 1346 | option to specify the encoding of the errorfile and convert it. Also for |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 1347 | ":grep" and ":helpgrep". |
Bram Moolenaar | 46c9c73 | 2004-12-12 11:37:09 +0000 | [diff] [blame^] | 1348 | More generic solution: support a filter (e.g., by calling a function). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1349 | 8 When a file was converted from 'fileencoding' to 'encoding', a tag search |
| 1350 | should also do this on the search pattern. (Andrzej M. Ostruszka) |
| 1351 | 7 When converting a file fails, mention which byte could not be converted, |
| 1352 | so that the user can fix the problem. |
| 1353 | 8 Add configure option to be able to disable using the iconv library. (Udo |
| 1354 | Schweigert) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1355 | 9 'aleph' should be set to 1488 for Unicode. (Zvi Har'El) |
| 1356 | 8 Should add test for using various commands with multi-byte characters. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1357 | 8 'infercase' doesn't work with multi-byte characters. |
| 1358 | 8 toupper() function doesn't handle byte count changes. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1359 | 8 "ga" should show all composing characters, also if there are more than 2. |
| 1360 | 7 When searching, should order of composing characters be ignored? |
| 1361 | 8 Should implement 'delcombine' for command line editing. |
| 1362 | 8 Detect overlong UTF-8 sequences and handle them like illegal bytes. |
| 1363 | 8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte |
| 1364 | characters. |
| 1365 | 8 UTF-8: "r" in Visual mode doesn't take composing characters. |
| 1366 | 8 UTF-8: When there is a precomposed character in the font, use it instead |
| 1367 | of a character and a composing character. See xterm for an example. |
| 1368 | 7 When a character can't be displayed, display its digraph instead. |
| 1369 | 'display' option to specify this. |
| 1370 | 7 Use ideas for nl_langinfo() from Markus Kuhn in enc_default(): |
| 1371 | (www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c) |
| 1372 | - GTK and Win32: Allow selecting fonts for 'guifontset' with the |
| 1373 | fontselector somehow. |
| 1374 | - GTK and Win32: make it possible to set the font for the menu to make it |
| 1375 | possible to have 'encoding' different from the current locale. |
| 1376 | - dbcs_class() only works for Japanese and Korean. Implement this for |
| 1377 | other encodings. The "euc-jp" and "euc-kr" choices might be wrong. |
| 1378 | - Find some way to automatically select the right GUI font or fontset, |
| 1379 | depending on the default value of 'encoding'. |
| 1380 | Irrelevant in the GTK+ 2 GUI so long as UTF-8 is used. |
| 1381 | For Windows, the charset_pairs[] table could be used. But how do we know |
| 1382 | if a font exists? |
| 1383 | - Do keyboard conversion from 'termencoding' to 'encoding' with |
| 1384 | convert_input() for Mac GUI, RiscOS GUI, BeOS GUI. |
| 1385 | - Add mnemonics from RFC1345 longer than two characters. |
| 1386 | Support CTRL-K _{mnemonic}_ |
| 1387 | 7 In "-- INSERT (lang) --" show the name of the keymap used instead of |
| 1388 | "lang". (Ilya Dogolazky) |
| 1389 | - Make 'langmap' accept multi-byte characters. |
| 1390 | - Do we need the reverse of 'keymap', like 'langmap' but with files and |
| 1391 | multi-byte characters? E.g., when using a Russian keyboard. |
| 1392 | - Add the possibility to enter mappings which are used whenever normal text |
| 1393 | could be entered. E.g., for "f" command. But not in Normal mode. Sort |
| 1394 | of opposite of 'langmap'. Use ":tmap" command? |
| 1395 | - When breaking a line, take properties of multi-byte characters into |
| 1396 | account. The "linebreak" program from Bruno Haible can do it: |
| 1397 | ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz |
| 1398 | But it's very complicated... |
| 1399 | |
| 1400 | |
| 1401 | Printing: |
| 1402 | - Add "page width" to wrap long lines. |
| 1403 | - Win32: use a font dialog for setting 'printfont'. Can reuse the code for |
| 1404 | the 'guifont' dialog, put the common code in a separate function. |
| 1405 | - Win32: when 'printfont' is empty use 'guifont'. |
| 1406 | - Unix: Use some dialog box to do the obvious settings (paper size, printer |
| 1407 | name, portrait/landscape, etc). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1408 | - PostScript: only works for 7-bit ASCII and EBCDIC. Should support |
| 1409 | different 'encoding' values somehow. |
| 1410 | - Allow specifying the paper size, instead of using a standard size. Same |
| 1411 | units as for the margins. |
| 1412 | - Support right-to-left text? |
| 1413 | 8 Make the foreground color darkening function preserve the hue of the |
| 1414 | color. |
| 1415 | |
| 1416 | |
| 1417 | Syntax highlighting: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1418 | 8 Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson) |
| 1419 | Should do the same for ":syn on" and ":syn manual". |
| 1420 | 8 Support "containedin" argument for ":syn include", so that the defined |
| 1421 | cluster can be added to existing syntax items. |
| 1422 | 8 C syntax: Don't highlight {} as errors inside () when used like this: |
| 1423 | "({ something })", often used in GCC code. |
| 1424 | 8 When editing a new file without a name and giving it a name (by writing |
| 1425 | it) and 'filetype' is not set, detect the filetype. Avoid doing it for |
| 1426 | ":wq file". |
| 1427 | 8 Make conversion to HTML faster (Write it in C or pre-compile the script). |
| 1428 | 9 There is still a redraw bug somewhere. Probably because a cached state is |
| 1429 | used in a wrong way. I can't reproduce it... |
| 1430 | 7 Make syntax keyword table configurable. Set number of bits used with |
| 1431 | ":syn clear [hashbits]", so that we don't need to reallocate the table. |
| 1432 | minimal 4 bits, maximal 16. (Campbell) |
| 1433 | 7 Be able to change only the background highlighting. Useful for Diff* and |
| 1434 | Search highlighting. |
| 1435 | 8 Allow the user to add items to the Syntax menu sorted, without having to |
| 1436 | change this for each release. |
| 1437 | 8 Add a "matchcontains" for regions: items contained in the start or end |
| 1438 | pattern, but not in the body. |
| 1439 | 8 Add a "keepend-contained" argument: Don't change the end of an item this |
| 1440 | one is contained in. Like "keepend" but specified on the contained item, |
| 1441 | instead of the containing item. |
| 1442 | 8 For keywords, allow to define the size of the hash table with ":syn |
| 1443 | clear". Change KHASH_ defines into variables stored in buffer struct. |
| 1444 | Use something else than linear linked list from the hash table. (Campbell) |
| 1445 | 8 cpp.vim: In C++ it's allowed to use {} inside (). |
| 1446 | 8 Some syntax files set 'iskeyword'. When switching to another filetype |
| 1447 | this isn't reset. Add a special keyword definition for the syntax rules? |
| 1448 | When this is done, use vim.vim syntax highlighting for help file examples, |
| 1449 | but without ":" in 'iskeyword' for syntax. |
| 1450 | 8 Add specific syntax item to match with parens/braces that don't have a |
| 1451 | "%" match. :syntax nomatch cMatchError (,{,[,),},] [contained] |
| 1452 | 8 Highlight the text between two matching parens (e.g., with a grey |
| 1453 | background) when on one of the parens or in between them. |
| 1454 | Or highlight the matching paren when the cursor is on one. |
| 1455 | 8 Add a command to jump to the next character highlighted with "Error". |
| 1456 | 8 When using a cterm, and no ctermfg or ctermbg are defined, use start/stop |
| 1457 | sequences. Add remark in docs that :if 'term' == "term-name" should be |
| 1458 | used. |
| 1459 | 8 Add @spell cluster to String and Comment groups for many languages. Will |
| 1460 | allow spell checking. (Fleiner) |
| 1461 | 8 When listing syntax items, try to sort the keywords alphabetically. And |
| 1462 | re-insert the [] if possible. |
| 1463 | 8 Make it possible to use color of text for Visual highlight group (like for |
| 1464 | the Cursor). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1465 | 8 Make it possible to only highlight a sub-expression of a match. Like |
| 1466 | using "\1" in a ":s" command. |
| 1467 | 8 Support for deleting syntax items: |
| 1468 | :syn keyword cTodo remove this |
| 1469 | :syn match cTodo remove "pattern" |
| 1470 | :syn region cString remove start="this" end="that" |
| 1471 | 8 Add possibility to sync on something else, when the syncing in one way |
| 1472 | doesn't find match. For HTML: When no {script} is found, try looking for |
| 1473 | a '<'. (Fleiner) |
| 1474 | 7 Replace the synchronizing method with a state machine specification? |
| 1475 | Should be able to start at any line in the file, search forwards or |
| 1476 | backwards, and use the result of matching a pattern. |
| 1477 | 7 Use parsing like awk, so that e.g., a ( without a matching ) can be |
| 1478 | detected. |
| 1479 | 8 Make it possible to use "inverted" highlighting, invert the original |
| 1480 | character. For Visual mode. (xterm-selection already does this). |
| 1481 | 8 Highlight non-printable characters with "SpecialChar", linked to |
| 1482 | "Special". Display them with the digraph characters, if possible. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1483 | 8 Highlight the clipboard-selection with a highlight group. |
| 1484 | 8 Be able to reset highlighting to its original (default) values. |
| 1485 | 7 Be able to write current highlighting to a file as commands, similar to |
| 1486 | ":mkvimrc". |
| 1487 | 8 Improve c.vim: |
| 1488 | - Add check for unterminated strings, with a variable to switch it on: |
| 1489 | "c_strict_ansi". |
| 1490 | - Detect unbalanced "#endif". Requires looking back a long way... |
| 1491 | 8 Add an option to restrict the updating of syntax highlighting to the |
| 1492 | current line while in Insert mode. |
| 1493 | 8 When guessing value of 'background', the syntax file has already been |
| 1494 | loaded (from the .gvimrc). After changing 'background', load it again? |
| 1495 | 8 Add ":syn resync" command, to re-parse the whole file until the current |
| 1496 | display position. |
| 1497 | 8 Should support "me" offset for a region start pattern. To be used to |
| 1498 | allow searching for the end pattern inside the match of the end pattern. |
| 1499 | Example: syn region pikeXX start="([^{]" end=")" should work on "()". |
| 1500 | 8 When using a regexp for "contains=", should delay matching with it until |
| 1501 | redrawing happens. Set a flag when a group is added, check this flag when |
| 1502 | highlighting starts. |
| 1503 | 7 Add "semitrans": Add highlighting. E.g., make the text bold, but keep the |
| 1504 | colors. And add colors, so that Green+Red becomes Yellow. |
| 1505 | E.g. for this html: |
| 1506 | <B> bold text <I> italic+bold text </B> italic text </I> |
| 1507 | 7 Wild idea: Not only set highlighting, but also change what is displayed |
| 1508 | (e.g., remove characters, so that "<B>bold</B>" can be shown as "bold"): |
| 1509 | :syn region boldstuff start="<B>" display="" end="</B>" display="" |
| 1510 | 7 CTRL-] checks the highlight group for finding out what the tag is. |
| 1511 | 7 Add an explanation how a list of words can be used to highlight misspelled |
| 1512 | words. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1513 | 7 Command line completion for ":find" should search in 'path'. |
| 1514 | 8 Add more command line completion for :syntax. |
| 1515 | 8 Add more command line completion for :highlight. |
| 1516 | 8 Add more command line completion for :sign. |
| 1517 | 7 Should find a better way to parse the :syntax and :highlight commands. |
| 1518 | Use tables or lists that can be shared by parsing for execution and |
| 1519 | completion? |
| 1520 | 8 Add ColorSchemePost autocommand event, so that scripts can set up their |
| 1521 | highlighting. (Salman Halim) |
| 1522 | 7 Add a few sets of colors (e.g. Borland Turbo C one). With a menu to |
| 1523 | select one of the sets. |
| 1524 | 8 Add offsets to sub-matches: "\(a*\) *"he=e1-1 |
| 1525 | 'e' is end of match 'e1' is end of sub-match 1, 's2' is start of submatch |
| 1526 | 2, etc. |
| 1527 | 8 In Insert mode, when there are typeahead characters, postpone the |
| 1528 | highlighting (for "." command). |
| 1529 | 8 Syncing on comments isn't 100% correct when / / lines mix with / * and * /. |
| 1530 | For example: What about a line that starts with / / and contains * /? |
| 1531 | 8 Ignore / * and * / inside strings, when syncing. |
| 1532 | 7 Build a few more syntax files from the file "/usr/share/misc/vgrindefs": |
| 1533 | ISP, LDL, Icon, ratfor. And check "nedit/source/highlight.c". |
| 1534 | 6 Add possibility to have background color continue until the right edge of |
| 1535 | the window. Useful for comment blocks and function headings. (Rogall) |
| 1536 | - Make it possible to add "contains" items for all items in a group. Useful |
| 1537 | when extending an already existing syntax file. |
| 1538 | - Add line-continuation pattern for non-syncing items too? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1539 | - Add possibility to highlight the whole line, including the right margin |
| 1540 | (for comment blocks). |
| 1541 | - Add 'hlmatch' option: List of flags: |
| 1542 | 'c': highlight match for character under the cursor. |
| 1543 | 'b': highlight the previous (, and its match. |
| 1544 | 'a': highlight all text from the previous ( until its match. |
| 1545 | Also for {}, <>, etc.? |
| 1546 | 'e': highlight all braces without a match (slow?) |
| 1547 | OR: add an argument "cursor" to the syntax command, which means that the |
| 1548 | region/match/keyword is only highlighted when the cursor is on it. |
| 1549 | (Campbell) |
| 1550 | Or do it like Elvis: define text objects and how to highlight them around |
| 1551 | the cursor. (Iain Truskett) |
| 1552 | 7 Make it possible to use all words in the tags files as Keyword. |
| 1553 | Can also be done with a script (but it's slow). |
| 1554 | 7 Make it possible to call a ":" command when a match is found. Should |
| 1555 | allow for adding keywords from the text (e.g. variables that are set). |
| 1556 | And allows for sections with different highlighting. |
| 1557 | 7 Add highlight group for commandline: "Commandline". Make sure it |
| 1558 | highlights the command line while typing a command, and any output from |
| 1559 | messages. And external commands? |
| 1560 | 8 Make a version that works like less, but with highlighting: read stdin for |
| 1561 | text, exit at end of file, don't allow editing, etc. moreim? lessim? |
| 1562 | 7 SpecialKey highlighting overrules syntax highlighting. Can't give an |
| 1563 | unprintable char another color. Would be useful for ^M at end of line. |
| 1564 | |
| 1565 | |
| 1566 | Built-in script language: |
| 1567 | 8 Add referring to key options with "&t_xx". Both for "echo &t_xx" and |
| 1568 | ":let &t_xx =". Useful for making portable mappings. |
| 1569 | 8 Allow range for ":exec". Pass it on to the executed command. (Webb) |
| 1570 | 8 exists("&&option") tests if 'option' is actually implemented. Useful for |
| 1571 | 'shellslash', for example. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1572 | 8 Have a look at VSEL. Would it be useful to include? (Bigham) |
| 1573 | 8 Add ":fungroup" command, to group function definitions together. When |
| 1574 | encountered, all functions in the group are removed. Suggest using an |
| 1575 | obscure name to avoid name clashes. Require a ":fungroup END" in the same |
| 1576 | sourced file? Assume the group ends at the end of the file. Handle |
| 1577 | nested packages? |
| 1578 | Alternative: Support packages. {package-name}:{function-name}(). |
| 1579 | Packages are loaded automatically when first used, from |
| 1580 | $VIMRUNTIME/packages (or use a search path). |
| 1581 | 7 Make globpath() also work with "**" and upwards search. (Brian Medley) |
Bram Moolenaar | c0197e2 | 2004-09-13 20:26:32 +0000 | [diff] [blame] | 1582 | 7 Add the markclear() function to delete a mark in another buffer. Charles |
| 1583 | Campbell (2004 Jan 9) |
| 1584 | http://mysite.verizon.net/astronaut/vim/index.html#Patch |
| 1585 | Implement setmark(markname, lnum [, col [, filename]]) instead? |
| 1586 | When "lnum" is zero delete the mark. |
| 1587 | When "filename" has no wildcards and there is no matching buffer, add |
| 1588 | the buffer (unlisted). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1589 | 7 Pre-parse or compile Vim scripts into a bytecode. |
| 1590 | 1. Put the bytecode with the original script, with an ":if |
| 1591 | has('bytecode')" around it, so that it's only used with a Vim that |
| 1592 | supports it. Update the code with a command, can be used in an |
| 1593 | autocommand. |
| 1594 | 2. Use a ".vic" file (like Python use .pyc). Create it when writing a |
| 1595 | .vim file. Problem: distribution. |
| 1596 | 3. Use a cache directory for each user. How to recognize which cached |
| 1597 | file belongs to a sourced script? |
| 1598 | 7 Add "n" flag to search() function, just like searchpair(). (Alexey |
| 1599 | Marinichev) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1600 | 7 Add argument to winwidth() to subtract the space taken by 'foldcolumn', |
| 1601 | signs and/or 'number'. |
| 1602 | 8 Add functions: |
Bram Moolenaar | 5eb86f9 | 2004-07-26 12:53:41 +0000 | [diff] [blame] | 1603 | search() Add optional offset argument. |
| 1604 | realname() Get user name (first, last, full) |
| 1605 | user_fullname() patch by Nikolai Weibull, Nov |
| 1606 | 3 2002 |
| 1607 | Only add this when also implemented for |
| 1608 | non-Unix systems, otherwise a shell cmd could |
| 1609 | be used. |
| 1610 | get_user_name() gets login name. |
Bram Moolenaar | ab79bcb | 2004-07-18 21:34:53 +0000 | [diff] [blame] | 1611 | menuprop({name}, {idx}, {what}) |
| 1612 | Get menu property of menu {name} item {idx}. |
| 1613 | menuprop("", 1, "name") returns "File". |
| 1614 | menuprop("File", 1, "n") returns "nmenu |
| 1615 | File.Open..." argument. |
| 1616 | Patch by Ilya Sher, 2004 Apr 22 |
| 1617 | Return a list of menus and/or a dictionary |
| 1618 | with properties instead. |
| 1619 | mapname({idx}, mode) return the name of the idx'th mapping. |
| 1620 | Patch by Ilya Sher, 2004 Mar 4. |
| 1621 | Return a list instead. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1622 | sprintf(format, arg, ..) How to prevent a crash??? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1623 | attributes() return file protection flags "drwxrwxrwx" |
| 1624 | mkdir(dir) Create directory |
| 1625 | copy(from, to) Copy a file |
| 1626 | perl(cmd) call Perl and return string |
| 1627 | shorten(fname) shorten a file name, like home_replace() |
| 1628 | input(prompt, complete) like input() but do specified completion |
| 1629 | inputrl() like input() but right-to-left |
| 1630 | virtualmode() add argument to obtain whether "$" was used in |
| 1631 | Visual block mode. |
| 1632 | tagtype(tag) get type of tag (also checks if it exists) |
| 1633 | getacp() Win32: get codepage (Glenn Maynard) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1634 | getbufline() get line from any buffer |
| 1635 | deletebufline() delete line in any buffer |
| 1636 | appendbufline() append line in any buffer |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1637 | sort() Sort a newline-separated string. Also: |
| 1638 | ":sort". |
| 1639 | libcall() Allow more than one argument. |
| 1640 | libcallext() Like libcall(), but using a callback function |
| 1641 | to allow the library to execute a command or |
| 1642 | evaluate an expression. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1643 | char2hex() convert char string to hex string. XX |
| 1644 | hex2char() convert hex string to char string. XX |
| 1645 | 7 Make bufname("'0") return the buffer name from mark '0. How to get the |
| 1646 | column and line number? col("'0") currently returns zero. |
| 1647 | 8 argc() returns 0 when using "vim -t tag". How to detect that no file was |
| 1648 | specified in any way? To be able to jump to the last edited file. |
| 1649 | 8 Pass the executable name to the Vim scripts in some way. As v:argv0? |
| 1650 | 8 Add command arguments with three dashes, passed on to Vim scripts. |
| 1651 | 8 When starting to source a vim script, delete all functions that it has |
| 1652 | previously defined? Avoids using ":fun!" all the time. |
| 1653 | 7 Add optional arguments to user functions: |
| 1654 | :func myFunc(arg1, arg2, arg3 = "blah", arg4 = 17) |
| 1655 | 6 User functions: Functions local to buffer "b:func()"? |
| 1656 | 8 Add ":let var[{expr}] = {expr}". When past the end of "var" just ignore. |
| 1657 | 8 The "= register should be writable, if followed by the name of a variable, |
| 1658 | option or environment variable. |
| 1659 | 8 ":let &option" should list the value of the option. |
| 1660 | 7 Add synIDlist(), making the whole list of syntax items on the |
| 1661 | stack available (separated with '\n'). |
| 1662 | 8 Add autocommand-event for when a variable is changed: |
| 1663 | :au VarChanged {varname} {commands} |
| 1664 | 8 Add "has("gui_capable")", to check if the GUI can be started. |
| 1665 | 8 Add possibility to use variables like registers: characterwise (default), |
| 1666 | linewise (when ending in '\n'), blockwise (when ending in '\001'). reg0, |
| 1667 | rega, reg%, etc. Add functions linewise({expr}), blockwise({expr}) and |
| 1668 | charwise({expr}). |
| 1669 | 7 Make it possible to do any command on a string variable (make a buffer |
| 1670 | with one line, containing the string). Maybe add an (invisible) scratch |
| 1671 | buffer for this? |
| 1672 | result = scratch(string, command) |
| 1673 | result = apply(string, command) |
| 1674 | result = execute(string, command) |
| 1675 | "command" would use <> notation. |
| 1676 | Does scratch buffer have a number? Or re-use same number? |
| 1677 | 7 Add function to generate unique number (date in milliseconds). |
| 1678 | 7 Automatically load a function from a file when it is called. Need an |
| 1679 | option for the search path. (Sekera) |
| 1680 | 7 Persistent variables: "p:var"; stored in viminfo file and sessions files. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1681 | |
| 1682 | |
| 1683 | Robustness: |
| 1684 | 8 This pattern in syntax/java.vim causes a recursive call of regmatch(): |
| 1685 | syn match javaStringError +"\([^"\\]\|\\.\)*$+ |
| 1686 | A long line with a " in it can cause a crash when it runs out of stack |
| 1687 | space (on systems where this isn't caught). How can we catch this for |
| 1688 | more systems? |
Bram Moolenaar | 843ee41 | 2004-06-30 16:16:41 +0000 | [diff] [blame] | 1689 | 6 Add file locking. Lock a file when starting to edit it with flock() or |
| 1690 | fcntl(). This patch has advisory file locking while reading/writing |
| 1691 | the file for Vim 5.4: ~/vim/patches/kahn_file_locking . |
| 1692 | The patch is incomplete (needs support for more systems, autoconf). |
| 1693 | Andy doesn't have time to work on it. |
| 1694 | Disadvantage: Need to find ways to gracefully handle failure to obtain a |
| 1695 | lock. When to release a lock: When buffer is unloaded? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1696 | |
| 1697 | |
| 1698 | Performance: |
| 1699 | 8 Loading plugins takes startup time. Only load the part that is used to |
| 1700 | trigger the rest, and load the rest when it's needed? |
| 1701 | 8 Turn b_syn_ic and b_syn_containedin into b_syn_flags. |
| 1702 | 9 Loading menu.vim still takes quite a bit of time. How to make it faster? |
| 1703 | 8 in_id_list() takes much time for syntax highlighting. Cache the result? |
| 1704 | 7 setpcmark() shifts the jumplist, this takes quite a bit of time when |
| 1705 | jumping around. Instead use an index for the start? |
| 1706 | 8 When displaying a space with only foreground highlighting, it's the same |
| 1707 | as a space without attributes. Avoid displaying spaces for the "~" lines |
| 1708 | when starting up in a color terminal. |
| 1709 | 8 Avoid alloc() for scratch buffer use, esp. in syntax.c. It's very slow on |
| 1710 | Win16. |
| 1711 | 9 Setting GUI options in the console (e.g., 'guifont') should not cause a |
| 1712 | redraw. |
| 1713 | 8 Profiling shows that in_id_list() is used very often for C code. Can this |
| 1714 | function be improved? |
| 1715 | 8 For an existing file, the page size of the swap file is always the |
| 1716 | default, instead of using the block size of the device, because the swap |
| 1717 | file is created only after setting the block size in mf_open(). How can |
| 1718 | this be improved? |
| 1719 | 8 Set default for 'ttyscroll' to half a screen height? Should speed up |
| 1720 | MS-DOS version. (Negri) |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 1721 | 7 C syntax highlighting gets a lot slower after ":set foldmethod=syntax". |
| 1722 | (Charles Campbell) Inserting a "{" is very slow. (dman) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1723 | 7 HTML syntax highlighting is slow for long lines. Try displaying |
| 1724 | http://www.theregister.co.uk/content/4/22908.html. (Andre Pang) |
| 1725 | 7 Check how performance of loading the wordlist can be improved (adding a |
| 1726 | lot of abbreviations). |
| 1727 | 7 DOS console: Add t_DL support, to make scrolling faster. |
| 1728 | 7 Compile Ex commands to byte codes. Store byte codes in a vim script file |
| 1729 | at the end, after "compiled:. Make it look like a single comment line |
| 1730 | for old Vim versions. Insert first line "Vim script compiled <timestamp>. |
| 1731 | Only used compiled code when timestamp matches the file stat. |
| 1732 | Add command to compile a vim script and add it to the file in-place. |
| 1733 | Split Ex command executing into a parsing and executing phase. |
| 1734 | Use compiled code for functions, while loops, etc. |
| 1735 | 8 When editing a file with extremely long lines (e.g., an executable), the |
| 1736 | "linerest" in readfile() is allocated twice to be able to copy what was |
| 1737 | read so far. Use realloc() instead? Or split the line when allocating |
| 1738 | memory fails and "linerest" is big (> 100000)? |
| 1739 | 8 When defining autocommands (e.g., from $VIMRUNTIME/filetype.vim), need to |
| 1740 | compare each pattern with all existing patterns. Use a hash code to avoid |
| 1741 | using strcmp() too often? |
| 1742 | 7 Include turbo_loader patches, speeding up reading a file? |
| 1743 | Speed up reading a file by reading it into a fixed-size buffer, creating |
| 1744 | the list of indexes in another buffer, and then copying the result into a |
| 1745 | memfile block with two copies. Then read the next block into another |
| 1746 | fixed-size buffer, create the second list of indexes and copy text from |
| 1747 | the two blocks to the memfile block. |
| 1748 | 7 do_cmdline(): Avoid that the command line is copied to allocated memory |
| 1749 | and freed again later all the time. For while loops, and for when called |
| 1750 | with an argument that can be messed with. |
| 1751 | Generic solution: Make a struct that contains a pointer and a flag that |
| 1752 | indicates if the pointer should be freed when replaced. |
| 1753 | 7 Check that the file size is not more than "sizeof(long)". |
| 1754 | - Further improve finding mappings in maphash[] in vgetorpeek() |
| 1755 | 8 Syntax highlighting is slow when deleting lines. Try in |
| 1756 | $VIMRUNTIME/filetype.vim. |
| 1757 | - "out of memory" after deleting (1,$d) and changing (:%s/^/> /) a lot of |
| 1758 | lines (27000) a few times. Memory fragmentation? |
| 1759 | - Have a look at how pdksh does memory allocation (alloc.c). (Dalecki) |
| 1760 | - Do profiling on: |
| 1761 | - :g/pat/normal cmd |
| 1762 | - 1000ii<Esc> |
| 1763 | - deleting 10Mbyte worth of lines (netscape binary) |
| 1764 | - "[i" and "[d" (Yegappan Lakshmanan) |
| 1765 | - ":g/^/m0" on a 450Kbyte file. And the "u". |
| 1766 | - highlighting "~/vim/test/longline.tex", "~/vim/test/scwoop.tcl" and |
| 1767 | "~/vim/test/lockup.pl". |
| 1768 | - loading a syntax file to highlight all words not from a dictionary. |
| 1769 | - editing a vim script with syntax highlighting on (loading vim.vim). |
| 1770 | 7 Screen updating can be further improved by only redrawing lines that were |
| 1771 | changed (and lines after them, when syntax highlighting was used, and it |
| 1772 | changed). |
| 1773 | - On each change, remember start and end of the change. |
| 1774 | - When inserting/deleting lines, remember begin, end, and line count. |
| 1775 | - Use macros/duarte/capicua for profiling. Nvi 1.71 is the fastest! |
| 1776 | - When using a file with one long line (1Mbyte), then do "$hhhh", is still |
| 1777 | very slow. Avoid calling getvcol() for each "h"? |
| 1778 | - Executing a register, e.g. "10000@@" is slow, because ins_typebuf has to |
| 1779 | move the previous commands forward each time. Pass count from |
| 1780 | normal_cmd() down to do_execreg(). |
| 1781 | - Repeating insert "1000i-<Esc>" displays --INSERT-- all the time, because of |
| 1782 | the <Esc> at the end. Make this work faster (disable redrawing). |
| 1783 | - Avoid calls to plines() for cursor line, use w_cline_height. |
| 1784 | - After ":set nowrap" remove superfluous redraw with wrong hor. offset if |
| 1785 | cursor is right of the screen. |
| 1786 | 8 Make CTRL-C on Unix generate a signal, avoid using select() to check for a |
| 1787 | CTRL-C (it's slow). |
| 1788 | |
| 1789 | |
| 1790 | Code size: |
| 1791 | 8 GUI: When NO_CONSOLE is defined, more code can be excluded. |
| 1792 | - Put getline() and cookie in a struct, so only one argument has to be |
| 1793 | passed to do_cmdline() and other functions. |
| 1794 | 8 Make a GUI-only version for Unix? |
| 1795 | 8 In buf_write _() isn't needed when setting errmsg, do it once when using |
| 1796 | it. |
| 1797 | 7 When compiling with a GUI-only version, the code for cterm colors can be |
| 1798 | left out. |
| 1799 | 8 When compiled with a GUI-only version, the termcap entries for terminals |
| 1800 | can be removed. |
| 1801 | 8 Can the check for libelf in configure.in be removed? |
| 1802 | |
| 1803 | |
| 1804 | Messages: |
| 1805 | 8 When using ":q" in a changed file, the error says to "add !". Add the |
| 1806 | command so that beginners understand it: "use :q!". |
| 1807 | 8 For 'verbose' level 12 prints commands from source'ed files. How to skip |
| 1808 | lines that aren't executed? Perhaps move the echoing to do_cmdline()? |
| 1809 | 8 Use 'report' for ":bdel"? (Krishna) To avoid these messages when using a |
| 1810 | script. |
| 1811 | 8 "vim --version" output goes to stderr, should be stdout. Can all output |
| 1812 | from messages using printf() go to stdout? |
| 1813 | - Delete message after new command has been entered and have waited for key. |
| 1814 | Perhaps after ten seconds? |
| 1815 | - Make message history available in "msg" variables: msg1, msg2, .. msg9. |
| 1816 | 9 Check handling of overwriting of messages and delays: |
| 1817 | Very wrong: errors while redrawing cause endless loop. |
| 1818 | When switching to another file and screen scrolls because of the long |
| 1819 | message and return must be typed, don't scroll the screen back before |
| 1820 | redrawing. |
| 1821 | 7 Add an option, which is a regexp, that disables warning messages which |
| 1822 | match that regexp (Tsirkin). |
| 1823 | 8 When address range is wrong you only get "Invalid range". Be a bit more |
| 1824 | specific: Negative, beyond last line, reverse range? Include the text. |
| 1825 | 8 Make it possible to ignore errors for a moment ('errorignore'?). Another |
| 1826 | option to switch off giving error messages ('errorquiet'?). Also an option |
| 1827 | not to give any messages ('quiet')? Or ":quiet on", ":quiet off". |
| 1828 | Careful: For a severe error (out of memory), and when the user starts |
| 1829 | typing, error messages must be switched back on. |
| 1830 | Also a flag to ignore error messages for shell commands (for mappings). |
| 1831 | - Option to set time for emsg() sleep. Interrupt sleep when key is typed? |
| 1832 | sleep before second message? |
| 1833 | 8 In Ex silent mode or when reading commands from a file, what exactly is |
| 1834 | not printed and what is? Check ":print", ":set all", ":args", ":vers", |
| 1835 | etc. At least there should be no prompt. (Smulders) And don't clear the |
| 1836 | screen when reading commands from stdin. (Kendall) |
| 1837 | --> Make a difference between informative messages, prompts, etc. and |
| 1838 | error messages, printing text, etc. |
| 1839 | 8 Window should be redrawn when resizing at the hit-enter prompt. |
| 1840 | Also at the ":tselect" prompt. Find a generic solution for redrawing when |
| 1841 | a prompt is present (with a callback function?). |
| 1842 | |
| 1843 | |
| 1844 | Screen updating: |
| 1845 | 7 Add a string to the 'display' option to make CTRL-E and CTRL-Y scroll one |
| 1846 | screen line, also if this means the first line doesn't start with the |
| 1847 | first character (like what happens with a single line that doesn't fit). |
| 1848 | - screen_line(): |
| 1849 | - insert/delete character stuff. |
| 1850 | - improve delete rest of line (spaces at end of line). |
| 1851 | - When moving or resizing window, try to avoid a complete redraw (esp. when |
| 1852 | dragging the status line with the mouse). |
| 1853 | - When 'lazyredraw' set, don't echo :ex commands? Need a flag to redraw when |
| 1854 | waiting for a character. |
| 1855 | 8 Add a ":refresh [winnr]" command, to force updating a window. Useful from |
| 1856 | an event handler where ":normal" can't be used. Also useful when |
| 1857 | 'lazyredraw' is set in a mapping. |
| 1858 | 7 Make 'list' and 'linebreak' work together. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1859 | |
| 1860 | |
| 1861 | Scrolling: |
| 1862 | 8 Add "zm" command: scroll horizontally to put the cursor in the middle. |
| 1863 | 6 Add option to set the overlap for CTRL-F and CTRL-B. (Garhi) |
| 1864 | - extend 'scrollbind' option: 'scrollopt' words "search", "relative", etc.. |
| 1865 | Also 'e'xecute some commands (search, vertical movements) in all bound |
| 1866 | windows. |
| 1867 | 7 Add 'scrollbind' feature to make the offset of one window with the next |
| 1868 | one equal to the window height. When editing one file in both windows it |
| 1869 | looks like each window displays a page of the buffer. |
| 1870 | - Allow scrolling by dragging with the mouse (grab a character and move it |
| 1871 | up/down). Like the "hand" in Acrobat reader. Use Alt-LeftMouse for this? |
| 1872 | (Goldfarb) |
| 1873 | - Add command to execute some commands (search, vertical movements) in all |
| 1874 | bound windows. |
| 1875 | - Add 'search' option to 'scrollopt' to allow 'scrollbind' windows to |
| 1876 | be bound by regexp searches |
Bram Moolenaar | 69a7cb4 | 2004-06-20 12:51:53 +0000 | [diff] [blame] | 1877 | - Add "z>" and "z<": scroll sideways one screenful. (Campbell) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1878 | - Add option to set the number of lines when not to scroll, instead of the |
| 1879 | fixed number used now (for terminals that scroll slow with a large number |
| 1880 | of lines but not with a single line). |
| 1881 | |
| 1882 | |
| 1883 | Autoconf: |
| 1884 | 8 Should use acconfig.h to define prototypes that are used by autoheader. |
| 1885 | 8 Some compilers don't give an error for "-OPT:Olimit" but a warning. (Webb) |
| 1886 | Add a check for the warning, so that "Olimit" can be added automatically? |
| 1887 | - Autoconf: Use @datadir@ for the system independent files. Make sure the |
| 1888 | system dependent and system independent files are separated. (Leitner). |
| 1889 | - Add autoconf check for waitpid()/wait4(). |
| 1890 | - Remove fcntl() from autoconf, all systems have it? |
| 1891 | - Set default for 'dictionary', add search for dictionary to autoconf. |
| 1892 | |
| 1893 | |
| 1894 | Perl interface: |
| 1895 | 8 Rename typemap file to something else? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1896 | 7 Make buffers accessed as Perl arrays. (Clark) |
| 1897 | 7 Make it possible to compile with non-ANSI C? |
| 1898 | 6 Tcl/Tk has the "load" command: load a shared library (.so or .dll). |
| 1899 | |
| 1900 | |
| 1901 | Shared libraries: |
| 1902 | 6 Add support for loading shared libraries, and calling functions in it. |
| 1903 | :libload internal-name libname |
| 1904 | :libunload internal-name |
| 1905 | :liblist |
| 1906 | :libcall internal-name function(arg1, arg2, ...) |
| 1907 | :libcall function(arg1, arg2, ...) |
| 1908 | libcall() can have only one integer or String argument at the moment. |
| 1909 | 6 Have a look on how Perl handles loading dynamic libraries. |
| 1910 | |
| 1911 | |
| 1912 | Tags: |
| 1913 | 8 Add a command to jump to a certain kind of tag. Allow the user to specify |
| 1914 | values for the optional fields. E.g., ":tag size type=m". |
| 1915 | 8 Add a function that returns the line in the tags file for a matching tag. |
| 1916 | Can be used to extract more info (class name, inheritance, etc.) (Rico |
| 1917 | Hendriks) |
| 1918 | 7 Count before CTRL-]: jump to N'th match |
| 1919 | 8 Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis. |
| 1920 | 8 When output of ":tselect" is long, getting the more-prompt, should be able |
| 1921 | to type the tag number directly. |
| 1922 | 7 Add a tag-select window. Works like ":cwindow". (Michal Malecki) |
| 1923 | 7 Add the possibility to use the "-t {tag}" argument multiple times. Open a |
| 1924 | window for each tag. |
| 1925 | 7 Make output of ":tselect" a bit nicer. Use highlighting? |
| 1926 | 7 Highlight the "tag 1 of >2" message. New highlight group, or same as "hit |
| 1927 | bottom" search message. |
| 1928 | 7 When using ":tag" at the top of the tag stack, should add another entry, |
| 1929 | so CTRL-T can bring you back to where you are now AND to where you were |
| 1930 | before the previous ":tag" command. (Webb) |
| 1931 | 7 When using CTRL-] on someClass::someMethod, separate class from method and |
| 1932 | use ":ta class:someClass someMethod". |
| 1933 | Include C++ tags changes (Bertin). Change "class::func" tag into "func" |
| 1934 | with "class=class"? Docs in oldmail/bertin/in.xxx. |
| 1935 | 7 Add ":tagargs", to set values for fields: |
| 1936 | :tagargs class:someclass file:version.c |
| 1937 | :tagargs clear |
| 1938 | These are then the default values (changes the order of priority in tag |
| 1939 | matching). |
| 1940 | 7 Support for "gtags" and "global"? With ":rtag" command? |
| 1941 | There is an example for how to do this in Nvi. |
| 1942 | Or do it like Elvis: 'tagprg' and 'tagprgonce' options. (Yamaguchi) |
| 1943 | The Elvis method is far more flexible, do it that way. |
| 1944 | 7 Support "col:99" extra field, to position the cursor in that column. With |
| 1945 | a flag in 'cpoptions' to switch it off again. |
| 1946 | 7 Better support for jumping to where a function or variable is used. Use |
| 1947 | the id-utils, with a connection to "gid" (Emacs can do it too). Add |
| 1948 | ":idselect", which uses an "ID" database (made by "mkid") like "tselect". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1949 | |
| 1950 | |
| 1951 | Security: |
| 1952 | - nothing at the moment |
| 1953 | |
| 1954 | |
| 1955 | Win32 GUI: |
| 1956 | 8 Make debug mode work while starting up (vim -D). Open console window for |
| 1957 | the message and input? |
| 1958 | 7 The Python interface only works with one version of Python, selected at |
| 1959 | compile time. Can this be made to work with version 2.1 and 2.2 |
| 1960 | dynamically? |
| 1961 | 7 GvimExt: when there are several existing Vims, move the list to a submenu. |
| 1962 | (Mike McCollister) |
| 1963 | 8 When using "Edit with Vim" for one file it changes directory, when several |
| 1964 | files are selected and using "Edit with single Vim" the directory isn't |
| 1965 | changed. At least change directory when the path is the same for all |
| 1966 | files. Perhaps just use the path of the first file or use the longest |
| 1967 | common part of the path. |
| 1968 | 8 Add font argument to set the lfCharSet. (Bobcik) |
| 1969 | 8 Somehow automatically detect the system language and set $LANG, so that |
| 1970 | gettext and menus work. |
| 1971 | 8 Could keep console open to run multiple commands, to avoid the need to hit |
| 1972 | return in every console. |
| 1973 | Also: Look at how Emacs does runs external commands: |
| 1974 | http://www.cs.washington.edu/homes/voelker/ntemacs.html. |
| 1975 | 8 Need a separate PopUp menu for modeless selection. Need two new commands: |
| 1976 | Copy selection to clipboard, Paste selection (as typed text). |
| 1977 | 8 Support copy/paste for other file formats. At least HTML, perhaps RTF. |
| 1978 | Add "copy special" and "paste special" commands? |
| 1979 | 7 Use different default colors, to match the current Windows color scheme. |
| 1980 | Sys_WindowText, Sys_Window, etc. (Lionel Schaffhauser) |
| 1981 | 7 Use <C-Tab> to cycle through open windows (e.g., the find dialog). |
| 1982 | 7 <Esc> should close a dialog. |
| 1983 | 7 Keep the console for external commands open. Don't wait for a key to be |
| 1984 | hit. Re-open it when the user has closed it anyway. Or use a prepended |
| 1985 | command: ":nowait {cmd}", or ":quiet", which executes {cmd} without any |
| 1986 | prompts. |
| 1987 | 7 Should be able to set an option so that when you double click a file that |
| 1988 | is associated with Vim, you can either get a new instance of Vim, or have |
| 1989 | the file added into an already running Vim. |
| 1990 | 7 The "-P" argument only works for the current codepage. Use wide |
| 1991 | functions to find the window title. |
| 1992 | |
| 1993 | |
| 1994 | GUI: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1995 | 8 Make inputdialog() work for Photon, Amiga, RiscOS. |
| 1996 | - <C--> cannot be mapped. Should be possible to recognize this as a |
| 1997 | normal "-" with the Ctrl modifier. |
| 1998 | 7 Implement ":popup" for other systems than Windows. |
| 1999 | 8 Implement ":tearoff" for other systems than Win32 GUI. |
| 2000 | 6 Implement ":untearoff": hide a torn-off menu. |
| 2001 | 8 When using the scrollbar to scroll, don't move the cursor position. When |
| 2002 | moving the cursor: scroll to the cursor position. |
| 2003 | 9 Make <S-Insert> paste from the clipboard by default. (Kunze) |
| 2004 | 7 Menu local to a buffer, like mappings. Or local to a filetype? |
| 2005 | 8 In Buffers menu, add a choice whether selecting a buffer opens it in the |
| 2006 | current window, splits the window or uses ":hide". |
| 2007 | 8 Dragging the mouse pointer outside of a Vim Window should make the text |
| 2008 | scroll. Return a value from gui_send_mouse_event() to the machine |
| 2009 | specific code to indicate the time in which the event should be repeated. |
| 2010 | 8 Make it possible to ignore a mouse click when it's used to give Vim (gvim) |
| 2011 | window focus. Also when a mouse click is used to bring a window to front. |
| 2012 | 8 Make the split into system independent code and system specific code more |
| 2013 | explicit. There are too many #ifdefs in gui.c. |
| 2014 | If possible, separate the Vim code completely from the GUI code, to allow |
| 2015 | running them in separate processes. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2016 | 7 X11: Support cursorColor resource and "-cr" argument. |
| 2017 | 8 X11 (and others): CTRL-; is not different from ';'. Set the modifier mask |
| 2018 | to include CTRL for keys where CTRL produces the same ASCII code. |
| 2019 | 7 Add some code to handle proportional fonts? Need to draw each character |
| 2020 | separately (like xterm). Also for when a double-width font is not exactly |
| 2021 | double-width. (Maeda) |
| 2022 | 8 Should take font from xterm where gvim was started (if no other default). |
| 2023 | 8 Selecting font names in X11 is difficult, make a script or something to |
| 2024 | select one. Martin Dalecki has a font selector for Motif, but it needs a |
| 2025 | bit more work. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2026 | 8 Visual highlighting should keep the same font (bold, italic, etc.). |
| 2027 | 8 Add flag to 'guioptions' to not put anything in the clipboard at all? |
| 2028 | 8 Should support a way to use keys that we don't recognize yet. Add a |
| 2029 | command that adds entries to special_keys somehow. How do we make this |
| 2030 | portable (X11, Win32, ..)? |
| 2031 | 7 Add a flag to 'guioptions' that tells not to remove inactive menu items. |
| 2032 | For systems where greying-out or removing menu items is very slow. The |
| 2033 | menu items would remain visibly normally, but not do anything. |
| 2034 | 7 Add ":minimize" and ":maximize", which iconize the window and back. |
| 2035 | Useful when using gvim to run a script (e.g. 2html.vim). |
| 2036 | 7 X11: Is it possible to free allocated colors, so that other programs can |
| 2037 | use them again? Otherwise, allow disabling allocating the default colors. |
| 2038 | Or allocate an own colormap (check UAE). With an option to use it. For |
| 2039 | the commandline, "-install" is mostly used for X11 programs. |
| 2040 | 7 Add command line argument for "gvim" not to start the GUI. Sort of the |
| 2041 | inverse of "vim -g". (Vikas) |
| 2042 | 7 Should support multi-column menus. |
| 2043 | - Should add option for where to put the "Help" menu: like Motif at the far |
| 2044 | right, or with the other menus (but still at the right). |
| 2045 | - Add menu item to "Keep Insert mode". |
| 2046 | 8 ":mkgvimrc" command, that includes menus. |
| 2047 | 6 Big change: Move GUI to separate program "vimgui", to make startup of vim a |
| 2048 | lot faster, but still be able to do "vim -g" or ":gui". |
| 2049 | 7 More explicit mouse button binding instead of 'mousemodel'? |
| 2050 | 7 Add option to set the position of the window on the screen. 'windowpos', |
| 2051 | which has a value of "123,456": <x>,<y>. |
| 2052 | Or add a command, like ":winsize"? |
| 2053 | 7 Add toolbar for more GUIs. |
| 2054 | 8 Make it possible to use "amenu icon=BuiltIn##", so that the toolbar item |
| 2055 | name can be chosen free. |
| 2056 | 7 Make it possible to put the toolbar on top, left, right and/or bottom of |
| 2057 | the window? Allows for softkey-like use. |
| 2058 | 6 Separate the part of Vim that does the editing from the part that runs the |
| 2059 | GUI. Communicate through a pseudo-tty. Vim starts up, creates a |
| 2060 | pty that is connected to the terminal. When the GUI starts, the pty is |
| 2061 | reconnected to the GUI process. When the GUI stops, it is connected to |
| 2062 | the terminal again. Also use the pty for external processes, it looks |
| 2063 | like a vt100 terminal to them. Vim uses extra commands to communicate GUI |
| 2064 | things. |
| 2065 | 7 Motif: For a confirm() dialog <Enter> should be ignored when no default |
| 2066 | button selected, <Esc> should close the dialog. |
| 2067 | - Motif steals <F10> from us, to pop up menus with the keyboard. How do we |
Bram Moolenaar | 293ee4d | 2004-12-09 21:34:53 +0000 | [diff] [blame] | 2068 | get it back if we want it? It's already solved for GTK. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2069 | - Paste in Insert mode should not do autowrap etc. Or maybe this should be |
| 2070 | changeable with an option? |
| 2071 | - Put a nice picture in the icon (but how do we do that?). |
| 2072 | 7 When using a pseudo-tty Vim should behave like some terminal (vt52 looks |
| 2073 | simple enough). Terminal codes to/from shell should be translated. |
| 2074 | - Would it be useful to be able to quit the GUI and go back to the terminal |
| 2075 | where it was started from? |
| 2076 | 7 Support "-visual <type>" command line argument. |
| 2077 | |
| 2078 | |
| 2079 | VMS: |
| 2080 | - Improvement: rewrite term/TTY handling. |
| 2081 | - Improvement: create VMS GTK runtime libraries on OpenVMS 7.1-2 (today GTK |
| 2082 | works just on 7.3). |
| 2083 | |
| 2084 | |
| 2085 | Autocommands: |
| 2086 | 9 Make sure that side effects of autocommands are handled correctly. Don't |
| 2087 | execute autocommands when a buffer or window is halfway some changes. |
| 2088 | Move all apply_autocmds() calls to a higher level where needed. |
| 2089 | 8 Add ScriptReadCmd event: used to load remote Vim scripts, e.g. |
| 2090 | "vim -u http://mach/path/vimrc". |
| 2091 | 8 Use another option than 'updatetime' for the CursorHold event. The two |
| 2092 | things are unrelated for the user (but the implementation is more |
| 2093 | difficult). |
| 2094 | 8 Also trigger CursorHold in Insert mode? |
| 2095 | 7 Add autocommand event for when a buffer cannot be abandoned. So that user |
| 2096 | can define the action taking (autowrite, dialog, fail) based on the kind |
| 2097 | of file. (Yakov Lerner) Or is BufLeave sufficient? |
| 2098 | 8 Can't use ":normal" in CursorHold autocommands. Make the CursorHold event |
| 2099 | insert a special key code, and call the autocommand functions from a |
| 2100 | higher level, so that vgetc() isn't used recursively. |
| 2101 | 8 Autocommands should not change registers. And marks? And the jumplist? |
| 2102 | And anything else? |
| 2103 | 8 Autocommand for when modified files have been found, when getting input |
| 2104 | focus again (e.g., FileChangedFocus). |
| 2105 | Check when: getting focus, jumping to another buffer, ... |
| 2106 | 8 Add autocommands, user functions and user commands to ":mkvimrc". |
| 2107 | 8 Add "TagJumpFile" autocommand: When jumping to another file for a tag. |
| 2108 | Can be used to open "main.c.gz" when "main.c" isn't found. |
| 2109 | 6 Add KeymapChanged event, so that the effects of a different keymap can be |
| 2110 | handled (e.g., other font) (Ron Aaron) |
| 2111 | 7 Add a way to skip an autocommand if going from one *.c file to another *.c |
| 2112 | file. |
| 2113 | 7 When trying to open a directory, don't load the file but trigger an |
| 2114 | autocommand event OpenDirectory. |
| 2115 | 7 Add file type in front of file pattern: <d> for directory, <l> for link, |
| 2116 | <x> for executable, etc. <&xxx> for Risc OS. With commas to separate |
| 2117 | alternatives. The autocommand is only executed when both the file type |
| 2118 | AND the file pattern match. (Leonard) |
| 2119 | 5 Add option that specifies extensions which are to be discarded from the |
| 2120 | file name. E.g. 'ausuffix', with ".gz,.orig". Such that file.c.gz will |
| 2121 | trigger the "*.c" autocommands. (Belabas) |
| 2122 | 7 Add something to break the autocommands for the current event, and for |
| 2123 | what follows. Useful for a "BufWritePre" that wants to avoid writing the |
| 2124 | file. |
| 2125 | 8 When editing "tt.gz", which is in DOS format, 'fileformat' stays at |
| 2126 | "unix", thus writing the file changes it. Somehow detect that the read |
| 2127 | command used dos fileformat. Same for 'fileencoding'. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2128 | - Add events to autocommands: |
| 2129 | Error - When an error happens |
| 2130 | NormalEnter - Entering Normal mode |
| 2131 | InsertEnter - Entering Insert mode |
| 2132 | ReplaceEnter - Entering Replace mode |
| 2133 | CmdEnter - Entering Cmdline mode |
| 2134 | VisualEnter - Entering Visual mode |
Bram Moolenaar | 843ee41 | 2004-06-30 16:16:41 +0000 | [diff] [blame] | 2135 | *Leave - Leaving a mode (in pair with the above *Enter) |
Bram Moolenaar | 21cf823 | 2004-07-16 20:18:37 +0000 | [diff] [blame] | 2136 | VimLeaveCheck - Before Vim decides to exit, so that it can be cancelled |
| 2137 | when exiting isn't a good idea. |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 2138 | WinMoved - when windows have been moved around, e.g, ":wincmd J" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2139 | CmdUndefined - Like FuncUndefined but for user commands. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2140 | SearchPost - After doing a search command (e.g. to do "M") |
| 2141 | PreDirChanged/PostDirChanged |
| 2142 | - Before/after ":cd" has been used (for changing the |
| 2143 | window title) |
| 2144 | BufReadAction - replaces reading a file |
| 2145 | BufWriteAction - replaces writing a file |
| 2146 | ShutDown - when the system is about to shut down |
| 2147 | InsertCharPre - user typed character Insert mode, before inserting the |
| 2148 | char. Pattern is matched with text before the cursor. |
| 2149 | Set v:char to the character, can be changed. |
| 2150 | (not triggered when 'paste' is set). |
| 2151 | InsertCharPost - user typed a character in Insert mode, after inserting |
| 2152 | the char. |
| 2153 | BufModified - When a buffer becomes modified, or unmodified (for |
| 2154 | putting a [+] in the window title or checking out the |
| 2155 | file from CVS). |
| 2156 | BufFirstChange - When making a change, when 'modified' is set. Can be |
| 2157 | used to do a :preserve for remote files. |
| 2158 | BufChange - after a change was made. Set some variables to indicate |
| 2159 | the position and number of inserted/deleted lines, so |
| 2160 | that marks can be updated. HierAssist has patch to add |
| 2161 | BufChangePre, BufChangePost and RevertBuf. (Shah) |
| 2162 | WinResized - When a window has been resized |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2163 | - Add autocommand to be executed every so many seconds? For writing the |
| 2164 | file now and then ('autosave'). |
| 2165 | *'autosave'* *'as'* *'noautosave'* *'noas'* |
| 2166 | 'autosave' 'aw' number (default 0) |
| 2167 | Automatically write the current buffer to file N seconds after the |
| 2168 | last change has been made and when |'modified'| is still set. |
| 2169 | Default: 0 = do not autosave the buffer. |
| 2170 | Alternative: have 'autosave' use 'updatetime' and 'updatecount' but make |
| 2171 | them save the file itself besides the swapfile. |
| 2172 | |
| 2173 | |
| 2174 | Insert mode completion/expansion: |
| 2175 | 8 When there is no word before the cursor but something like "sys." complete |
| 2176 | with "sys.". Works well for C and similar languages. |
| 2177 | 9 ^X^L completion doesn't repeat correctly. It uses the first match with |
| 2178 | the last added line, instead of continuing where the last match ended. |
| 2179 | (Webb) |
| 2180 | 8 The code has become too complex. Redesign it, or at least add proper |
| 2181 | comments. |
| 2182 | 8 Add option to set different behavior for Insert mode completion: |
| 2183 | - ignore/match case |
| 2184 | - different characters than 'iskeyword' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2185 | 8 Add a command to undo the completion, go back to the original text. |
| 2186 | 8 Use the class information in the tags file to do context-sensitive |
| 2187 | completion. After "foo." complete all member functions/variables of |
| 2188 | "foo". Need to search backwards for the class definition of foo. |
| 2189 | Should work for C++ and Java. |
| 2190 | Even more context would be nice: "import java.^N" -> "io", "lang", etc. |
| 2191 | 7 When expanding $HOME/dir with ^X^F keep the $HOME (with an option?). |
| 2192 | 7 Add CTRL-X command in Insert mode like CTRL-X CTRL-N, that completes WORDS |
| 2193 | instead of words. |
| 2194 | 8 Add CTRL-X CTRL-R: complete words from register contents. |
| 2195 | 8 Add completion of previously inserted texts (like what CTRL-A does). |
| 2196 | Requires remembering a number of insertions. |
| 2197 | 8 Add 'f' flag to 'complete': Expand file names. |
| 2198 | Also apply 'complete' to whole line completion. |
| 2199 | - Make it possible to search include files in several places. Use the |
| 2200 | 'path' option? Can this be done with the dictionary completion (use |
| 2201 | wildcards in the file name)? |
| 2202 | - Make CTRL-X CTRL-K do a binary search in the dictionary (if it's sorted). |
| 2203 | - Speed up CTRL-X CTRL-K dictionary searching (don't use a regexp?). |
| 2204 | - Set a mark at the position where the match was found (file mark, could |
| 2205 | be in another file). |
| 2206 | - Add CTRL-A command in CTRL-X mode: show all matches. |
| 2207 | - Make CTRL-X CTRL-L use the 'complete' option? |
| 2208 | - Add command in CTRL-X mode to add following words to the completed string |
| 2209 | (e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W) |
| 2210 | - CTRL-X CTRL-F: Use 'path' to find completions. |
| 2211 | - CTRL-X CTRL-F: Option to use forward slashes on MS-Windows? |
| 2212 | - CTRL-X CTRL-F: Don't replace "$VIM" with the actual value. (Kelly) |
| 2213 | 8 Add option 'isexpand', containing characters when doing expansion (so that |
| 2214 | "." and "\" can be included, without changing 'iskeyword'). (Goldfarb) |
| 2215 | Also: 'istagword': characters used for CTRL-]. |
| 2216 | When 'isexpand' or 'istagword' are empty, use 'iskeyword'. |
| 2217 | - Allow listing all matches in some way (and picking one from the list). |
| 2218 | |
| 2219 | |
| 2220 | Command line editing: |
| 2221 | 7 Add commands (keys) to delete from the cursor to the end of the command |
| 2222 | line. |
| 2223 | 8 Custom completion of user commands can't use the standard completion |
| 2224 | functions. Add a hook to invoke a user function that returns the type of |
| 2225 | completion to be done: "file", "tag", "custom", etc. |
| 2226 | - Add flags to 'whichwrap' for command line editing (cursor right at end of |
| 2227 | lines wraps to start of line). |
| 2228 | - Make editing the command line work like Insert mode in a single-line view |
| 2229 | on a buffer that contains the command line history. But this has many |
| 2230 | disadvantages, only implement it when these can be solved. Elvis has run |
| 2231 | into these, see remarks from Steve (~/Mail/oldmail/kirkendall/in.00012). |
| 2232 | - Going back in history and editing a line there would change the history. |
| 2233 | Would still need to keep a copy of the history elsewhere. Like the |
| 2234 | cmdwin does now already. |
| 2235 | - Use CTRL-O to execute one Normal mode command. How to switch to normal |
| 2236 | mode for more commands? <Esc> should cancel the command line. CTRL-T? |
| 2237 | - To allow "/" and "= need to recursively call getcmdline(), overwrite the |
| 2238 | cmdline. But then we are editing a command-line again. How to avoid |
| 2239 | that the user gets confused by the stack of command lines? |
| 2240 | - Use edit() for normal cmdline editing? Would have to integrate |
| 2241 | getcmdline() into edit(). Need to solve conflicts between Insert mode |
| 2242 | and Command-line mode commands. Make it work like Korn shell and tcsh. |
| 2243 | Problems: |
| 2244 | - Insert: completion with 'wildchar' |
| 2245 | - Insert: use cmdline abbreviations |
| 2246 | - Insert: CTRL-D deletes indent instead of listing matches |
| 2247 | - Normal: no CTRL-W commands |
| 2248 | - Normal: no ":" commands? |
| 2249 | - Normal: allow Visual mode only within one line. |
| 2250 | - where to show insert/normal mode message? Change highlighting of |
| 2251 | character in first column? |
| 2252 | - Implementation ideas: |
| 2253 | - Set "curwin" and "curbuf" to the command line window and buffer. |
| 2254 | - curwin->w_topline is always equal to curwin->w_cursor.lnum. |
| 2255 | - never set 'number', no folding, etc. No status line. |
| 2256 | - sync undo after entering a command line? |
| 2257 | - use NV_NOCL flag for commands that are not allowed in Command-line |
| 2258 | Mode. |
| 2259 | |
| 2260 | |
| 2261 | Command line completion: |
| 2262 | 8 Change expand_interactively into a flag that is passed as an argument. |
| 2263 | 8 With command line completion after '%' and '#', expand current/alternate |
| 2264 | file name, so it can be edited. Also with modifiers, such as "%:h". |
| 2265 | 8 When completing command names, either sort them on the long name, or list |
| 2266 | them with the optional part inside []. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2267 | 7 Completion of ":map x ": fill in the current mapping, so that it can be |
| 2268 | edited. (Sven Guckes) |
| 2269 | 7 Add completion for when entering an expression after CTRL-R= and "=. |
| 2270 | (Servatius Brandt) |
| 2271 | - For 'wildmenu': Simplify "../bar" when possible. |
| 2272 | - When using <Up> in wildmenu mode for a submenu, should go back to the |
| 2273 | current menu, not the first one. E.g., ":emenu File.Save<Up>". |
| 2274 | 8 For ":find" and ":sfind" expand files found in 'path'. |
| 2275 | 8 Add cmdline completion for the ":debug" command. |
| 2276 | 8 When using backtick expansion, the external command may write a greeting |
| 2277 | message. Add an option or commands to remove lines that match a regexp? |
| 2278 | 7 When listing matches of files, display the common path separately from the |
| 2279 | file names, if this makes the listing shorter. (Webb) |
| 2280 | - Add command line completion for ":ilist" and friends, show matching |
| 2281 | identifiers (Webb). |
| 2282 | 8 Add command line completion for "old value" of a command. ":args <key>" |
| 2283 | would result in the current list of arguments, which you can then edit. |
| 2284 | 7 Add command line completion with CTRL-X, just like Insert mode completion. |
| 2285 | Useful for ":s/word/xx/". |
| 2286 | - Add command to go back to the text as it was before completion started. |
| 2287 | Also to be used for <Up> in the command line. |
| 2288 | - Add 'wildlongest' option: Key to use to find longest common match for |
| 2289 | command line completion (default CTRL-L), like 'wildchar'. (Cregut) |
| 2290 | Also: when there are several matches, show them line a CTRL-D. |
| 2291 | - Add completion for Environment variables: ":echo $SH<Tab>" -> "$SHELL". |
| 2292 | |
| 2293 | |
| 2294 | Command line history: |
| 2295 | - Add "KeyWasTyped" flag: It's reset before each command and set when a |
| 2296 | character from the keyboard is consumed. Value is used to decide to put a |
| 2297 | command line in history or not. Put line in history if it didn't |
| 2298 | completely resulted from one mapping. |
| 2299 | - When using ":browse", also put the resulting edit command in the history, |
| 2300 | so that it can be repeated. (Demirel) |
| 2301 | |
| 2302 | |
| 2303 | Insert mode: |
Bram Moolenaar | f4b8e57 | 2004-06-24 15:53:16 +0000 | [diff] [blame] | 2304 | 9 When 'autoindent' is set, hitting <CR> twice, while there is text after |
| 2305 | the cursor, doesn't delete the autoindent in the resulting blank line. |
| 2306 | (Rich Wales) This is Vi compatible, but it looks like a bug. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2307 | 8 When using CTRL-O in Insert mode, then executing an insert command |
| 2308 | "a" or "i", should we return to Insert mode after <Esc>? (Eggink) |
| 2309 | Perhaps it can be allowed a single time, to be able to do |
| 2310 | "<C-O>10axyz<Esc>". Nesting this further is confusing. |
| 2311 | ":map <F2> 5aabc<Esc>" works only once from Insert mode. |
| 2312 | 7 Use CTRL-G <count> to repeat what follows. Useful for inserting a |
| 2313 | character multiple times or repeating CTRL-Y. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2314 | 7 Use 'matchpairs' for 'showmatch': When inserting a character check if it |
| 2315 | appears in the rhs of 'matchpairs'. |
| 2316 | - In Insert mode (and command line editing?): Allow undo of the last typed |
| 2317 | character. This is useful for CTRL-U, CTRL-W, delete and backspace, and |
| 2318 | also for characters that wrap to the next line. |
| 2319 | Also: be able to undo CTRL-R (insert register). |
| 2320 | Possibly use 'backspace'="whole" for a mode where at least a <CR> that |
| 2321 | inserts autoindent is undone by a single <BS>. |
| 2322 | - Use CTRL-G in Insert mode for an extra range of commands, like "g" in |
| 2323 | Normal mode. |
| 2324 | - Make 'paste' work without resetting other options, but override their |
| 2325 | value. Avoids problems when changing files and modelines or autocommands |
| 2326 | are used. |
| 2327 | - When typing CTRL-V and a digit higher than 2, only expect two digits. |
| 2328 | - Insert binary numbers with CTRL-V b. |
| 2329 | - Make it possible to undo <BS>, <C-W> and <C-U>. Bash uses CTRL-Y. |
| 2330 | |
| 2331 | |
| 2332 | 'cindent', 'smartindent': |
| 2333 | 8 Wrong indent for ":" after a method with line break in arguments: |
| 2334 | Foo::Foo (int one, |
| 2335 | int two) |
| 2336 | : something(4) |
| 2337 | {} |
| 2338 | 8 Wrong indent for ":" after a method with multiple lines: |
| 2339 | Foo::Foo (int one, int two) |
| 2340 | : something(4), |
| 2341 | somethingelse(3) |
| 2342 | {} |
| 2343 | 9 Too much indent for "lulu": (Uwe Zeisberger) |
| 2344 | int main () |
| 2345 | { |
| 2346 | if (lala) |
| 2347 | do |
| 2348 | ++(*lolo); |
| 2349 | while (lili |
| 2350 | && lele); |
| 2351 | lulu; |
| 2352 | } |
| 2353 | 9 Function gets extra indent: (Jamax) |
| 2354 | void function(int param) { |
| 2355 | if (false) |
| 2356 | return; |
| 2357 | } |
| 2358 | 9 brace not indented correctly: |
| 2359 | case 'c': if (cond) |
| 2360 | { |
| 2361 | Should align with "if" in case statement. |
| 2362 | 7 Allow aligning a closing ")" with the line above, instead of the matching |
| 2363 | "(": (Riehm) if (asdfasdf && |
| 2364 | asdf |
| 2365 | ) |
| 2366 | 8 Java: Inside an anonymous class, after an "else" or "try" the indent is |
| 2367 | too small. (Vincent Bergbauer) |
| 2368 | 8 In C++ it's possible to have {} inside (): (Kirshna) |
| 2369 | func( |
| 2370 | new String[] { |
| 2371 | "asdf", |
| 2372 | "asdf" |
| 2373 | } |
| 2374 | ); |
| 2375 | 7 Separate "(0" option into inside/outside a function (Zellner): |
| 2376 | func( |
| 2377 | int x) // indent like "(4" |
| 2378 | { |
| 2379 | if (a |
| 2380 | && b) // indent like "(0" |
| 2381 | 8 Strange problem with this code, "hello" is indented wrong: (Gary Holloway) |
| 2382 | main() { char foo[] = "/*"; |
| 2383 | /* This is a comment; the indentation of C |
| 2384 | * source below this comment gets messed up due to the string above. |
| 2385 | */ |
| 2386 | hello |
| 2387 | 9 Using "{" in a comment: (Helmut Stiegler) |
| 2388 | if (a) |
| 2389 | { |
| 2390 | if (b) |
| 2391 | { |
| 2392 | // { |
| 2393 | } |
| 2394 | } <-- this is indented incorrect |
| 2395 | 9 Wrong indent for cino=(4, removing the (void) fixes it: (Zellner) |
| 2396 | (void) MyFancyFunction( |
| 2397 | argument); |
| 2398 | - Make smartindenting configurable. Add 'sioptions', e.g. '#' setting the |
| 2399 | indent to 0 should be switched on/off. |
| 2400 | 7 Support ANSI style function header, with each argument on its own line. |
| 2401 | - "[p" and "]p" should use 'cindent' code if it's on (only for the first |
| 2402 | line). |
| 2403 | - Add option to 'cindent' to set indent for comments outside of {}? |
| 2404 | - Make a command to line up a comment after a code line with a previous |
| 2405 | comment after a code line. Can 'cindent' do this automatically? |
| 2406 | 7 Add 'j' flag to 'formatoptions': Remove comment leader when joining lines. |
| 2407 | - When 'cindent'ing a '}', showmatch is done before fixing the indent. It |
| 2408 | looks better when the indent is fixed before the showmatch. (Webb) |
| 2409 | - Add option to make indenting work in comments too (for commented-out |
| 2410 | code), unless the line starts with "*". |
| 2411 | - Don't use 'cindent' when doing formatting with "gq"? |
| 2412 | - When formatting a comment after some text, insert the '*' for the new line |
| 2413 | (indent is correct if 'cindent' is set, but '*' doesn't get inserted). |
| 2414 | 8 When 'comments' has both "s1:/*,mb:*,ex:*/" and "s1:(*,mb:*,ex:*)", the |
| 2415 | 'x' flag always uses the first match. Need to continue looking for more |
| 2416 | matches of "*" and remember all characters that could end the comment. |
| 2417 | - For smartindent: When typing 'else' line it up with matching 'if'. |
| 2418 | - 'smartindent': allow patterns in 'cinwords', for e.g. TeX files, where |
| 2419 | lines start with "\item". |
| 2420 | - Support this style of comments (with an option): (Brown) |
| 2421 | /* here is a comment that |
| 2422 | is just autoindented, and |
| 2423 | nothing else */ |
| 2424 | - Add words to 'cinwords' to reduce the indent, e.g., "end" or "fi". |
| 2425 | 7 Use Tabs for the indent of starting lines, pad with spaces for |
| 2426 | continuation lines. Allows changing 'tabstop' without messing up the |
| 2427 | indents. |
| 2428 | And/or: Add option to copy indent as-is, without changing spaces to tabs. |
| 2429 | also for 'autoindent'. 'keeptabs': when set don't change the tabs and |
| 2430 | spaces used for indent, when the indent remains the same or increases. |
| 2431 | |
| 2432 | |
| 2433 | Java: |
| 2434 | 8 Can have {} constructs inside parens. Include changes from Steve |
| 2435 | Odendahl? |
| 2436 | 8 Recognize "import java.util.Vector" and use $CLASSPATH to find files for |
| 2437 | "[i" commands and friends. |
| 2438 | - For files found with 'include': handle "*" in included name, for Java. |
| 2439 | (Jason) |
| 2440 | - How to make a "package java.util" cause all classes in the package to be |
| 2441 | searched? Also for "import java.util.*". (Mark Brophy) |
| 2442 | |
| 2443 | |
| 2444 | 'comments': |
| 2445 | 8 When formatting C comments that are after code, the "*" isn't repeated |
| 2446 | like it's done when there is no code. And there is no automatic wrapping. |
| 2447 | Recognize comments that come after code. Should insert the comment leader |
| 2448 | when it's "#" or "//". |
| 2449 | 7 When using "comments=fg:--", Vim inserts three spaces for a new line. |
| 2450 | When hitting a TAB, these spaces could be removed. |
| 2451 | 7 The 'n'esting flag doesn't do the indenting of the last (rightmost) item. |
| 2452 | 6 Make strings in 'comments' option a RE, to be able to match more |
| 2453 | complicated things. (Phillipps) Use a special flag to indicate that a |
| 2454 | regexp is used. |
| 2455 | 8 Make the 'comments' option with "/* * */" lines only repeat the "*" line |
| 2456 | when there is a "/*" before it? Or include this in 'cindent'? |
| 2457 | |
| 2458 | |
| 2459 | Virtual edit: |
| 2460 | 8 Make the horizontal scrollbar work to move the text further left. |
| 2461 | 7 Add a mode where the cursor is only allowed to go one character after the |
| 2462 | end of the line? |
| 2463 | 7 Allow specifying it separately for Tabs and beyond end-of-line? |
| 2464 | |
| 2465 | |
| 2466 | Text objects: |
| 2467 | 8 Add test script for text object commands "aw", "iW", etc. |
| 2468 | 7 Add text object for current search pattern: "a/" and "i/". Makes it |
| 2469 | possible to turn text highlighted for 'hlsearch' into a Visual area. |
| 2470 | 8 Add "gp" and "gP" commands: insert text and make sure there is a single |
| 2471 | space before it, unless at the start of the line, and after it, unless at |
| 2472 | the end of the line or before a ".". |
| 2473 | 7 Add objects with backwards extension? Use "I" and "A". Thus "2dAs" |
| 2474 | deletes the current and previous sentence. (Jens Paulus) |
| 2475 | 7 Add "g{" and "g}" to move to the first/last character of a paragraph |
| 2476 | (instead of the line just before/after a paragraph as with "{" and "}"). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2477 | 6 Ignore comment leaders for objects. Make "das" work in reply-email. |
| 2478 | 5 Make it possible to use syntax group matches as a text object. For |
| 2479 | example, define a "ccItem" group, then do "da<ccItem>" to delete one. |
| 2480 | Or, maybe just define "dai", delete-an-item, to delete the syntax item the |
| 2481 | cursor is on. |
| 2482 | |
| 2483 | |
| 2484 | Select mode: |
| 2485 | 8 In blockwise mode, typed characters are inserted in front of the block, |
| 2486 | backspace deletes a column before the block. (Steve Hall) |
| 2487 | 7 Alt-leftmouse starts block mode selection in MS Word. |
| 2488 | See http://www.vim.org/tips/tip.php?tip_id=743 |
| 2489 | 7 Add Cmdline-select mode. Like Select mode, but used on the command line. |
| 2490 | - Change gui_send_mouse_event() to pass on mouse events when 'mouse' |
| 2491 | contains 'C' or 'A'. |
| 2492 | - Catch mouse events in ex_getln.c. Also shift-cursor, etc., like in |
| 2493 | normal_cmd(). |
| 2494 | - remember start and end of selection in cmdline_info. |
| 2495 | - Typing text replaces the selection. |
| 2496 | |
| 2497 | |
| 2498 | Visual mode: |
| 2499 | - When dragging the Visual selection with the mouse and 'scrolloff' is zero, |
| 2500 | behave like 'scrolloff' is one, so that the text scrolls when the pointer |
| 2501 | is in the top line. |
| 2502 | 8 When using "I" or "A" in Visual block mode, short lines do not get the new |
| 2503 | text. make it possible to add the text to short lines too, with padding |
| 2504 | where needed. |
| 2505 | 7 With a Visual block selected, "2x" deletes a block of double the width, |
| 2506 | "3y" yanks a block of triple width, etc. |
| 2507 | 7 When selecting linewise, using "itext" should insert "text" at the start |
| 2508 | of each selected line. |
| 2509 | 8 What is "R" supposed to do in Visual mode? |
| 2510 | 8 Make Visual mode local to the buffer. Allow changing to another buffer. |
| 2511 | When starting a new Visual selection, remove the Visual selection in any |
| 2512 | other buffer. (Ron Aaron) |
| 2513 | 8 Support dragging the Visual area to drop it somewhere else. (Ron Aaron, |
| 2514 | Ben Godfrey) |
| 2515 | 7 Support dragging the Visual area to drop it in another program, and |
| 2516 | receive dropped text from another program. (Ben Godfrey) |
| 2517 | 7 With blockwise Visual mode and "c", "C", "I", "A", etc., allow the use of |
| 2518 | a <CR>. The entered lines are repeated over the Visual area. |
| 2519 | 7 CTRL-V :s should substitute only in the block, not to whole lines. (David |
| 2520 | Young is working on this) |
| 2521 | 7 Filtering a block should only apply to the block, not to the whole lines. |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 2522 | When the number of lines is increased, add lines. When decreased, pad with |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2523 | spaces or delete? Use ":`<,`>" on the command line. |
| 2524 | 8 After filtering the Visual area, make "gv" select the filtered text? |
| 2525 | Currently "gv" only selects a single line, not useful. |
| 2526 | 7 Don't move the cursor when scrolling? Needed when the selection should |
| 2527 | stay the same. Scroll to the cursor at any movement command. With an |
| 2528 | option! |
| 2529 | 7 In Visual block mode, need to be able to define a corner on a position |
| 2530 | that doesn't have text? Also: when using the mouse, be able to select |
| 2531 | part of a TAB. Even more: Add a mode where the cursor can be on a screen |
| 2532 | position where there is no text. When typing, add spaces to fill the gap. |
| 2533 | Other solution: Always use curswant, so that you can move the cursor to |
| 2534 | the right column, and then use up/down movements to select the line, |
| 2535 | without changing the column. |
| 2536 | 6 ":left" and ":right" should work in Visual block mode. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2537 | 7 CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the |
| 2538 | current buffer. |
| 2539 | 7 CTRL-A and CTRL-X should increase/decrease all numbers in the Visual area. |
| 2540 | 6 In non-Block mode, "I" should insert the same text in front of each line, |
| 2541 | before the first non-blank, "gI" in column 1. |
| 2542 | 6 In non-Block mode, "A" should append the same text after each line. |
| 2543 | 6 ":'<,'>source" should read the selected lines and ":source" them. |
| 2544 | 6 When in blockwise visual selection (CTRL-V), allow cursor to be placed |
| 2545 | right of the line. Could also allow cursor to be placed anywhere on a TAB |
| 2546 | or other special character. |
| 2547 | 6 Add commands to move selected text, without deselecting. |
| 2548 | |
| 2549 | |
| 2550 | More advanced repeating commands: |
| 2551 | - Add "." command for visual mode: redo last visual command (e.g. ":fmt"). |
| 2552 | 7 Repeating "d:{cmd}" with "." doesn't work. (Benji Fisher) Somehow remember |
| 2553 | the command line so that it can be repeated? |
| 2554 | - Add "." command after operator: repeat last command of same operator. E.g. |
| 2555 | "c." will repeat last change, also when "x" used since then (Webb). |
| 2556 | "y." will repeat last yank. |
| 2557 | "c2." will repeat the last but one change? |
| 2558 | Also: keep history of Normal mode commands, add command to list the history |
| 2559 | and/or pick an older command. |
| 2560 | - History stack for . command? Use "g." command. |
| 2561 | |
| 2562 | |
| 2563 | Mappings and Abbreviations: |
| 2564 | 8 Let ":verbose map xx" report where the mapping was set, just like with |
| 2565 | ":verbose set". |
| 2566 | 8 When "0" is mapped (it is a movement command) this mapping should not be |
| 2567 | used after typing another number, e.g. "20l". (Charles Campbell) |
| 2568 | Is this possible without disabling the mapping of the following command? |
| 2569 | 8 Should mapping <C-A> and <C-S-A> both work? |
| 2570 | 7 ":abbr b byte", append "b " to an existing word still expands to "byte". |
| 2571 | This is Vi compatible, but can we avoid it anyway? |
| 2572 | 8 ":verbose map" could show the script where the mapping was defined. |
| 2573 | m_script_ID can be used. |
| 2574 | 8 To make a mapping work with a prepended "x to select a register, store the |
| 2575 | last _typed_ register name and access it with "&. |
| 2576 | 8 Add ":amap", like ":amenu". |
| 2577 | 8 Add ":cab!", abbreviations that only apply to Command-line mode and not to |
| 2578 | entering search strings. |
| 2579 | 8 Add a flag to ":abbrev" to eat the character that triggers the |
| 2580 | abbreviation. Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and |
| 2581 | not the <Space>. |
| 2582 | 8 Allow mapping of CTRL-@ (anywhere in the LHS). |
| 2583 | 8 Give a warning when using CTRL-C in the lhs of a mapping. It will never |
| 2584 | (?) work. |
| 2585 | 7 ":verbose map" should display where a mapping was defined, like ":verbose |
| 2586 | set". |
| 2587 | 8 Add a way to save a current mapping and restore it later. Use a function |
| 2588 | that returns the mapping command to restore it: mapcmd()? mapcheck() is |
| 2589 | not fool proof. How to handle ambiguous mappings? |
| 2590 | 7 Add <0x8f> (hex), <033> (octal) and <123> (decimal) to <> notation? |
| 2591 | 7 Allow mapping "Q" and "Q}" at the same time. Need to put a flag with "Q", |
| 2592 | that it needs an extra character before it can match. See Vile 'maplonger' |
| 2593 | option. |
| 2594 | 7 When someone tries to unmap with a trailing space, and it fails, try |
| 2595 | unmapping without the trailing space. Helps for ":unmap xx | unmap yy". |
| 2596 | 7 Make it possible to map 'wildchar', but only when it's a special character |
| 2597 | (like CTRL-E). Currently it's only recognized when typed. Useful for |
| 2598 | mapping a key to do something and then completion. |
| 2599 | 7 Add a mapping that works always, for remapping the keyboard. |
| 2600 | 6 Context-sensitive abbreviations: Specify syntax group(s) in which the |
| 2601 | abbreviations are to be used. |
| 2602 | - Add mappings that take arguments. Could work like the ":s" command. For |
| 2603 | example, for a mouse escape sequence: |
| 2604 | :mapexp <Esc>{\([0-9]*\),\([0-9]*\); H\1j\2l |
| 2605 | - Make it possible to include a <Nul> in the lhs and rhs of a mapping. |
| 2606 | - Add command to repeat a whole mapping ("." only repeats the last change in |
| 2607 | a mapping). Also: Repeat a whole insert command, including any mappings |
| 2608 | that it included. Sort-of automatic recording? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2609 | - Add an option to ":map" that makes it display the special keys in |
| 2610 | <> notation (e.g. <CR> instead of ^M). Or just always do this? |
| 2611 | - Include an option (or flag to 'cpoptions') that makes errors in mappings |
| 2612 | not flush the rest of the mapping (like nvi does). |
| 2613 | - Use context sensitiveness of completion to switch abbreviations and |
| 2614 | mappings off for :unab and :unmap. |
| 2615 | 6 When using mappings in Insert mode, insert characters for incomplete |
| 2616 | mappings first, then remove them again when a mapping matches. Avoids |
| 2617 | that characters that are the start of some mapping are not shown until you |
| 2618 | hit another character. |
| 2619 | - Add optional <Number> argument for mappings: |
| 2620 | :map <Number>q ^W^W<Number>G |
| 2621 | :map <Number>q<Number>t ^W^W<Number1-1>G<Number2>l |
| 2622 | :map q<Char> :s/<Char>/\u\0/g |
| 2623 | Or implicit: |
| 2624 | :map q <Register>d<Number>$ |
| 2625 | - Add mappings for replace mode: ":rmap". How do we then enter mappings for |
| 2626 | non-replace Insert mode? |
| 2627 | - Add separate mappings for Visual-character/block/line mode? |
| 2628 | 6 Alias for Normal mode commands, works like :substitute? Would allow |
| 2629 | mappings with arguments. |
| 2630 | - Add 'mapstop' command, to stop recursive mappings. |
| 2631 | - List mappings that have a raw escape sequence both with the name of the key |
| 2632 | for that escape sequence (if there is one) and the sequence itself. |
| 2633 | - List mappings: Once with special keys listed as <>, once with meta chars as |
| 2634 | <M-a>, once with the byte values (octal?). Sort of "spell mapping" command? |
| 2635 | - When entering mappings: Add the possibility to enter meta keys like they |
| 2636 | are displayed, within <>: <M-a>, <~@> or <|a>. |
| 2637 | - Allow multiple arguments to :unmap. |
| 2638 | - Command to show keys that are not used and available for mapping |
| 2639 | ":freekeys". |
| 2640 | - Allow any character except white space in abbreviations lhs (Riehm). |
| 2641 | |
| 2642 | |
| 2643 | Incsearch: |
| 2644 | - Add a limit to the number of lines that are searched for 'incsearch'? |
| 2645 | - When no match is found and the user types more, the screen is redrawn |
| 2646 | anyway. Could skip that. Esp. if the line wraps and the text is scrolled |
| 2647 | up every time. |
| 2648 | - Temporarily open folds to show where the search ends up. Restore the |
| 2649 | folds when going to another line. |
| 2650 | - When incsearch used and hitting return, no need to search again in many |
| 2651 | cases, saves a lot of time in big files. (Slootman wants to work on this?) |
| 2652 | When not using special characters, can continue search from the last match |
| 2653 | (or not at all, when there was no match). See oldmail/webb/in.872. |
| 2654 | - With incsearch, use CTRL-N/CTRL-P to go to next/previous match, some other |
| 2655 | key to copy matched word to search pattern (Alexander Schmid). |
| 2656 | |
| 2657 | |
| 2658 | Searching: |
| 2659 | 8 Add a mechanism for recursiveness: "\(([^()]*\@@[^()]*)\)\@r". \@@ stands |
| 2660 | for "go recursive here" and \@r marks the recursive atom. |
| 2661 | item stack to allow matching (). One side is "push X on |
| 2662 | the stack if previous atom matched". Other side is "match with top of |
| 2663 | stack, pop it when it matches". Use "\@pX" and "\@m"? |
| 2664 | Example: \((\@p).\{-}\@m\)* |
| 2665 | 7 Add an option to accept a match at the cursor position. Also for |
| 2666 | search(). (Brett) |
| 2667 | 7 Add pattern item to use properties of Unicode characters. In Perl it's |
| 2668 | "\p{L}" for a letter. See Regular Expression Pocket Reference. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2669 | 8 Would it be possible to allow ":23,45/pat/flags" to search for "pat" in |
| 2670 | lines 23 to 45? Or does this conflict with Ex range syntax? |
| 2671 | 8 Allow identical pairs in 'matchpairs'. Restrict the search to the current |
| 2672 | line. |
| 2673 | 7 Allow longer pairs in 'matchpairs'. Use ~/vim/macros/matchit.vim as an |
| 2674 | example. |
| 2675 | 8 Make it possible to define the character that "%" checks for in |
| 2676 | #if/#endif. For nmake it's !if/!endif. |
| 2677 | - For "%" command: set hierarchy for which things include other things that |
| 2678 | should be ignored (like "*/" or "#endif" inside /* */). |
| 2679 | Also: use "%" to jump from start to end of syntax region and back. |
| 2680 | Alternative: use matchit.vim |
| 2681 | 8 "/:/e+1" gets stuck on a match at the end of the line. Do we care? |
| 2682 | 8 A pattern like "\([^a]\+\)\+" takes an awful long time. Recognize that |
| 2683 | the recursive "\+" is meaningless and optimize for it. |
| 2684 | This one is also very slow on "/* some comment */": "^\/\*\(.*[^/]\)*$". |
| 2685 | 7 Recognize "[a-z]", "[0-9]", etc. and replace them with the faster "\l" and |
| 2686 | "\d". |
Bram Moolenaar | c0197e2 | 2004-09-13 20:26:32 +0000 | [diff] [blame] | 2687 | 7 Add a way to specify characters in <C-M> or <Key> form. Could be |
| 2688 | \%<C-M>. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2689 | 8 Flags that apply to the whole pattern. |
| 2690 | This works for all places where a regexp is used. |
| 2691 | Add "\q" to not store this pattern as the last search pattern? |
| 2692 | 8 Add an argument after ":s/pat/str/" for a range of matches. For example, |
| 2693 | ":s/pat/str/#3-4" to replace only the third and fourth "pat" in a line. |
| 2694 | 8 Add an option not to use 'hlsearch' highlighting for ":s" and ":g" |
| 2695 | commands. (Kahn) It would work like ":noh" is used after that command. |
| 2696 | Also: An extra flag to do this once, and a flag to keep the existing |
| 2697 | search pattern. |
| 2698 | - Add \%h{group-name}; to search for a specific highlight group. |
| 2699 | Add \%s{syntax-group}; to search for a specific syntax group. |
| 2700 | - Support Perl regexp. Use PCRE (Perl Compatible RE) package. (Shade) |
| 2701 | Or translate the pattern to a Vim one. |
| 2702 | Don't switch on with an option for typed commands/mappings/functions, it's |
| 2703 | too confusing. Use "\@@" in the pattern, to avoid incompatibilities. |
| 2704 | 7 Add POSIX regexp, like Nvi, with 'extended' option? It's like very-magic. |
| 2705 | - Remember flags for backreferenced items, so that "*" can be used after it. |
| 2706 | Check with "\(\S\)\1\{3}". (Hemmerling) |
| 2707 | - Add flags to search command (also for ":s"?): |
| 2708 | i ignore case |
| 2709 | I use case |
| 2710 | p use Perl regexp syntax (or POSIX?) |
| 2711 | v use Vi regexp syntax |
| 2712 | f forget pattern, don't keep it for "n" command |
| 2713 | F remember pattern, keep it for "n" command |
| 2714 | Perl uses these too: |
| 2715 | e evaluate the right side as an expression (Perl only) |
| 2716 | m multiple line expression (we don't need it) |
| 2717 | o compile only once (Perl only) |
| 2718 | s single line expression (we don't need it) |
| 2719 | x extended regexp (we don't need it) |
| 2720 | When used after ":g" command, backslash needed to avoid confusion with the |
| 2721 | following command. |
| 2722 | Add 'searchflags' for default flags (replaces 'gdefault'). |
| 2723 | - Add command to display the last used substitute pattern and last used |
| 2724 | pattern. (Margo) Maybe make it accessible through a register (like "/ |
| 2725 | for search string)? |
| 2726 | 7 Use T-search algorithm, to speed up searching for strings without special |
| 2727 | characters. See C't article, August 1997. |
| 2728 | - Add 'fuzzycase' option, so that case doesn't matter, and '-' and '_' are |
| 2729 | equivalent (for Unix filenames). |
| 2730 | - Add 'v' flag to search command: enter Visual mode, with the matching text |
| 2731 | as Visual area. (variation on idea from Bertin) |
| 2732 | - Searching: "/this//that/" should find "that" after "this". |
| 2733 | - Add global search commands: Instead of wrapping at the end of the buffer, |
| 2734 | they continue in another buffer. Use flag after search pattern: |
| 2735 | a for the next file in the argument list |
| 2736 | f for file in the buffer list |
| 2737 | w for file edited in a window. |
| 2738 | e.g. "/pat/f". Then "n" and "N" work through files too. "f" flag also for |
| 2739 | ":s/pat/foo/f"??? Then when 'autowrite' and 'hidden' are both not set, ask |
| 2740 | before saving files: "Save modified buffer "/path/file"? (Yes/Hide/No |
| 2741 | Save-all/hide-All/Quit) ". |
| 2742 | - ":s/pat/foo/3": find 3rd match of "pat", like sed. (Thomas Koehler) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2743 | 7 When searching with 'n' give message when getting back where the search |
| 2744 | first started. Remember start of search in '/ mark. |
| 2745 | 7 Add option that scrolls screen to put cursor in middle of screen after |
| 2746 | search always/when off-screen/never. And after a ":tag" command. Maybe |
| 2747 | specify how many lines below the screen causes a redraw with the cursor in |
| 2748 | the middle (default would be half a screen, zero means always). |
| 2749 | 6 Support multiple search buffers, so macros can be made without side |
| 2750 | effects. |
| 2751 | 7 From xvim: Allow a newline in search patterns (also for :s, can delete |
| 2752 | newline). Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc. |
| 2753 | [not in xvim:] Add option to switch on matches crossing ONE line boundary. |
| 2754 | 7 Add ":iselect", a combination of ":ilist" and ":tselect". (Aaron) |
| 2755 | Also ":dselect". |
| 2756 | |
| 2757 | |
| 2758 | Undo: |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 2759 | - Make it possible to undo all the commands from a mapping, including a |
| 2760 | trailing unfinished command, e.g. for ":map K iX^[r". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2761 | - When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not |
| 2762 | possible, even when typing <Esc> immediately. (Grahn) Also for "i", "a", |
| 2763 | etc. Postpone saving for undo until something is really inserted? |
| 2764 | 8 When Inserting a lot of text, it can only be undone as a whole. Make undo |
| 2765 | sync points at every line or word. Could recognize the start of a new |
| 2766 | word (white space and then non-white space) and backspacing. |
| 2767 | Can already use CTRL-G u, but that requires remapping a lot of things. |
| 2768 | 8 Make undo more memory-efficient: Compare text before and after change, |
| 2769 | only remember the lines that really changed. |
| 2770 | 7 Add undo for a range of lines. Can change these back to a previous |
| 2771 | version without changing the rest of the file. Stop doing this when a |
| 2772 | change includes only some of these lines and changes the line count. Need |
| 2773 | to store these undo actions as a separate change that can be undone. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2774 | - For u_save() include the column number. This can be used to set '[ and ']. |
| 2775 | And in the future the undo can be made more efficient (Webb). |
| 2776 | - In out-of-memory situations: Free allocated space in undo, and reduce the |
| 2777 | number of undo levels (with confirmation). |
| 2778 | - Instead of [+], give the number of changes since the last write: [+123]. |
| 2779 | When undoing to before the last write, change this to a negative number: |
| 2780 | [-99]. |
| 2781 | - With undo with simple line delete/insert: optimize screen updating. |
| 2782 | - When executing macro's: Save each line for undo only once. |
| 2783 | - Store undo info in a file that survives until the next edit. Then it's |
| 2784 | possible to undo to before the current editing session. Combined with |
| 2785 | viminfo? |
| 2786 | - When doing a global substitute, causing almost all lines to be changed, |
| 2787 | undo info becomes very big. Put undo info in swap file?? |
| 2788 | |
| 2789 | |
| 2790 | Buffer list: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2791 | 7 Command to execute a command in another buffer: ":inbuf {bufname} {cmd}". |
| 2792 | Also for other windows: ":inwin {winnr} {cmd}". How to make sure that |
| 2793 | this works properly for all commands, and still be able to return to the |
| 2794 | current buffer/window? E.g.: ":inbuf xxx only". |
| 2795 | 8 Add File.{recent_files} menu entries: Recently edited files. |
| 2796 | Ron Aaron has a plugin for this: mru.vim. |
| 2797 | 8 Unix: Check all uses of fnamecmp() and fnamencmp() if they should check |
| 2798 | inode too. |
| 2799 | 7 Add another number for a buffer, which is visible for the user. When |
| 2800 | creating a new buffer, use the lowest number not in use. (or the highest |
| 2801 | number in use plus one?) |
| 2802 | 7 Offer some buffer selection from the command line? Like using ":ls" and |
| 2803 | asking for a buffer number. (Zachmann) |
| 2804 | - When starting to edit a file that is already in the buffer list, use the |
| 2805 | file name argument for the new short file name. (Webb) |
| 2806 | - Add an option to make ":bnext" and ":bprev" wrap around the end of the |
| 2807 | buffer list. Also for ":next" and ":prev"? |
| 2808 | 7 Add argument to ":ls" which is a pattern for buffers to list. |
| 2809 | E.g. ":ls *.c". (Thompson) |
| 2810 | 7 Add expansion of buffer names, so that "*.c" is expanded to all buffer |
| 2811 | names. Needed for ":bdel *.c", ":bunload *.c", etc. |
| 2812 | 8 Support for <afile> where a buffer name is expected. |
| 2813 | 8 Some commands don't use line numbers, but buffer numbers. '$' |
| 2814 | should then mean the number of the last buffer. E.g.: "4,$bdel". |
| 2815 | 7 Add an option to mostly use slashes in file names. Separately for |
| 2816 | internal use and for when executing an external program? |
| 2817 | |
| 2818 | |
| 2819 | Swap (.swp) files: |
| 2820 | 8 If writing to the swap file fails, should try to open one in another |
| 2821 | directory from 'dir'. Useful in case the file system is full and when |
| 2822 | there are short file name problems. |
| 2823 | 8 Also use the code to try using a short file name for the backup and swap |
| 2824 | file for the Win32 and Dos 32 bit versions. |
| 2825 | 8 When a file is edited by root, add $LOGNAME to know who did su. |
| 2826 | 8 When the edited file is a symlink, try to put the swap file in the same |
| 2827 | dir as the actual file. Adjust FullName(). Avoids editing the same file |
| 2828 | twice (e.g. when using quickfix). Also try to make the name of the backup |
| 2829 | file the same as the actual file? |
| 2830 | Use the code for resolve()? |
| 2831 | 7 Store the options 'fileencoding', 'fileformat', etc. in the swapfile, |
| 2832 | because they change what will be written to the file. Requires adding |
| 2833 | another block to the swapfile. |
| 2834 | 7 When using 64 bit inode numbers, also store the top 32 bits. Add another |
| 2835 | field for this, using part of bo_fname[], to keep it compatible. |
| 2836 | 7 When editing a file on removable media, should put swap file somewhere |
| 2837 | else. Use something like 'r' flag in 'viminfo'. 'diravoid'? |
| 2838 | Also: Be able to specify minimum disk space, skip directory when not |
| 2839 | enough room. |
| 2840 | 7 Add a configure check for which directory should be used: /tmp, /var/tmp |
| 2841 | or /var/preserve. |
| 2842 | - Add an option to create a swap file only when making the first change to |
| 2843 | the buffer. (Liang) Or only when the buffer is not read-only. |
| 2844 | - Add option to set "umask" for backup files and swap files (Antwerpen). |
| 2845 | 'backupumask' and 'swapumask'? Or 'umaskback' and 'umaskswap'? |
| 2846 | - When editing a readonly file, don't use a swap file but read parts from the |
| 2847 | original file. Also do this when the file is huge (>'maxmem'). We do |
| 2848 | need to load the file once to count the number of lines? Perhaps keep a |
| 2849 | cached list of which line is where. |
| 2850 | |
| 2851 | |
| 2852 | Viminfo: |
| 2853 | 7 Can probably remove the code that checks for a writable viminfo file, |
| 2854 | because we now do the chown() for root, and others can't overwrite someone |
| 2855 | else's viminfo file. |
| 2856 | 8 Add argument to keep the list of buffers when Vim is started with a file |
| 2857 | name. (Schild) |
| 2858 | 8 Keep the last used directory of the file browser (File/Open menu). |
| 2859 | 8 Remember the last used register for "@@". |
| 2860 | 8 Remember a list of last accessed files. To be used in the |
| 2861 | "File.Open Recent" menu. Default is to remember 10 files or so. |
| 2862 | Also remember which files have been read and written. How to display |
| 2863 | this? |
| 2864 | 7 Also store the ". register (last inserted text). |
| 2865 | 7 Make it possible to store buffer names in viminfo file relative to some |
| 2866 | directory, to make them portable over a network. (Aaron) |
| 2867 | 6 Store a snapshot of the currently opened windows. So that when quitting |
| 2868 | Vim, and then starting again (without a file name argument), you see the |
| 2869 | same files in the windows. Use ":mksession" code? |
| 2870 | - Make marks present in .viminfo usable as file marks: Display a list of |
| 2871 | "last visited files" and select one to jump to. |
| 2872 | |
| 2873 | |
| 2874 | Modelines: |
| 2875 | 8 Before trying to execute a modeline, check that it looks like one (valid |
| 2876 | option names). If it's very wrong, silently ignore it. |
| 2877 | Ignore a line that starts with "Subject: ". |
| 2878 | - When an option value is coming from a modeline, do not carry it over to |
| 2879 | another edited file? Would need to remember the value from before the |
| 2880 | modeline setting. |
| 2881 | - Allow setting a variable from a modeline? Only allow using fixed strings, |
| 2882 | no function calls, to avoid a security problem. |
| 2883 | - Allow ":doauto BufRead x.cpp" in modelines, to execute autocommands for |
| 2884 | .cpp files. |
| 2885 | - Support the "abbreviate" command in modelines (Kearns). Careful for |
| 2886 | characters after <Esc>, that is a security leak. |
| 2887 | - Add option setting to ask user if he wants to have the modelines executed |
| 2888 | or not. Same for .exrc in local dir. |
| 2889 | |
| 2890 | |
| 2891 | Options: |
| 2892 | 8 Make ":mksession" store buffer-specific options for the specific buffer. |
| 2893 | 8 With ":mksession" always store the 'sessionoptions' option, even when |
| 2894 | "options" isn't in it. (St-Amant) |
| 2895 | 7 Setting an option always sets "w_set_curswant", while this is only |
| 2896 | required for a few options. Only do it for those options to avoid the |
| 2897 | side effect. |
| 2898 | 8 When using ":mksession", also store a command to reset all options to |
| 2899 | their default value, before setting the options that are not at their |
| 2900 | default value. |
| 2901 | 8 Should ":mksession" restore the current directory when writing the |
| 2902 | session, or the directory where the session file is? Probably need a word |
| 2903 | in 'sessionoptions' to make a choice: |
| 2904 | "curdir" (cd to current directory when session file was generated) |
| 2905 | "sessiondir" (cd to directory of session file) |
| 2906 | "nodir" (don't cd at all) |
| 2907 | 8 Make "old" number options that really give a number of effects into string |
| 2908 | options that are a comma separated list. The old number values should |
| 2909 | also be supported. |
| 2910 | 8 Add commands to save and restore an option, which also preserves the flag |
| 2911 | that marks if the option was set. Useful to keep the effect of setting |
| 2912 | 'compatible' after ":syntax on" has been used. |
| 2913 | 7 There is 'titleold', why is there no 'iconold'? (Chazelas) |
| 2914 | 7 Make 'scrolloff' a global-local option, so that it can be different in the |
| 2915 | quickfix window, for example. (Gary Holloway) |
| 2916 | 7 Add plugins for formatting. Should be able to make a choice depending on |
| 2917 | the language of a file (English/Korean/Japanese/etc.). |
| 2918 | |
| 2919 | |
| 2920 | External commands: |
| 2921 | 8 When filtering text, redirect stderr so that it can't mess up the screen |
| 2922 | and Vim doesn't need to redraw it. Also for ":r !cmd". |
| 2923 | 4 Set separate shell for ":sh", piping "range!filter", reading text "r !ls" |
| 2924 | and writing text "w !wc". (Deutsche) Allow arguments for fast start (e.g. |
| 2925 | -f). |
| 2926 | 4 Allow direct execution, without using a shell. |
| 2927 | 4 Run an external command in the background. But how about I/O in the GUI? |
| 2928 | Careful: don't turn Vim into a shell! |
| 2929 | 4 Add feature to disable using a shell or external commands. |
| 2930 | |
| 2931 | |
| 2932 | Multiple Windows: |
| 2933 | 7 "vim -oO file ..." use both horizontal and vertical splits. |
| 2934 | 8 Add CTRL-W T: go to the top window in the column of the current window. |
| 2935 | And CTRL-W B: go to bottom window. |
| 2936 | 7 Use CTRL-W <Tab>, like alt-tab, to switch between buffers. Repeat <Tab> |
| 2937 | to select another buffer (only loaded ones?), <BS> to go back, <Enter> to |
| 2938 | select buffer, <Esc> to go back to original buffer. |
| 2939 | 7 Add a 'winfixwidth' option, similar to 'winfixheight'. |
| 2940 | 6 Add an option to resize the shell when splitting and/or closing a window. |
| 2941 | ":vsp" would make the shell wider by as many columns as needed for the new |
| 2942 | window. Specify a maximum size (or use the screen size). ":close" would |
| 2943 | shrink the shell by as many columns as come available. (Demirel) |
| 2944 | 7 When starting Vim several times, instantiate a Vim server, that allows |
| 2945 | communication between the different Vims. Feels like one Vim running with |
| 2946 | multiple top-level windows. Esp. useful when Vim is started from an IDE |
| 2947 | too. Requires some form of inter process communication. |
| 2948 | - Support a connection to an external viewer. Could call the viewer |
| 2949 | automatically after some seconds of non-activity, or with a command. |
| 2950 | Allow some way of reporting scrolling and cursor positioning in the viewer |
| 2951 | to Vim, so that the link between the viewed and edited text can be made. |
| 2952 | |
| 2953 | |
| 2954 | Marks: |
| 2955 | 8 When cursor is first moved because of scrolling, set a mark at this |
| 2956 | position. (Rimon Barr) Use '-. |
| 2957 | 8 Add a command to jump to a mark and make the motion inclusive. g'm and g`m? |
| 2958 | 8 The '" mark is set to the first line, even when doing ":next" a few times. |
| 2959 | Only set the '" mark when the cursor was really moved in a file. |
| 2960 | 8 Make `` and '', which would position the new cursor position in the middle |
| 2961 | of the window, restore the old topline (or relative position) from when |
| 2962 | the mark was set. |
| 2963 | 7 Make a list of file marks in a separate window. For listing all buffers, |
| 2964 | matching tags, errors, etc. Normal commands to move around. Add commands |
| 2965 | to jump to the mark (in current window or new window). Start it with |
| 2966 | ":browse marks"? |
| 2967 | 6 Add a menu that lists the Marks like ":marks". (Amerige) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2968 | 7 For ":jumps", ":tags" and ":marks", for not loaded buffers, remember the |
| 2969 | text at the mark. Highlight the column with the mark. |
| 2970 | 7 Highlight each mark in some way (With "Mark" highlight group). |
| 2971 | Or display marks in a separate column, like 'number' does. |
| 2972 | 7 Use d"m to delete rectangular area from cursor to mark m (like Vile's \m |
| 2973 | command). |
| 2974 | 7 Try to keep marks in the same position when: |
| 2975 | - replacing with a line break, like in ":s/pat/^M/", move marks after the |
| 2976 | line break column to the next line. (Acevedo) |
| 2977 | - inserting/deleting characters in a line. |
| 2978 | 5 Include marks for start/end of the current word and section. Useful in |
| 2979 | mappings. |
| 2980 | 6 Add "unnamed mark" feature: Like marks for the ":g" command, but place and |
| 2981 | unplace them with commands before doing something with the lines. |
| 2982 | Highlight the marked lines somehow. |
| 2983 | |
| 2984 | |
| 2985 | Digraphs: |
| 2986 | 7 Make "ga" show the digraph for a character, if it exists. |
| 2987 | Also the keymap? |
| 2988 | - Make it possible to enter "r<C-E>" and "r<C-Y>" (get character from line |
| 2989 | below/above). |
| 2990 | - Use digraph table to tell Vim about the collating sequence of special |
| 2991 | characters? |
Bram Moolenaar | 3fdfa4a | 2004-10-07 21:02:47 +0000 | [diff] [blame] | 2992 | 8 Add command to remove one or more (all) digraphs. (Brown) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2993 | 7 Support different sets of digraphs (depending on the character set?). At |
| 2994 | least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32). |
| 2995 | |
| 2996 | |
| 2997 | Writing files: |
| 2998 | - In vim_rename(), should lock "from" file when deleting "to" file for |
| 2999 | systems other than Amiga. Avoids problems with unexpected longname to |
| 3000 | shortname conversion. |
| 3001 | 8 write mch_isdevice() for Amiga, Mac, VMS, etc. |
| 3002 | 8 When appending to a file, Vim should also make a backup and a 'patchmode' |
| 3003 | file. |
| 3004 | 8 'backupskip' doesn't write a backup file at all, a bit dangerous for some |
| 3005 | applications. Add 'backupelsewhere' to write a backup file in another |
| 3006 | directory? Or add a flag to 'backupdir'? |
| 3007 | 7 The 'directory' option supports changing path separators to "%" to make |
| 3008 | file names unique, also support this for 'backupdir'. (Mikolaj Machowski) |
| 3009 | 6 Add an option to write a new, numbered, backup file each time. Like |
| 3010 | 'patchmode', e.g., 'backupmode'. |
| 3011 | 6 Make it possible to write 'patchmode' files to a different directory. |
| 3012 | E.g., ":set patchmode=~/backups/*.orig". (Thomas) |
| 3013 | 6 Add an option to prepend something to the backup file name. E.g., "#". |
| 3014 | Or maybe allow a function to modify the backup file name? |
| 3015 | 8 Only make a backup when overwriting a file for the first time. Avoids |
| 3016 | losing the original when writing twice. (Slootman) |
| 3017 | 7 On non-Unix machines, also overwrite the original file in some situations |
| 3018 | (file system full, it's a link on an NFS partition). |
| 3019 | 7 When editing a file, check that it has been change outside of Vim more |
| 3020 | often, not only when writing over it. E.g., at the time the swap file is |
| 3021 | flushed. Or every ten seconds or so (use the time of day, check it before |
| 3022 | waiting for a character to be typed). |
| 3023 | 8 When a file was changed since editing started, show this in the status |
| 3024 | line of the window, like "[time]". |
| 3025 | Make it easier to reload all outdated files that don't have changes. |
| 3026 | Automatic and/or with a command. |
| 3027 | |
| 3028 | |
| 3029 | Substitute: |
| 3030 | 8 Make it easier to replace in all files in the argument list. E.g.: |
| 3031 | ":argsub/oldword/newword/". Works like ":argdo %s/oldword/newword/g|w". |
| 3032 | - :s///p prints the line after a substitution. |
| 3033 | - With :s///c replace \&, ~, etc. when showing the replacement pattern. |
| 3034 | 8 With :s///c allow scrolling horizontally when 'nowrap' is effective. |
| 3035 | Also allow a count before the scrolling keys. |
| 3036 | - Add number option to ":s//2": replace second occurrence of string? Or: |
| 3037 | :s///N substitutes N times. |
| 3038 | - Add answers to ":substitute" with 'c' flag, used in a ":global", e.g.: |
| 3039 | ":g/pat1/s/pat2/pat3/cg": 'A' do all remaining replacements, 'Q' don't do |
| 3040 | any replacements, 'u' undo last substitution. |
| 3041 | 7 Substitute in a block of text. Use {line}.{column} notation in an Ex |
| 3042 | range, e.g.: ":1.3,$.5s" means to substitute from line 1 column 3 to the |
| 3043 | last line column 5. |
| 3044 | 5 Add commands to bookmark lines, display bookmarks, remove bookmarks, |
| 3045 | operate on lines with bookmarks, etc. Like ":global" but with the |
| 3046 | possibility to keep the bookmarks and use them with several commands. |
| 3047 | (Stanislav Sitar) |
| 3048 | |
| 3049 | |
| 3050 | Mouse support: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3051 | 8 Add 'o' flag to 'mouse'? |
| 3052 | 7 Be able to set a 'mouseshape' for the popup menu. |
| 3053 | 8 Add 'mouse' flag, which sets a behavior like Visual mode, but automatic |
| 3054 | yanking at the button-up event. Or like Select mode, but typing gets you |
| 3055 | out of Select mode, instead of replacing the text. (Bhaskar) |
| 3056 | 7 Checkout sysmouse() for FreeBSD console mouse support. |
| 3057 | - Implement mouse support for the Amiga console. |
| 3058 | - Using right mouse button to extend a blockwise selection should attach to |
| 3059 | the nearest corner of the rectangle (four possible corners). |
| 3060 | - Precede mouse click by a number to simulate double clicks?!? |
| 3061 | - When mouse click after 'r' command, get character that was pointed to. |
| 3062 | |
| 3063 | |
| 3064 | Crypt and security: |
| 3065 | 8 Also crypt the swapfile, each block separately. Change mf_write() and |
| 3066 | mf_read(). How to get b_p_key to these functions? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3067 | |
| 3068 | |
| 3069 | Argument list: |
| 3070 | 6 Add command to put all filenames from the tag files in the argument list. |
| 3071 | When given an argument, only use the files where that argument matches |
| 3072 | (like `grep -l ident`) and jump to the first match. |
| 3073 | 6 Add command to form an args list from all the buffers? |
| 3074 | |
| 3075 | |
| 3076 | Registers: |
| 3077 | 8 Don't display empty registers with ":display". (Etienne) |
| 3078 | 8 Make the # register writable, so that it can be restored after jumping |
| 3079 | around in windows. |
| 3080 | 8 Add put command that overwrites existing text. Should also work for |
| 3081 | blocks. Useful to move text around in a table. Works like using "R ^R r" |
| 3082 | for every line. |
| 3083 | 6 When yanking into the unnamed registers several times, somehow make the |
| 3084 | previous contents also available (like it's done for deleting). What |
| 3085 | register names to use? g"1, g"2, etc.? |
| 3086 | - When appending to a register, also report the total resulting number of |
| 3087 | lines. Or just say "99 more lines yanked", add the "more". |
| 3088 | - When inserting a register in Insert mode with CTRL-R, don't insert comment |
| 3089 | leader when line wraps? |
| 3090 | - The ":@r" commands should take a range and execute the register for each |
| 3091 | line in the range. |
| 3092 | - Add "P" command to insert contents of unnamed register, move selected text |
| 3093 | to position of previous deleted (to swap foo and bar in " + foo") |
| 3094 | 8 Should be able to yank and delete into the "/ register. |
| 3095 | How to take care of the flags (offset, magic)? |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 3096 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3097 | |
| 3098 | Debug mode: |
| 3099 | 7 Add something to enable debugging when a remote message is received. |
| 3100 | 8 Add breakpoints for setting an option |
Bram Moolenaar | 69a7cb4 | 2004-06-20 12:51:53 +0000 | [diff] [blame] | 3101 | 8 Add breakpoints for assigning to a variable. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3102 | 7 Add a watchpoint in the debug mode: An expression that breaks execution |
Bram Moolenaar | 15d0a8c | 2004-09-06 17:44:46 +0000 | [diff] [blame] | 3103 | when evaluating to non-zero. Add the "watchadd expr" command, stop when |
| 3104 | the value of the expression changes. ":watchdel" deletes an item, |
| 3105 | ":watchlist" lists the items. (Charles Campbell) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3106 | 7 Store the history from debug mode in viminfo. |
| 3107 | 7 Make the debug mode history available with histget() et al. |
| 3108 | |
| 3109 | |
| 3110 | Various improvements: |
| 3111 | 8 Add ":rename" command: rename the file of the current buffer and rename |
| 3112 | the buffer. Buffer may be modified. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3113 | 6 In the quickfix window statusline add the command used to get the list of |
| 3114 | errors, e.g. ":make foo", ":grep something *.c". |
Bram Moolenaar | d4755bb | 2004-09-02 19:12:26 +0000 | [diff] [blame] | 3115 | 7 Add a ":cstring" command. Works like ":cfile" but reads from a string |
| 3116 | variable. Also accept a list variable? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3117 | 6 Python interface: add vim.message() function. (Michal Vitecek, 2002 Nov 5) |
| 3118 | 7 Support using ":vert" with User commands. Add expandable items <vert>. |
| 3119 | Do the same for ":browse" and ":confirm"? |
| 3120 | For ":silent" and ":debug" apply to the whole user command. |
| 3121 | 7 Allow a window not to have a statusline. Makes it possible to use a |
| 3122 | window as a buffer-tab selection. |
| 3123 | 7 Add an invisible buffer which can be edited. For use in scripts that want |
| 3124 | to manipulate text without changing the window layout. |
| 3125 | 8 Add a command to revert to the saved version of file; undo or redo until |
| 3126 | all changes are gone. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3127 | 7 Add a ":cpfile", go in the other direction as ":cnfile". |
| 3128 | 6 "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3129 | 8 Add "--remote-fail": When contacting the server fails, exit Vim. |
| 3130 | Add "--remote-self": When contacting the server fails, do it in this Vim. |
| 3131 | Overrules the default of "--remote-send" to fail and "--remote" to do it |
| 3132 | in this Vim. |
| 3133 | 8 When Vim was started without a server, make it possible to start one, as |
| 3134 | if the "--servername" argument was given. ":startserver <name>"? |
| 3135 | 8 No address range can be used before the command modifiers. This makes |
| 3136 | them difficult to use in a menu for Visual mode. Accept the range and |
| 3137 | have it apply to the following command. |
| 3138 | 8 Add the possibility to set 'fileformats' to force a format and strip other |
| 3139 | CR characters. For example, for "dos" files remove CR characters at the |
| 3140 | end of the line, so that a file with mixed line endings is cleaned up. |
| 3141 | To just not display the CR characters: Add a flag to 'display'? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3142 | 7 Some compilers give error messages in which the file name does not have a |
| 3143 | path. Be able to specify that 'path' is used for these files. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3144 | 7 Xterm sends <Esc>O3F for <M-End>. Similarly for other <M-Home>, <M-Left>, |
| 3145 | etc. Combinations of Alt, Ctrl and Shift are also possible. Recognize |
| 3146 | these to avoid inserting the raw byte sequence, handle like the key |
| 3147 | without modifier (unless mapped). |
| 3148 | 8 Add ":breakdel *": delete all breakpoints. |
| 3149 | 7 Support ":browse edit" in console, using explorer.vim? |
| 3150 | 6 Add "gG": like what "gj" is to "j": go to the N'th window line. |
| 3151 | 8 Add command like ":normal" that accepts <Key> notation like ":map". |
| 3152 | 9 Support ACLs on more systems. |
| 3153 | 7 Add ModeMsgVisual, ModeMsgInsert, etc. so that each mode message can be |
| 3154 | highlighted differently. |
| 3155 | 8 Allow using "**" as a wildcard in commands like ":next" and ":args". |
| 3156 | 8 Provide a way to avoid wildcard expansion. Use double quotes, like in the |
| 3157 | shell? :edit "my[file].txt" (currently works if there is no "myf.txt") |
| 3158 | 7 Add a message area for the user. Set some option to reserve space (above |
| 3159 | the command line?). Use an ":echouser" command to display the message |
| 3160 | (truncated to fit in the space). |
| 3161 | 7 Add %s to 'keywordprg': replace with word under the cursor. (Zellner) |
| 3162 | 8 Support printing on Unix. Can use "lpansi.c" as an example. (Bookout) |
| 3163 | 8 Add put command that replaces the text under it. Esp. for blockwise |
| 3164 | Visual mode. |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 3165 | 7 Enhance termresponse stuff: Add t_CV(?): pattern of term response, use |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3166 | regexp: "\e\[[>?][0-9;]*c", but only check just after sending t_RV. |
| 3167 | 7 Add "g|" command: move to N'th column from the left margin (after wrapping |
| 3168 | and applying 'leftcol'). Works as "|" like what "g0" is to "0". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3169 | 7 Support setting 'equalprg' to a user function name. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3170 | 7 Highlight the characters after the end-of-line differently. |
| 3171 | 7 When 'whichwrap' contains "l", "$dl" should join lines? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3172 | 8 Add an argument to configure to use $CFLAGS and not modify it? (Mooney) |
| 3173 | 8 Enabling features is a mix of configure arguments and defines in |
| 3174 | feature.h. How to make this consistent? Feature.h is required for |
| 3175 | non-unix systems. Perhaps let configure define CONF_XXX, and use #ifdef |
| 3176 | CONF_XXX in feature.h? Then what should min-features and max-features do? |
| 3177 | 8 Add "g^E" and "g^Y", to scroll a screen-full line up and down. |
| 3178 | 6 Add ":timer" command, to set a command to be executed at a certain |
| 3179 | interval, or once after some time has elapsed. (Aaron) |
| 3180 | 8 Add ":confirm" handling in open_exfile(), for when file already exists. |
| 3181 | 8 Use confirm/dialog stuff to ask the user, when a file has changed outside |
| 3182 | of Vim, if he wants to reload it. Triggered when focus gained, after |
| 3183 | shell command, when entering another buffer, etc.. |
| 3184 | Also do this when editing a new file, and another application creates |
| 3185 | the file before doing ":w" in Vim. |
| 3186 | Also check if the file protection has changed. When checking a file into |
| 3187 | RCS it is made read-only, when checking out it is made read-write. |
| 3188 | 8 When quitting with changed files, make the dialog list the changed file |
| 3189 | and allow "write all", "discard all", "write some". The last one would |
| 3190 | then ask "write" or "discard" for each changed file. Patch in HierAssist |
| 3191 | does something like this. (Shah) |
| 3192 | 7 Use growarray for replace stack. |
| 3193 | 7 Have a look at viH (Hellenic or Greek version of Vim). But a solution |
| 3194 | outside of Vim might be satisfactory (Haritsis). |
| 3195 | 3 Make "2d%" work like "d%d%" instead of "d2%"? |
| 3196 | 8 Make "more" prompt accept command characters, like "hit-enter" prompt? |
| 3197 | Or extend it with more commands, like "less": 'b' for back, 'j' for one |
| 3198 | line down, etc. |
| 3199 | 8 For the "--more--" prompt, support the 'b'ack command for more commands. |
| 3200 | Possible implementation: Do it at a very low level, caching the lines that |
| 3201 | are on the screen (with highlight attributes). Avoids that changes have |
| 3202 | to be made for all functions that list something. |
| 3203 | 7 "g CTRL-O" jumps back to last used buffer. Skip CTRL-O jumps in the same |
| 3204 | buffer. Make jumplist remember the last ten accessed buffers? |
| 3205 | - Keep a list of most recently used files for each window, use "[o" to go |
| 3206 | back (older file) and "]n" to go forward (newer file) (like ^O and ^I for |
| 3207 | jumps) (Webb). Use ":files" and ":ls" to list the files in history order. |
| 3208 | 7 Add a history of recently accessed buffer. Maybe make "2 CTRL-^" jump to |
| 3209 | the 2nd previously visited buffer, "3 CTRL-^" to the third, etc. Or use |
| 3210 | "3 g CTRL-^" for this? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3211 | - Add code to disable the CAPS key when going from Insert to Normal mode. |
| 3212 | - Set date/protection/etc. of the patchfile the same as the original file. |
| 3213 | - Use growarray for termcodes[] in term.c |
| 3214 | - Add <window-99>, like <cword> but use filename of 99'th window. |
| 3215 | 7 Add a way to change an operator to always work characterwise-inclusive |
| 3216 | (like "v" makes the operator characterwise-exclusive). "x" could be used. |
| 3217 | - Make a set of operations on list of names: expand wildcards, replace home |
| 3218 | dir, append a string, delete a string, etc. |
| 3219 | - Remove mktemp() and use tmpname() only? Ctags does this. |
| 3220 | - When replacing environment variables, and there is one that is not set, |
| 3221 | turn it into an empty string? Only when expanding options? (Hiebert) |
| 3222 | - Option to set command to be executed instead of producing a beep (e.g. to |
| 3223 | call "play newbeep.au"). |
| 3224 | - Add option to show the current function name in the status line. More or |
| 3225 | less what you find with "[[k", like how 'cindent' recognizes a function. |
| 3226 | (Bhatt). |
| 3227 | - "[r" and "]r": like "p" and "P", but replace instead of insert (esp. for |
| 3228 | blockwise registers). |
| 3229 | - Add 'timecheck' option, on by default. Makes it possible to switch off the |
| 3230 | timestamp warning and question. (Dodt). |
| 3231 | - Add an option to set the time after which Vim should check the timestamps |
| 3232 | of the files. Only check when an event occurs (e.g., character typed, |
| 3233 | mouse moved). Useful for non-GUI versions where keyboard focus isn't |
| 3234 | noticeable. |
| 3235 | 9 When using ":w <fname>" it's possible that this file is loaded in another |
| 3236 | buffer. Give a warning right away, don't wait for a shell command. |
| 3237 | - Make 'smartcase' work even though 'ic' isn't set (Webb). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3238 | 7 When formatting text, allow to break the line at a number of characters. |
| 3239 | Use an option for this: 'breakchars'? Useful for formatting Fortran code. |
| 3240 | - Add flag to 'formatoptions' to be able to format book-style paragraphs |
| 3241 | (first line of paragraph has larger indent, no empty lines between |
| 3242 | paragraphs). Complements the '2' flag. Use '>' flag when larger indent |
| 3243 | starts a new paragraph, use '<' flag when smaller indent starts a new |
| 3244 | paragraph. Both start a new paragraph on any indent change. |
Bram Moolenaar | 269ec65 | 2004-07-29 08:43:53 +0000 | [diff] [blame] | 3245 | 7 Add a way to define an item list with a pattern in 'formatoptions'. The |
| 3246 | 'n' flag doesn't work for "6.3" or "6a.". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3247 | 8 Add 'formatexpr' option: Used for formatting operator "gq" instead of the |
| 3248 | builtin formatting or 'formatprg'. |
| 3249 | 8 Allow using a trailing space to signal a paragraph that continues on the |
| 3250 | next line (MIME text/plain; format=flowed, RFC 2646). Can be used for |
| 3251 | continuous formatting. Could use 'autoformat' option, which specifies a |
| 3252 | regexp which triggers auto-formatting (for one line). |
| 3253 | ":set autoformat=\\s$". |
| 3254 | - Be able to redefine where a sentence stops. Use a regexp pattern? |
| 3255 | 7 Add command "g)" to go to the end of a sentence, "g(" to go back to the |
| 3256 | end of a sentence. (Servatius Brandt) |
| 3257 | - Be able to redefine where a paragraph starts. For "[[" where the '{' is |
| 3258 | not in column 1. |
| 3259 | 6 Add ":cdprev": go back to the previous directory. Need to remember a |
| 3260 | stack of previous directories. We also need ":cdnext". |
| 3261 | 7 Should ":cd" for MS-DOS go to $HOME, when it's defined? |
| 3262 | - Make "gq<CR>" work on the last line in the file. Maybe for every operator? |
| 3263 | 8 findmatchlimit() should be able to skip comments. Solves problem of |
| 3264 | matching the '{' in /* if (foo) { */ (Fiveash) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3265 | - Add more redirecting of Ex commands: |
| 3266 | :redir @> register (append) |
| 3267 | :redir # bufname |
| 3268 | :redir #> bufname (append) |
| 3269 | :redir = variable |
| 3270 | :redir => variable (append) |
| 3271 | - Setting of options, specifically for a buffer or window, with |
| 3272 | ":set window.option" or ":set buffer.option=val". Or use ":buffer.set". |
| 3273 | Also: "buffer.map <F1> quit". |
| 3274 | 6 Would it be possible to change the color of the cursor in the Win32 |
| 3275 | console? (Klaus Hast) |
| 3276 | - Add :delcr command: |
| 3277 | *:delcr* |
| 3278 | :[range]delcr[!] Check [range] lines (default: whole buffer) for lines |
| 3279 | ending in <CR>. If all lines end in <CR>, or [!] is |
| 3280 | used, remove the <CR> at the end of lines in [range]. |
| 3281 | A CTRL-Z at the end of the file is removed. If |
| 3282 | [range] is omitted, or it is the whole file, and all |
| 3283 | lines end in <CR> 'textmode' is set. {not in Vi} |
| 3284 | - Should integrate addstar() and file_pat_to_reg_pat(). |
| 3285 | - When working over a serial line with 7 bit characters, remove meta |
| 3286 | characters from 'isprint'. |
| 3287 | - Use fchdir() in init_homedir(), like in FullName(). |
| 3288 | - In win_update(), when the GUI is active, always use the scrolling area. |
| 3289 | Avoid that the last status line is deleted and needs to be redrawn. |
| 3290 | - That "cTx" fails when the cursor is just after 'x' is Vi compatible, but |
| 3291 | may not be what you expect. Add a flag in 'cpoptions' for this? More |
| 3292 | general: Add an option to allow "c" to work with a null motion. |
| 3293 | - Give better error messages by using errno (strerror()). |
| 3294 | - Give "Usage:" error message when command used with wrong arguments (like |
| 3295 | Nvi). |
| 3296 | - Make 'restorescreen' option also work for xterm (and others), replaces the |
| 3297 | SAVE_XTERM_SCREEN define. |
| 3298 | 7 Support for ":winpos" In xterm: report the current window position. |
| 3299 | - Give warning message when using ":set t_xx=asdf" for a termcap code that |
| 3300 | Vim doesn't know about. Add flag in 'shortmess'? |
| 3301 | 6 Add ":che <file>", list all the include paths which lead to this file. |
| 3302 | - For a commandline that has several commands (:s, :d, etc.) summarize the |
| 3303 | changes all together instead of for each command (e.g. for the rot13 |
| 3304 | macro). |
| 3305 | - Add command like "[I" that also shows the tree of included files. |
| 3306 | - Add command like ":ts" that shows the output of "[I" and asks for a match |
| 3307 | to jump to. (Zellner) |
| 3308 | - ":set sm^L" results in ":set s", because short names of options are also |
| 3309 | expanded. Is there a better way to do this? |
| 3310 | - Add ":@!" command, to ":@" like what ":source!" is to ":source". |
| 3311 | 8 Add ":@:!": repeat last command with forceit set. |
| 3312 | - Should be possible to write to a device, e.g. ":w! /dev/null". |
| 3313 | - Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty. |
| 3314 | - ":cab map test ^V| je", ":cunab map" doesn't work. This is vi compatible! |
| 3315 | - CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down |
| 3316 | if it is not the first or last window. |
| 3317 | - Include-file-search commands should look in the loaded buffer of a file (if |
| 3318 | there is one) instead of the file itself. |
| 3319 | 7 Change 'nrformats' to include the leader for each format. Example: |
| 3320 | nrformats=hex:$,binary:b,octal:0 |
| 3321 | Add setting of 'nrformats' to syntax files. |
| 3322 | - 'path' can become very long, don't use NameBuff for expansion. |
| 3323 | - When unhiding a hidden buffer, put the same line at top of the window as |
| 3324 | the one before hiding it. Or: keep the same relative cursor position (so |
| 3325 | many percent down the windows). |
| 3326 | - Make it possible for the 'showbreak' to be displayed at the end of the |
| 3327 | line. Use a comma to separate the part at the end and the start of the |
| 3328 | line? Highlight the linebreak characters, add flag in 'highlight'. |
| 3329 | - Some string options should be expanded if they have wildcards, e.g. |
| 3330 | 'dictionary' when it is "*.h". |
| 3331 | - Use a specific type for number and boolean options, making it possible to |
| 3332 | change it for specific machines (e.g. when a long is 64 bit). |
| 3333 | - Add option for <Insert> in replace mode going to normal mode. (Nugent) |
| 3334 | - Add a next/previous possibility to "[^I" and friends. |
| 3335 | - Add possibility to change the HOME directory. Use the directory from the |
| 3336 | passwd file? (Antwerpen) |
| 3337 | - When doing "[^I" or "[^D" add position to tag stack. |
| 3338 | - Add command to put current position to tag stack: ":tpush". |
| 3339 | 8 Add commands to push and pop all or individual options. ":setpush tw", |
| 3340 | ":setpop tw", ":setpush all". Maybe pushing/popping all options is |
| 3341 | sufficient. ":setflush" resets the option stack? |
| 3342 | How to handle an aborted mapping? Remember position in tag stack when |
| 3343 | mapping starts, restore it when an error aborts the mapping? |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3344 | - Change ":fixdel" into option 'fixdel', t_del will be adjusted each time |
| 3345 | t_bs is set? (Webb) |
| 3346 | - "gc": goto character, move absolute character positions forward, also |
| 3347 | counting newlines. "gC" goes backwards (Weigert). |
| 3348 | - When doing CTRL-^, redraw buffer with the same topline (Demirel). Store |
| 3349 | cursor row and window height to redraw cursor at same percentage of window |
| 3350 | (Webb). |
| 3351 | - Besides remembering the last used line number of a file, also remember the |
| 3352 | column. Use it with CTRL-^ et. al. |
| 3353 | - Check for non-digits when setting a number option (careful when entering |
| 3354 | hex codes like 0xff). |
| 3355 | - Add option to make "." redo the "@r" command, instead of the last command |
| 3356 | executed by it. Also to make "." redo the whole mapping. Basically: redo |
| 3357 | the last TYPED command. |
| 3358 | - Support URL links for ^X^F in Insert mode, like for "gf". |
| 3359 | - Support %name% expansion for "gf" on Windows. |
| 3360 | - Make "gf" work on "file://c:/path/name". "file:/c:/" and "file:///c:/" |
| 3361 | should also work? |
| 3362 | - Add 'urlpath', used like 'path' for when "gf" used on an URL? |
| 3363 | 8 When using "gf" on an absolute file name, while editing a remote file |
| 3364 | (starts with scp:// or http://) should prepend the method and machine |
| 3365 | name. |
| 3366 | - When finding an URL or file name, and it doesn't exist, try removing a |
| 3367 | trailing '.'. |
| 3368 | - Add ":path" command modifier. Should work for every command that takes a |
| 3369 | file name argument, to search for the file name in 'path'. Use |
| 3370 | find_file_in_path(). |
| 3371 | - Highlight control characters on the screen: Shows the difference between |
| 3372 | CTRL-X and "^" followed by "X" (Colon). |
| 3373 | - Integrate parsing of cmdline command and parsing for expansion. |
| 3374 | - Create a program that can translate a .swp file from any machine into a |
| 3375 | form usable by Vim on the current machine. |
| 3376 | - Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have |
| 3377 | a readonly file. ":noro!" will reset all 'ro' flags. |
| 3378 | - Add a variant of CTRL-V that stops interpretation of more than one |
| 3379 | character. For entering mappings on the command line where a key contains |
| 3380 | several special characters, e.g. a trailing newline. |
| 3381 | - Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine |
| 3382 | the two into a regex for searching. (Ned Konz) |
| 3383 | - Make '2' option in 'formatoptions' also work inside comments. |
| 3384 | - Add 's' flag to 'formatoptions': Do not break when inside a string. (Dodt) |
| 3385 | - When window size changed (with the mouse) and made too small, set it back |
| 3386 | to the minimal size. |
| 3387 | - Add "]>" and "[<", shift comment at end of line (command; /* comment */). |
| 3388 | - Should not call cursorcmd() for each vgetc() in getcmdline(). |
| 3389 | - ":split file1 file2" adds two more windows (Webb). |
| 3390 | - Don't give message "Incomplete last line" when editing binary file. |
| 3391 | - Add ":a", ":i" for preloading of named buffers. |
| 3392 | - Allow autowrite when doing ":e file" (with an option 'eaw'). |
| 3393 | - Allow a "+command" argument before each file name in the Vim command line: |
| 3394 | "vim +123 file1 +234 file2 +345 file3". ??? |
| 3395 | - When entering text, keep other windows on same buffer updated (when a line |
| 3396 | entered)? |
| 3397 | - Check out how screen does output optimizing. Apparently this is possible |
| 3398 | as an output filter. |
| 3399 | - In dosub() regexec is called twice for the same line. Try to avoid this. |
| 3400 | - Window updating from memline.c: insert/delete/replace line. |
| 3401 | - Optimize ml_append() for speed, esp. for reading a file. |
| 3402 | - V..c should keep indent when 'ai' is set, just like [count]cc. |
| 3403 | - Updatescript() can be done faster with a string instead of a char. |
| 3404 | - Screen updating is inefficient with CTRL-F and CTRL-B when there are long |
| 3405 | lines. |
| 3406 | - Uppercase characters in ex commands can be made lowercase? |
| 3407 | 8 Add option to show characters in text not as "|A" but as decimal ("^129"), |
| 3408 | hex ("\x81") or octal ("\201") or meta (M-x). Nvi has the 'octal' option |
| 3409 | to switch from hex to octal. Vile can show unprintable characters in hex |
| 3410 | or in octal. |
| 3411 | 7 Tighter integration with xxd to edit binary files. Make it more |
| 3412 | easy/obvious to use. Command line argument? |
| 3413 | - How does vi detect whether a filter has messed up the screen? Check source. |
| 3414 | After ":w !command" a wait_return? |
| 3415 | - Improve screen updating code for doput() (use s_ins()). |
| 3416 | - With 'p' command on last line: scroll screen up (also for terminals without |
| 3417 | insert line command). |
| 3418 | - Use insert/delete char when terminal supports it. |
| 3419 | - Optimize screen redraw for slow terminals. |
| 3420 | - Optimize "dw" for long row of spaces (say, 30000). |
| 3421 | - Add "-d null" for editing from a script file without displaying. |
| 3422 | - In Insert mode: Remember the characters that were removed with backspace |
| 3423 | and re-insert them one at a time with <key1>, all together with <key2>. |
| 3424 | - Amiga: Add possibility to set a keymap. The code in amiga.c does not work |
| 3425 | yet. |
| 3426 | - Implement 'redraw' option. |
| 3427 | - Add special code to 'sections' option to define something else but '{' or |
| 3428 | '}' as the start of a section (e.g. one shiftwidth to the right). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3429 | - Use pipes for filtering on Unix. Requires using fork() to be able to read |
| 3430 | and write at the same time, or some select() mechanism. |
| 3431 | 7 Allow using Vim in a pipe: "ls | vim -u xxx.vim - | yyy". Only needs |
| 3432 | implementing ":w" to stdout in the buffer that was read from stdin. |
| 3433 | 8 Allow opening an unnamed buffer with ":e !cmd" and ":sp !cmd". Vile can |
| 3434 | do it. |
| 3435 | - Add commands like ]] and [[ that do not include the line jumped to. |
| 3436 | - When :unab without matching "from" part and several matching "to" parts, |
| 3437 | delete the entry that was used last, instead of the first in the list. |
| 3438 | - Add text justification option. |
| 3439 | - Set boolean options on/off with ":set paste=off", ":set paste=on". |
| 3440 | - After "inv"ing an option show the value: ":set invpaste" gives "paste is |
| 3441 | off". |
| 3442 | - Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR. |
| 3443 | - When a file cannot be opened but does exist, give error message. |
| 3444 | - Amiga: When 'r' protection bit is not set, file can still be opened but |
| 3445 | gives read errors. Check protection before opening. |
| 3446 | - When writing check for file exists but no permission, "Permission denied". |
| 3447 | - If file does not exists, check if directory exists. |
| 3448 | - MSDOS: although t_cv and t_ci are not set, do invert char under cursor. |
| 3449 | - Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex |
| 3450 | commands. |
| 3451 | - ":set -w all": list one option per line. |
| 3452 | - Amiga: test for 'w' flag when reading a file. |
| 3453 | - :table command (Webb) |
| 3454 | - Add new operator: clear, make area white (replace with spaces): "g ". |
| 3455 | - Make it possible for a user to define a new operator. Implementation with |
| 3456 | internal scripting language or Perl? |
| 3457 | - Add command to ":read" a file at a certain column (blockwise read?). |
| 3458 | - Add sort of replace mode where case is taken from the old text (Goldfarb). |
| 3459 | - Allow multiple arguments for ":read", read all the files. |
| 3460 | - Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel). |
| 3461 | - Add 'searchdir' option: Directories to search for file name being edited |
| 3462 | (Demirel). |
| 3463 | - Modifier for the put command: Change to linewise, charwise, blockwise, etc. |
| 3464 | - Add commands for saving and restoring options ":set save" "set restore", |
| 3465 | for use in macro's and the like. |
| 3466 | - Keep output from listings in a window, so you can have a look at it while |
| 3467 | working in another window. Put cmdline in a separate window? |
| 3468 | - Add possibility to put output of ex commands in a buffer or file, e.g. for |
| 3469 | ":set all". ":r :set all"? |
| 3470 | - 'edit' option: When off changing the buffer is not possible (Really |
| 3471 | read-only mode). |
| 3472 | - When the 'equalalways' option is set, creating a new window should not |
| 3473 | result in windows to become bigger. Deleting a window should not result in |
| 3474 | a window to become smaller (Webb). |
| 3475 | - When resizing the whole Vim window, the windows inside should be resized |
| 3476 | proportionally (Webb). |
| 3477 | - Include options directly in option table, no indirect pointers. Use |
| 3478 | mkopttab to make option table? |
| 3479 | - When doing ":w dir", where "dir" is a directory name, write the current |
| 3480 | file into that directory, with the current file name (without the path)? |
| 3481 | - Support for 'dictionary's that are sorted, makes access a lot faster |
| 3482 | (Haritsis). |
| 3483 | - Add "^Vrx" on the command line, replace with contents of register x. Used |
| 3484 | instead of CTRL-R to make repeating possible. (Marinichev) |
| 3485 | - Add "^Vb" on the command line, replace with word before or under the |
| 3486 | cursor? |
| 3487 | - Option to make a .swp file only when a change is made (Templeton). |
| 3488 | - Support mapping for replace mode and "r" command (Vi doesn't do this)? |
| 3489 | 5 Add 'ignorefilecase' option: Ignore case when expanding file names. |
| 3490 | ":e ma<Tab>" would also find "Makefile" on Unix. |
Bram Moolenaar | 69a7cb4 | 2004-06-20 12:51:53 +0000 | [diff] [blame] | 3491 | 8 Sorting of filenames for completion is wrong on systems that ignore |
| 3492 | case of filenames. Add 'ignorefncase' option. When set, case in |
| 3493 | filenames is ignored for sorting them. Patch by Mike Williams: |
| 3494 | ~/vim/patches/ignorefncase. Also change what matches? Or use another |
| 3495 | option name. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 3496 | 8 Should be able to compile Vim in another directory, with $(srcdir) set to |
| 3497 | where the sources are. Add $(srcdir) in the Makefile in a lot of places. |
| 3498 | (Netherton) |
| 3499 | 6 Make it configurable when "J" inserts a space or not. Should not add a |
| 3500 | space after "(", for example. |
| 3501 | 5 When inserting spaces after the end-of-line for 'virtualedit', use tabs |
| 3502 | when the user wants this (e.g., add a "tab" field to 'virtualedit'). |
| 3503 | (Servatius Brandt) |
| 3504 | |
| 3505 | |
| 3506 | From Elvis: |
| 3507 | - Use "instman.sh" to install manpages? |
| 3508 | - Add ":alias" command. |
| 3509 | - fontchanges recognized "\\fB" etc. |
| 3510 | - Search patterns: |
| 3511 | \@ match word under cursor. |
| 3512 | but do: |
| 3513 | \@w match the word under the cursor? |
| 3514 | \@W match the WORD under the cursor? |
| 3515 | 8 ":window" command: |
| 3516 | :win + next window (up) |
| 3517 | :win ++ idem, wrapping |
| 3518 | :win - previous window (down) |
| 3519 | :win -- idem, wrapping |
| 3520 | :win nr to window number "nr" |
| 3521 | :win name to window editing buffer "name" |
| 3522 | 7 ":cc" compiles a single file (default: current one). 'ccprg' option is |
| 3523 | program to use with ":cc". Use ":compile" instead of ":cc"? |
| 3524 | |
| 3525 | |
| 3526 | From Nvi: |
| 3527 | - 'searchincr' option, alias for 'incsearch'? |
| 3528 | - 'leftright' option, alias for 'nowrap'? |
| 3529 | - Have a look at "vi/doc/vi.chart", for Nvi specialties. |
| 3530 | 8 Add 'keytime', time in 1/10 sec for mapping timeout? |
| 3531 | - Add 'filec' option as an alternative for 'wildchar'. |
| 3532 | 6 Support Nvi command names as an alias: |
| 3533 | :bg :hide |
| 3534 | :fg fname :buf fname (with 'hidden' set?) |
| 3535 | :dis b :ls |
| 3536 | :Edit fname :split fname |
| 3537 | :Fg fname :sbuf fname (with 'hidden' set?) |
| 3538 | :Next :snext (can't do this, already use :Next) |
| 3539 | :Previous :sprevious |
| 3540 | :Tag :stag |
| 3541 | |
| 3542 | |
| 3543 | From xvi: |
| 3544 | - CTRL-_ : swap 8th bit of character. |
| 3545 | - Add egrep-like regex type, like xvi (Ned Konz) or Perl (Emmanuel Mogenet) |
| 3546 | |
| 3547 | |
| 3548 | From vile: |
| 3549 | - When horizontal scrolling, use '>' for lines continuing right of a window. |
| 3550 | - Support putting .swp files in /tmp: Command in rc.local to move .swp files |
| 3551 | from /tmp to some directory before deleting files. |
| 3552 | |
| 3553 | |
| 3554 | Far future and "big" extensions: |
| 3555 | - Make it easy to setup Vim for groups of users: novice vi users, novice |
| 3556 | Vim users, C programmers, xterm users, GUI users,... |
| 3557 | - Change layout of blocks in swap file: Text at the start, with '\n' in |
| 3558 | between lines (just load the file without changes, except for Mac). |
| 3559 | Indexes for lines are from the end of the block backwards. It's the |
| 3560 | current layout mirrored. |
| 3561 | - Make it possible to edit a register, in a window, like a buffer. |
| 3562 | - Add stuff to syntax highlighting to change the text (upper-case keywords, |
| 3563 | set indent, define other highlighting, etc.). |
| 3564 | - Mode to keep C-code formatted all the time (sort of on-line indent). |
| 3565 | - Several top-level windows in one Vim session. Be able to use a different |
| 3566 | font in each top-level window. |
| 3567 | - Allow editing above start and below end of buffer (flag in 'virtualedit'). |
| 3568 | - Smart cut/paste: recognize words and adjust spaces before/after them. |
| 3569 | - Add open mode, use it when terminal has no cursor positioning. |
| 3570 | - Special "drawing mode": a line is drawn where the cursor is moved to. |
| 3571 | Backspace deletes along the line (from jvim). |
| 3572 | - Implement ":Bset", set option in all buffers. Also ":Wset", set in all |
| 3573 | windows, ":Aset, set in all arguments and ":Tset", set in all files |
| 3574 | mentioned in the tags file. |
| 3575 | Add buffer/arg range, like in ":2,5B%s/..." (do we really need this???) |
| 3576 | Add search string: "B/*.c/%s/.."? Or ":F/*.c/%s/.."? |
| 3577 | - Support for underlining (underscore-BS-char), bold (char-BS-char) and other |
| 3578 | standout modes switched on/off with , 'overstrike' option (Reiter). |
| 3579 | - Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five |
| 3580 | lines, "3vitextESC" will insert "text" in three lines, etc.. |
| 3581 | 4 Recognize l, #, p as 'flags' to EX commands: |
| 3582 | :g/RE/#l shall print lines with line numbers and in list format. |
| 3583 | :g/RE/dp shall print lines that are deleted. |
| 3584 | POSIX: Commands where flags shall apply to all lines written: list, |
| 3585 | number, open, print, substitute, visual, &, z. For other commands, flags |
| 3586 | shall apply to the current line after the command completes. Examples: |
| 3587 | :7,10j #l Join the lines 7-10 and print the result in list |
| 3588 | - Allow two or more users to edit the same file at the same time. Changes |
| 3589 | are reflected in each Vim immediately. Could work with local files but |
| 3590 | also over the internet. See http://www.codingmonkeys.de/subethaedit/. |
| 3591 | |
| 3592 | |
| 3593 | vim:tw=78:sw=4:sts=4:ts=8:ft=help:norl: |
| 3594 | vim: set fo+=n : |