home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / vim45os2.zip / vim-4.5 / todo < prev    next >
Text File  |  1996-10-15  |  45KB  |  794 lines

  1. Known problems and priority improvements:
  2.  
  3. Small problems:
  4. - When trying to recover a file, when 'shell' is ksh version "PD KSH v4.9
  5.   93/09/29", this fails because the shell crashes (not a Vim problem).
  6.   Try recovering by giving the swap file name: "vim -r file.swp".
  7. - CTRL-F at the end of the file, when 'so' is set, redraws twice.  When the
  8.   window is small (< 2 * 'so') it behaves differently.
  9. - CTRL-E and CTRL-Y in a small windows, with 'so' set, sometimes doesn't
  10.   scroll, because getting the context scrolls the screen back.
  11. - in configure, put termlib before termcap?
  12. - tilde_replace() can only handle "~/", should also do "~user/".
  13. - "1000ii<Esc>" takes an awful long time.
  14. - If writing to the swap file fails, should try to open one in another
  15.   directory from 'dir'.  Useful in case the file system is full.
  16. - ":wall|make", when writing something, ":!make" echo does not have a CRLF
  17.   before it.
  18. - There are often a few <CR> on a row sent to the screen, should not be
  19.   necessary.
  20. - Text is scrolled up and down: (Acevedo)
  21.    - set scrolloff to something >1 (i always use "set so=4")
  22.    - set the win. hegiht to scrolloff + 1  (i'd do ^W5_)
  23.    - load a file with scrolloff + 2 lines
  24.    - put the cursor in line scrolloff +1  (5G)
  25.    - if you move the cursor along the line (h, l, insert text, etc)
  26.      the text is crolled with each keystroke (once up, once down,...)
  27.      sometimes with <Esc> the text is scrolled up and down whitout stop!!!!
  28.  
  29. Vi incompatibility:
  30. - CTRL-T in insert mode inserts 'shiftwidth' of spaces at the cursor.
  31. - CTRL-L is not the end of a section?  It is for Posix!  Make it an option.
  32. - "0;/pat" starts searching in line 2 instead of line 1.
  33. - "z3<CR>" should still use the whole window, but only redisplay 3 lines.
  34. - After ":cd", meaning of file names for existing buffers changes.
  35.  
  36. GUI:
  37. - Motif: Scrollbar for cmdline disappears with ":set go=", ":set go=lbrm".
  38. - Motif: Tear-off menu item "----------" crashes Vim on some machines.
  39.   (Netherton)  It works fine for me, maybe it's a Motif problem.
  40. - When font shape changes, but not the size, doing ":set font=" does not
  41.   redraw the screen with the new font.
  42. - Horizontal scrollbar doesn't work in rightleft mode.
  43. - Pasting in Replace mode insert the text, instead of overwriting.
  44.  
  45. MSDOS:
  46. - Hitting CTRL-P twice quickly (e.g. in keyword completion) on a 8088 machine,
  47.   starts printer echo! (John Mullin).
  48.  
  49. Windows 95:
  50. - When 'lines' is set in _vimrc or columns is not 80, executing external
  51.   commands sometimes hangs or crashes Vim or the PC.  This is a Windows 95
  52.   problem.
  53. - There is an occasional lockup when repeating a key while scrolling.  Vim
  54.   unlocks when resizing the window.  Might be a Windows 95 problem.
  55. - Dead keys don't work properly with Windows 95.  Not really a Vim problem,
  56.   but it should work.  It's difficult to fix...
  57. - Screen updating is slow with Windows 95 (compared to 16 bit version, DJGPP
  58.   version is in between).  It becomes fast when 'lines' or 'columns' is set to
  59.   a non-standard value!!!
  60. - Editing a file by it's short file name and writing it, makes the long file
  61.   name disappear.
  62.  
  63. AIX 4:
  64. - After running Vim tty setting "cs8" is not restored, it becomes "cs5".  This
  65.   causes 8 bit characters to loose their 8th bit.  Only with AIX 4, AIX 3 is
  66.   fine. (Albayrak)
  67.  
  68. hpterm: Highlighting isn't always correct.  Could use 'weirdinvert', but that
  69.     slows down screen updating too much.
  70.  
  71. I can't reproduce these:
  72.  
  73. With backupdir=~/tmp,/tmp nowritebackup nobackup patchmode=.smr 
  74.     and the patchmode file exists, backup files in the tmp directory are left
  75.     lying around - they should be deleted! (Riehm)
  76.  
  77. [These have been reported for version 3.0, they may not appear in this version]
  78. Some terminals start inverting at the position where the invert code is put.
  79.     This is not handled correctly. Remove 'weirdinvert' hack.
  80. On Diamond Viper 132x43 mode crash on exit (John Lange)
  81. MSDOS: After writing on a network the 'w' bit for others is set.
  82.  
  83.  
  84. Documentation:
  85.  
  86. Give names to some messages, e.g. hit-return, file (buffer?) message, etc. Use
  87.     the same name everywhere.
  88. Autocommand example: use ":retab! 4" when reading, ":retab! 8" when writing.
  89. Replace "toggle" with "boolean" for options?
  90. Make a few sample menu sets (.gvimrc files) for novice vi users, novice Vim
  91.     users, C programmers, ...
  92.  
  93.  
  94. Problems that will probably not be solved:
  95.  
  96. Problem with HPterm under X: old contents of window is lost (Cosentino).
  97. Amiga: When using quickfix with the Manx compiler we only get the first 25
  98.     errors. How do we get the rest?
  99. Amiga: The ":cq" command does not always abort the Manx compiler. Why?
  100. Linux: A file with protection r--rw-rw- is seen readonly for others. The
  101.     access() function in GNU libc is probably wrong.
  102. MSDOS: When using smardrive with write-back buffering, writing to a readonly
  103.     floppy will cause problems. How to test for writable floppy first?
  104. When doing a CTRL-Z and typing a command for the shell, while Vim is busy
  105.     (e.g. writing a file), the command for the shell is sometimes eaten by
  106.     Vim, because the terminal mode is changed from RAW to CBREAK.
  107.  
  108.  
  109. Main changes for version 5.0:
  110. - The last few big things for Vi compatibility (Ex mode, "Q", ":append")
  111. - Syntax coloring/highlighting, configurable for different languages.
  112. - Add scripting language support (probably Perl).
  113. - GUI version for Windows (3.1/95/NT).
  114. - VINE (Vim Is Not Emacs): Keep it small!
  115.  
  116.  
  117. Further extentions and improvements:
  118.  
  119. GUI stuff (see ":help gui_todo").
  120.  
  121. POSIX compatible mode?
  122. Make "5dd" on last-but-one-line not delete anything (vi compatible).
  123.     Change cursor_down()???  Many other commands will change too: "5j", "c5j",
  124.     etc.  Add flag in 'cpoptions'?
  125. CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the
  126.     current buffer.
  127. Include variation on text objects, without the white space (e.g. "vp" only
  128.     selects the paragraph, not the following empty lines).
  129. Searching: "/this//that/" should find "that" after "this".
  130.     ":/this//that/" should find "that" after "this", this being one address.
  131. incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern
  132.     isn't updated).
  133. Disallow setting the 'shell', 'makeprg', 'formatprg' or 'keywordprg' options
  134.     in a modeline???  Also 'secure' and 'exrc' should be forbidden.
  135. Multiple tags: CTRL-] again jumps to next tag?
  136. Add flag in 'cpoptions' that makes <BS> after a count work like <Del> (Sayre).
  137. Add flag in 'cpoptions' that makes operator (yank, filter) not move the
  138.     cursor, at least when canceled. (default vi compatible).
  139. MSDOS: Support the use of "~" for $HOME.  Expand $VAR in file names.
  140. Search commands in a tags file: Allow optional "e", "b" and "s" flags to
  141.     position the cursor in the right column.
  142. findmatchlimit() should be able to skip comments.
  143. Add redirecting of Ex commands.  Add a command to dump all the settings,
  144.     mappings, autocommands, etc. in a file, to be included in a bug report.
  145. Using a tags file relative to the current file, and 'tags' contains
  146.     "./../tags", the file name becomes "/path/dir/a/../b/file.c".  Should
  147.     remove the ".." from the name of the tags file.  Should not always use
  148.     absolute path. (Hiebert)
  149. Detect textmode after executing the autocommands, otherwise the .gz
  150.     autocommands don't work for MS-DOS.  Needs to be able to remove the ^Ms at
  151.     the end of each line.  Alternative: don't use a filter command, write the
  152.     file, gunzip, set nobin, delete the lines, read the file.
  153. When hitting <Esc> or CTRL-C in Normal mode, give a message to help novice
  154.     users to get out: "Type  :q!  to quit Vim".
  155. "6x" at end of line should not break a mapping (vi compatible).
  156.     "6X" at start of line should beep, but not break a mapping (vi compatible).
  157.     But "6hll" at start of line does break!
  158. Add :delcr command:
  159.                             *:delcr*
  160.     :[range]delcr[!]    Check [range] lines (default: whole buffer) for lines
  161.             ending in <CR>.  If all lines end in <CR>, or [!] is
  162.             used, remove the <CR> at the end of lines in [range].
  163.             A CTRL-Z at the end of the file is removed.
  164.             If [range] is omitted, or it is the whole file, and
  165.             all lines end in <CR> 'textmode' is set.  {not in Vi}
  166. Should integrate addstar() and file_pat_to_reg_pat().
  167. Make it possible to enter a digraph after "r" (with CTRL-K).
  168. Autoconf: Use @datadir@ for the system independent files.  Make sure the
  169.     system dependend and system independed files are separated. (Leitner).
  170. When working over a serial line with 7 bit characters, remove meta characters
  171.     from 'isprint'.
  172. Change 'smarttab' into an option to make <Tab> always insert 'shiftwidth'
  173.     characters?  Better: behave like 'ts' is 'shiftwidth', but write files
  174.     like 'ts' is 8.
  175.     Alternative: Add 'softtab': Possibility to keep 'ts' at 8 and insert
  176.     'softtab' characters when <Tab> is hit.
  177. MSDOS: look for .vimrc, helpfile and .viminfo in argv0 dir. (Ferenc)
  178. Add autoconf check for waitpid()/wait4().
  179. Add autoconf check for library path "/usr/lib" and remove it (like for
  180.     /usr/include).
  181. Always output <CR><NL> to the screen, never just <NL>. (Olaf Seibert)
  182. Option to make all swap file names start with ".", to make them hidden
  183.     (Grundman).
  184. Use fchdir() in init_homedir(), like in FullName().
  185. In win_update(), when the GUI is active, always use the scrolling area.  Avoid
  186.     that the last status line is deleted and needs to be redrawn.
  187. Vi compatibility (optional): make "ia<CR><ESC>10." do the same strange thing.
  188.     (only repeat insert for the first line).
  189. Make marks present in .viminfo usable as file marks: Display a list of "last
  190.     visited files" and select one to jump to.
  191. Add ":echo" command, display a message.
  192. Include turbo_loader patches, speeding up reading a file.
  193. Include regexp {n,m} patches/webb.regexp.
  194. Change request: "/^$\|the" finds both empty lines and "the", but "/the\|^$"
  195.     doesn't.  Make '^' after "\|" also a special character?
  196. Call maketitle() whenever curbuf->b_changed is set or reset, and include
  197.     "Vim +" in the title for changed buffers.  How about the icon?
  198. Add events to autocommands:?
  199.     normalenter  - Entering normal mode.
  200.     insertenter  - Entering insert mode.
  201.     replaceenter - Entering replace mode.
  202.     cmdenter     - Entering cmdline mode.
  203.     visualenter  - Entering visual mode.
  204. Give better error messages by using errno (strerror()).
  205. Add 'sidescrolloff' option, like 'scrolloff' for sideways scrolling.
  206. Make 'restorescreen' option also work for xterm (and others), replaces the
  207.     SAVE_XTERM_SCREEN define.
  208. When 'wrap' is off, add commands to scroll screen left/right by half the
  209.     screen width: "zH" and "zL"?
  210. Include an option (or flag to 'cpoptions') that makes errors in mappings not
  211.     flush the rest of the mapping (like nvi does).
  212. Implement a "sticky" help window, some help text lines that are always
  213.     displayed in a window with fixed height. (Guckes)  Use "~/.vimhelp" file,
  214.     user can edit it to insert his favorite commands, new account can contain
  215.     a default contents.
  216. 'path' can become very long, don't use NameBuff for expansion.
  217. Avoid calls to plines() for cursor line, use w_cline_height.
  218. Give warning message when using ":set t_xx=asdf" for a termcap code that Vim
  219.     doesn't know about.  Add flag in 'shortmess'?
  220. Remove fcntl() from autoconf, all systems have it?
  221. Add command to reset ALL options to their default value: ":set all&".
  222. Make it possible to redo all the commands from a mapping with "."!!!
  223. Make it possible to undo all the commands from a mapping, including a trailing
  224.     unfinished command, e.g. for ":map K iX^[r".
  225. Add ":che <file>", list all the include paths which lead to this file.
  226. "-V" command line argument: Verbose, show which .vimrc, .exrc, .viminfo files
  227.     etc. are used for initializing.
  228. For a commandline that has several commands (:s, :d, etc.) summarize the
  229.     changes all together instead of for each command (e.g. for the rot13 macro).
  230. Add command like "[I" that also shows the tree of included files.
  231. "[p" and "]p" should use 'cindent' code if it's on (only for the first line).
  232. ":set sm^L" results in ":set s", because short names of options are also
  233.     expanded.  Is there a better way to do this?
  234. Set default for 'dictionary', add search for dictionary to autoconf.
  235. Add 'wildlongest' option: Key to use to find longest common match for command
  236.     line completion (default CTRL-L), like 'wildchar'. (Cregut)
  237.     Also: when there are several matches, show them line a CTRL-D.
  238. Add command line completion for '%' and '#'.
  239. Add ":@!" command, to ":@" like what ":source!" is to ":source".
  240. Should be possible to write to a device, e.g. ":w! /dev/null".
  241. Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty.
  242. Improve 'cindent'
  243. - formatting of struct/array inits:
  244.     - The lines used to initialise the struct or array above should
  245.       not be considered 'continuation' lines just because the previous one
  246.       does not end with ';'.  If you go back line by line I think it should be
  247.       possible to tell the difference.  If you find a line that ends in ';',
  248.       then it's OK to have continuation lines.  If you find a "{", and the
  249.       character before it (not counting space & comments) is either ',' or
  250.       '=', then there should not be continuation lines.  If the character
  251.       before the "{" is another "{", then you have to check before that one
  252.       too.
  253. - When 'cindent'ing a '}', showmatch is done before fixing the indent.  It
  254.     looks better when the indent is fixed before the showmatch. (Webb)
  255.  
  256. ":cab map test ^V| je", ":cunab map" doesn't work.  This is vi compatible!
  257. Add command to remove (all) digraphs. (Brown)
  258. Make it possible to toggle 'paste' in Insert mode.
  259. Make 'paste' work without resetting other options, but override their value.
  260.     Avoids problems when changing files and modelines or autocommands are used.
  261. Include option to switch shell off, for secure version (impossible to switch
  262.     on again).
  263. For visual mode: Command to do a search for the string in the marked area. Only
  264.     when less than two lines. Use "g/" and "g?".
  265. Add "K" command in visual mode: use Visual text for keyword program.
  266. CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down if
  267.     it is not the first or last window.
  268. Include-file-search commands should look in the loaded buffer of a file (if
  269.     there is one) instead of the file itself.
  270. Make 'lisp' code more vi compatible.
  271. Add 'complete' option: Which completion to be done for CTRL-N/CTRL-P in insert
  272.     mode: 'w' for other windows, 'b' for other buffers, 'd' for dictionaries
  273.     (Webb).
  274. Add CTRL-A command in CTRL-X mode: show all matches.
  275. CTRL-X CTRL-F: Use 'path' to find completions.
  276. Add command in CTRL-X mode to add following words to the completed string
  277.     (e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W)
  278. CTRL-A command: When there are leading zeros, don't use the number as octal
  279.     (with an option?).
  280. "g CTRL-A" and "g CTRL-X": Increment/decrement alphabetical char (a -> b -> c)?
  281. Add ":setenv" command: set environment variable.
  282. Add possibility for file name on the command line to be searched for in the
  283.     'path',  when there is a special character before the file name ('<' ?).
  284. Allow the use of wildcards in 'path'.
  285. Add possibility in 'path' to define the top of a tree to be searched, e.g.
  286.     ":set path=.,/usr/include,~/include/**".
  287. When unhiding a hidden buffer, put the same line at top of the window as the
  288.     one before hiding it. Or: keep the same relative cursor position (so
  289.     many percent down the windows).
  290. File name put into swap file should have first part of the path replaced by
  291.     "~user", also when editing a file in somebody else his home directory,
  292.     to make it work from different machines (Webb).
  293. When entering the help window, don't resize to 'helpheight' if the user has
  294.     reduced the size before (Webb). Keep the window height that the user set
  295.     the window to in a "preferred window height" entry for each window.
  296. "i" flag to search command: ignore case; "u" flag: use case.
  297. Add flag to search command to not remember it for "n", e.g. "/foo/n" (not
  298.     remember). Also for ":s/pat//n".
  299. Add command to display the current search pattern, substitue pattern and last
  300.     used pattern. (Margo)
  301. Add a command like ":cn" that jumps to the next error, but uses an open window
  302.     for the buffer with the error if possible, and opens a new window
  303.     otherwise. Use ":cj"?
  304. When in replace mode and 'expandtab' set, make tab look like spaces.
  305. When started to edit another file, make message "file 1 of 8" different (add
  306.     "not"?).
  307. When stdin is not a tty, and Vim reads commands from it, an error should make
  308.     Vim exit.
  309. Allow file name "-" as command line argument: Read file from stdin. Open
  310.     /dev/tty for commands (use "more" "vi" or "vile" as an example how to
  311.     do this).
  312. Make it possible for the 'showbreak' to be displayed at the end of the line.
  313.     Use a comma to separate the part at the end and the start of the line?
  314.     Highlight the linebreak characters, add flag in 'highlight'.
  315. Some string options should be expanded if they have wildcards, e.g.
  316.     'dictionary' when it is "*.h".
  317. Use a specific type for number and boolean options, making it possible to
  318.     change it for specific machines (e.g. when a long is 64 bit).
  319. Use context sensitiveness of completion to switch abbreviations and mappings
  320.     off for :unab and :unmap.
  321. completion of existing mappings for ":unmap", ":unab", etc.
  322. Local mappings for a buffer. Useful for autocmds. Count for map command is
  323.     buffer number. ":0map bar foo" = enter mapping for current buffer.
  324. Add option for <Insert> in replace mode going to normal mode. (Nugent)
  325. Add mappings for replace mode: ":rmap".  How do we then enter mappings for
  326.     non-replace insert mode?
  327. When incsearch used and hitting return, no need to search again in many cases,
  328.     saves a lot of time in big files.
  329. With incsearch, use CTRL-N/CTRL-P to go to next/previous match, some other key
  330.     to copy matched word to search pattern (Alexander Schmid).
  331. Add a next/previous possibility to "[^I" and friends. Also for multiple
  332.     matches in the tags file.
  333. When doing "[^I" or "[^D" add position to tag stack.
  334. Add command to put current position to tag stack: ":push" or "gp".
  335. Add command to put all filenames from the tag files in the argument list. When
  336.     given an argument, only use the files where that argument matches
  337.     (like `grep -l ident`) and jump to the first match.
  338. Add ":grep" command. Works like ":make" but uses "grep -n" instead of "make",
  339.     'grepprg' instead of 'makeprg', 'grepformat' instead of 'errorformat'.
  340. Add global search commands: Instead of wrapping at the end of the buffer,
  341.     they continue in another buffer. Use flag after search pattern: "a"
  342.     for the next file in the argument list, "f" for file in the buffer
  343.     list, "w" for file edited in a window. e.g. "/pat/f". Then "n" and "N"
  344.     work through files too. "f" flag also for ":s/pat/foo/f"??? Then when
  345.     'autowrite' and 'hidden' are both not set, ask before saving files:
  346.     "Save modified buffer "/path/file"? (Yes/Hide/No
  347.     Save-all/hide-All/Quit) ".
  348. Add command to form an args list from all the buffers.
  349. Keep a list of most recently used files for each window, use "gp" to go back
  350.     and "gn" to go forward (like ^O and ^I for jumps) (Webb). Use ":files"
  351.     and ":ls" to list the files in history order.
  352. Add 'scrollmax' option, maximum number of lines to scroll display, above this
  353.     a redraw is done.
  354. Add ":alias" command, like ":cmap" or ":cabb", but only for the command name
  355.     and it isn't displayed.
  356. Implement mouse support for the Amiga.
  357. xterm: Implement support for visual feedback of mouse dragging.
  358. Using right mouse button to extend a blockwise selection should attach to the
  359.     nearest corner of the rectangle (four possible corners).
  360. Precede mouse click by a number to simulate double clicks?!?
  361. Change ":fixdel" into option 'fixdel', t_del will be adjusted each time t_bs
  362.     is set? (Webb)
  363. "gc": goto character, move absolute character positions forward, also counting
  364.     newlines. "gC" goes backwards, "g^C" goes to absolute position
  365.     (Weigert).
  366. When doing CTRL-^, redraw buffer with the same topline (Demirel). Store cursor
  367.     row and window height to redraw cursor at same percentage of window
  368.     (Webb).
  369. Besides remembering the last used line number of a file, also remember the
  370.     column. Use it with CTRL-^ et. al.
  371. When a window resizes, the line with the cursor should stay at the same
  372.     percentage from the start of the window as it was before.
  373. Check for non-digits when setting a number option (careful when entering
  374.     hex codes like 0xff).
  375. Add option to make "." redo the "@r" command, instead of the last command
  376.     executed by it.  Also an option to make "." redo the whole mapping.
  377.     Basically: redo the last TYPED command.
  378. Support URL links for ^X^F in insert mode, like for "gf".
  379. ":help :s^I" should expand to ":help :substitute".
  380. Highlight control characters on the screen: Shows the difference between 
  381.     CTRL-X and "^" followed by "X" (Colon).
  382. Amiga: Need terminal input for quickfix, how do we read commands from stdin?
  383. Integrate parsing of cmdline command and parsing for expansion.
  384. When inserting a register in insert mode with CTRL-R, don't insert comment
  385.     leader when line wraps?
  386. 'flipcase' variable: upper/lower case pairs. (alternative: translate command,
  387.     e.g. ":tr \248-\254 \216-\222") (From Elvis, don't like it). Insert
  388.     comma's between pairs and allow a range, e.g. :set flipcase=a-zA-Z,..
  389. Make the help key (<F1>) context sensitive?
  390. Create a program that can translate a .swp file from any machine into a form
  391.     usable by Vim on the current machine.
  392. Add commands to push and pop all or individual options. ":setpush tw",
  393.     ":setpop tw", ":setpush all".  ":setflush" resets the option stack.
  394. Add ":highlight" command to set highlight modes and colors (Webb).
  395. Have a look at Elvis and Vile's highlighting methods. Also look at
  396.     vgrind/vgrindefs.
  397. Add option to switch on highlighting all matches from a search that are on the
  398.     screen.  Unhighlight as soon as a command is given.
  399. Add "." command for visual mode: redo last visual command (e.g. ":fmt").
  400. Add "." command after operator: repeat last command of same operator. E.g.
  401.     "c." will repeat last change, also when "x" used since then (Webb).
  402.     Also: keep history of Normal mode commands, add command to list the
  403.     history and/or pick an older command.
  404.     Also: add ":history" command for command lines and search patterns.
  405. Add support for both <M-^A> and <~A> in mappings.
  406. Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have a
  407.     readonly file. ":noro!" will reset all 'ro' flags.
  408. Make repeating insert faster. Don't redisplay the screen.
  409. Add "KeyWasTyped" flag: It's reset before each command and set when a
  410.     character from the keyboard is consumed. Value is used to decide to
  411.     put a command line in history or not. Put line in history if it didn't
  412.     completely resulted from one mapping.
  413. Add a variant of CTRL-V that stops interpretation of more than one character.
  414.     For entering mappings on the command line where a key contains several
  415.     special characters, e.g. a trailing newline.
  416. The ":@r" commands should take a range and execute the register for each line
  417.     in the range.
  418. Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine the
  419.     two into a regex for searching. (Ned Konz)
  420. When selecting in visual block mode, use curswant instead of cursor column.
  421.     (Webb 97) adjust 'o' command etc.
  422. When in blockwise visual selection (CTRL-V), allow cursor to be placed
  423.     right of the line. Could also allow cursor to be placed anywhere on a
  424.     TAB or other special character.
  425. Support the "abbreviate" command in modelines (Kearns).  Careful for
  426.     characters after <Esc>, that is a security leak.
  427. Make it possible to set options from modelines only temporarily for that file
  428.     (needs a stack for saving old options).
  429. Make '2' option in 'formatoptions' also work inside comments.
  430. Consider adding patches/list_indent (indenting for bullet lists).
  431. When formatting a comment after some text, insert the '*' for the new line
  432.     (indent is correct if 'cindent' is set, but '*' doesn't get inserted).
  433. Make smartindenting configurable. Add 'sioptions', e.g. '#' setting the indent
  434.     to 0 should be switched on/off.
  435. For smart indent: When typing 'else' line it up with matching 'if'.
  436. Add commands ":C", ":P" and ":X". ":C" does encryption and ":P" the same as
  437.     ":p". What should they do exactly?
  438. When window size changed (with the mouse) and made too small, set it back to
  439.     the minimal size.
  440. Add "]>" and "[<", shift comment at end of line (command;  /* comment */).
  441. Add 'mapstop' command, to stop recursive mappings.
  442. Should not call cursorcmd() for each vgetc() in getcmdline().
  443. Add the ex address '}', next empty line (like the "}" command).
  444. Add command line completion for ":ilist" and friends, show matching
  445.     identifiers (Webb).
  446. When switching to another file and screen scrolls because of the long message
  447.     and return must be typed, don't scroll the screen back before redrawing.
  448. For u_save() include the column number. This can be used to set '[ and ']. And
  449.     in the future the undo can be made more efficient (Webb).
  450. ":split file1 file2" adds two more windows (Webb).
  451. Add the possibility to use more than one argument list: ":arglist 2".
  452. Add command to show last search pattern and substitute string. Maybe make it
  453.     accessible through a register ("/ for search string)?
  454. When mouse click after 'r' command, get character that was pointed to.
  455. For duplicate tags: Add commands ":ntag", "Ntag", ":prevtag", ":rewtag",
  456.     :lasttag". Make CTRL-D listing of matching tags more informative. Keep
  457.     count for tag index in the tag stack, so CTRL-T and :ta work.
  458. Don't give message "Incomplete last line" when editing binary file.
  459. When writing a file, name it "foo.new". Then rename "foo" to "foo.bak" and
  460.     "foo.new" to "foo". If dir is not writable or on write error copy
  461.     "foo" to "backupdir/foo.bak" and overwrite "foo". Check for correct
  462.     group/owner and try to set it if not. NO: this breaks with hard links.
  463.     INSTEAD: make Amiga and MSDOS work like unix: first make copy of file,
  464.     then truncate and overwrite original file. Use an option for this,
  465.     default on for Unix, off for Amiga/MSDOS (Sayre has the algorithm
  466.     worked out).
  467. When appending to a file, should Vim also make a backup and a 'patchmode'
  468.     file?
  469. Only make a backup when overwriting a file for the first time. Avoids loosing
  470.     the original when writing twice. (Slootman)
  471. On non-Unix machines, also overwrite the original file in some situations
  472.     (file system full, it's a link on an NFS partition).
  473. Add number option to ":s//2": replace second occurance of string? Or:
  474.     :s///N substitutes N times.
  475. Add ":a", ":i" for preloading of named buffers.
  476. In Replace mode, tab replaces as many characters as it takes on the screen,
  477.     text remains at the same position. Requires replace-stack to work with
  478.     strings instead of characters? Implement 'replacealign' in a different
  479.     way from Webb.
  480. Allow autowrite when doing ":e file" (with an option 'eaw').
  481. Make command line arguments options to be combined after a single dash, eg
  482.     "-nb".
  483. Allow a "+command" argument before each file name in the Vim command line:
  484.     "vim +123 file1 +234 file2 +345 file3".
  485. When entering text, keep other windows on same buffer updated (when a line
  486.     entered)?
  487. Bind windows together, scrolling is done in both windows synchronous
  488.     (horizontally and vertically). Use CTRL-W b?
  489. Change ".swp" to ".vim", because it give a hint who created the file?
  490. Use termcap 'ts' and 'fs' entries for setting the window title. Check 'hs'
  491.     and use minimum of 'ws' (if present) and Columns to truncate the title.
  492. In dosub() regexec is called twice for the same line. Try to avoid this.
  493. When line is too long to fit on screen, display part where cursor is (like
  494.     nvi). Use an offset to the start of the first line on the screen.
  495. Window updating from memline.c: insert/delete/replace line.
  496. Optimize ml_append() for speed, esp. for reading a file.
  497. V..c should keep indent when 'ai' is set, just like <count>cc.
  498. :s///p prints the line after a substitution.
  499. Updatescript() can be done faster with a string instead of a char.
  500. When searching with 'n' give message when getting back where the search first
  501.     started. Remember start of search in '/ mark.
  502. Add option that scrolls screen to put cursor in middle of screen after search.
  503. Add \! to search patterns: matches string that does not match previous atom.
  504. Screen updating is inefficient with CTRL-F and CTRL-B when there are long lines.
  505. Uppercase characters in ex commands can be made lowercase?
  506. Filtering a block should only apply to the block, not to the whole lines. When
  507.     the number of lines is increased, add lines. When decreased, padd with
  508.     spaces or delete? Use ":`<,`>" on the command line.
  509. CTRL-V :s should substitute only in the block.
  510. CTRL-V > should move the block, not whole lines.
  511. Add commands to move selected text, without deselecting.
  512. Add visual command to swap selected text with unnamed buffer.
  513. Add "P" command to insert contents of unnamed buffer, move selected text to
  514.     position of previous deleted (to swap foo and bar in " + foo")
  515. In out-of-memory situations: Free allocated space in undo (after asking).
  516. When memory gets low, reduce the number of undo levels (with confirmation).
  517. Insert octal numbers with CTRL-V o, hexadecimal with CTRL-V x and binary
  518.     with CTRL-V b.
  519. List mappings that have a raw escape sequence both with the name of the key
  520.     for that escape sequence (if there is one) and the sequence itself.
  521. List mappings: Once with special keys listed as <>, once with meta chars as
  522.     <M-a>, once with the byte values (octal?). Sort of "spell mapping"
  523.     command?
  524. When entering mappings: Add the possibility to enter meta keys like they are
  525.     displayed, within <>: <M-a>, <~@> or <|a>.
  526. Add option to show character value under the cursor in octal, decimal, hex and
  527.     screen code all the time (like 'ruler' plus "g CTRL-G").
  528. Add option to show characters in text not as "|A" but as decimal ("^129"), hex
  529.     ("\x81") or octal ("\201") or meta (M-x).
  530. How does vi detect whether a filter has messed up the screen? Check source.
  531.     After ":w !command" a wait_return?
  532. Improve screen updating code for doput() (use s_ins()).
  533. With 'p' command on last line: scroll screen up (also for terminals without
  534.     insert line command).
  535. Amiga: ExpandWildCards in amiga.c: don't expand if there are no wildcards.
  536. unix: Speedup wildcard expansion of "*", "~" and "$": do it internally, more
  537.     complicated things can still be done with the shell.
  538. In regexp.c: "\^" after "\|" or "\(" is start of line, and "\$" before "\|"
  539.     and "\)" is end of line.
  540. Option to set time for emsg() sleep. Interrupt sleep when key is typed? sleep
  541.     before second message?
  542. Delete message after new command has been entered and have waited for key.
  543. History stack for . command? Use "g." command.
  544. Use insert/delete char when terminal supports it.
  545. With undo with simple line delete/insert: optimize screen updating.
  546. Optimize screen redraw for slow terminals.
  547. Add "-d null" for editing from a script file without displaying.
  548. MSDOS: search for _exrc in the directory where the binary is, instead
  549.     of using $VIM\_exrc.
  550. In insert mode: Remember the characters that were removed with backspace and
  551.     re-insert them one at a time with <key1>, all together with <key2>.
  552. Amiga: Add possibility to set a keymap. The code in amiga.c does not work yet.
  553. Implement 'redraw' option.
  554. Add possibility to put the value of an option into the text: "'lines'p
  555. Unix: WildExpand: Without csh file name with embedded space will be split in
  556.     two.
  557. With wildcard expansion after '%' and '#', expand current/alternate file name,
  558.     so it can be edited.
  559. Add special code to 'sections' option to define something else but '{' or '}'
  560.     as the start of a section (e.g. one shiftwidth to the right).
  561. Nopaste option: Mappings with non-printable characters are OK.
  562. Add 'indent' option: Always use this amount of indent when starting a new line
  563.     and when formatting text.
  564. Use pipes for filtering on Unix.
  565. Allow for +command and -option on any position in argv[].
  566. Add commands like ]] and [[ that do not include the line jumped to.
  567. When :unab without matching "from" part and several matching "to" parts,
  568.     delete the entry that was used last, instead of the first in the list.
  569. After :set nowrap remove superflous redraw with wrong hor. offset if cursor
  570.     is right of the screen.
  571. Recognize "$*" in 'makeprg'; replace it by the arguments to :make.
  572. Allow multiple arguments to :unmap.
  573. With :s///c replace \&, ~, etc. when showing the replacement pattern.
  574. In insert mode add # for CTRL-R  (alternate filename).
  575. Command line: cursor up on empty line: go to previous command, on non-empty
  576.     line: go to previous matching command.
  577. Add text justification option.
  578. When the edited file is a symlink, try to put the .swp file in the same dir as
  579.     the actual file. Adjust FullName().
  580. Add put function that replaces the text under it.
  581. After "inv"ing an option show the value: ":set invpaste" gives "paste is off".
  582. Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR.
  583. When a file cannot be opened but does exist, give error message.
  584. Amiga: When 'r' protection bit is not set, file can still be opened
  585.     but gives read errors. Check protection before opening.
  586. When writing check for file exists but no permission, "Permission denied".
  587. If file does not exists, check if directory exists.
  588. MSDOS: although t_cv and t_ci are not set, do invert char under cursor.
  589. Settings edit mode: make file with ":set opt=xx", edit it, parse it as
  590.     ex commands.
  591. ":set -w all": list one option per line.
  592. When writing to a not writable file (with ":w!") ask for permission to
  593.     overwrite it (if file can be made writable) and restore file to readonly
  594.     afterwards.
  595. Amiga: test for 'w' flag when reading a file.
  596. Error message for ambiguous mapping: Include the arguments.
  597. :table command (Webb)
  598. Add command to go to last non-blank in line (like 0 vs. ^, $ vs. ???)
  599. With blockwise visual mode and "c" command, insert same text in every line.
  600.     With "r" replace all chars in visual area witht the next char. With
  601.     "C" replace each line with entered text (go to next line with <CR>).
  602.     With "i" insert the same text in front of the block in each line.
  603. Add new operator: clear, make area white (replace with spaces): "gb".
  604. For 'shell' option add possibility to give arguments for fast start (e.g. -f).
  605.     Not to be used for ":shell".
  606. Make ":sleep" accept floating point numbers, like ":sleep 0.01".
  607. Support multiple search buffers, so macros can be made without side effects.
  608. On the command line, where a % is expanded: "%:s/r/s/" substitution (Dixon)
  609.     patches/dixon.329
  610. Add command to ":read" a file at a certain column (blockwise read?).
  611. Include several sets of options. Make settings from modelines valid only in
  612.     the file where they were set, reset when exiting that file.
  613. Add option to set the characters for "%", 'matchpairs', default "{,};(,)".
  614.     Could set to "{,};(,);/*,*/;<,>". Or 'matchstrings' =
  615.     (/*,*/),(^#if,^#else,^#endif).  Also: set hierarchy for which things
  616.     include other things that should be ignored (like "*/" inside /* */).
  617. Add 'resizecmd' option: vi command to be executed when window is resized.
  618. Add sort of replace mode where case is taken from the old text (Goldfarb).
  619. When 'backup' is not set and 'writebackup is set, use a unique name for the
  620.     backup file, don't deleted the ".bak" file.
  621. Allow multiple arguments for ":edit", add them to the argument list.
  622. Allow multiple arguments for ":read", read all the files.
  623. Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel).
  624. Add 'searchdir' option: Directories to search for file name being
  625.     edited (Demirel).
  626. Modifier for the put command: Change to linewise, charwise, blockwise, etc.
  627. Add commands for saving and restoring options ":set save" "set restore", for
  628.     use in macro's and the like.
  629. Add possibility to ":jumps" to show the text in the line (for loaded files).
  630.     Only show the part of the line that fits in the current screen width and
  631.     contains the mark.  Highlight the column with the mark.  Show
  632.     "<not loaded>" for not loaded buffers.  Also for ":tags" and ":marks".
  633. Each swap file should include a flag that shows if the swapfile contains any
  634.     changes. Report this when giving the ATTENTION message.
  635. Add visual command to do rot13 encoding.
  636. Add option to set the number of lines when not to scroll, instead of the fixed
  637.     number used now (for terminals that scroll slow with a large number of
  638.     lines but not with a single line).
  639. Keep output from listings in a window, so you can have a look at it while
  640.     working in another window. Put cmdline in a separate window?
  641. Add possibility to put output of ex commands in a buffer or file, e.g. for
  642.     ":set all".  ":r :set all"?
  643. Allow any character except white space in abbreviations lhs (Riehm).
  644. 'edit' option: When off changing the buffer is not possible (Really read-only
  645.     mode).
  646. Allow multiple arguments to ":stag", make one window for each.
  647. When the 'equalalways' option is set, creating a new window should not result
  648.     in windows to become bigger. Deleting a window should not result in a
  649.     window to become smaller (Webb).
  650. When resizing the whole Vim window, the windows inside should be resized
  651.     proportionally (Webb).
  652. Include options directly in option table, no indirect pointers. Use mkopttab
  653.     to make option table?
  654. When doing ":w dir", where "dir" is a directory name, write the current file
  655.     into that directory, with the current file name (without the path)?
  656. Add command to go to Nth character in the file, "123g|"?
  657. Add an option to ":map" that makes it display the special keys in byte values
  658.     instead of <>.
  659. Command to show keys that are not used and available for mapping ":freekeys".
  660. Add a way to execute a mapping when entering a window (something like autocmd,
  661.     but always executed when entering another window).
  662. Allow completion with all words in the current AND the other opened buffers.
  663. Add 'echo' option: When off don't echo shell commands.
  664. Support for 'dictionary's that are sorted, makes access a lot faster
  665.     (Haritsis).
  666. Add "^Vrx" on the command line, replace with contents of register x. Used
  667.     instead of CTRL-R to make repeating possible. (Marinichev)
  668. Add "^Vb" on the command line, replace with word before or under the cursor?
  669. Add a command (for visual mode?) to capitalize the first letter of some words.
  670.     (Haritsis)
  671. In Insert mode (and command line editing?): Allow undo of CTRL-U (and CTRL-W,
  672.     delete and backspace) (Marinichev).
  673. Make contents of status line configurable, with a printf-like format string.
  674. Add include files for emacs-tags files (David Brown).
  675. Option to make a .swp file only when a change is made (Templeton).
  676. Make CTRL-C on Unix generate a signal, avoid using select() to check for a
  677.     CTRL-C (it's slow).
  678. Add "+=" and "-=" to option setting: add or remove parts of a string option,
  679.     add or subtract a number from a number option.  How do we insert in
  680.     front/at the end of a sting option?  Automatically add a comma?
  681. Support mapping for replace mode and "r" command (Vi doesn't do this)?
  682. Set boolean options on/off with ":set paste=off", ":set paste=on".
  683.  
  684. From Elvis:
  685. fontchanges recognized "\\fB" etc.
  686. :color command
  687. :if and friends, conditional statements
  688. Read .exfilerc when starting to edit a new file (can be used to load macros for
  689.     specific file type).
  690. Change cursor shape in command/insert mode. Use options t_cun (normal mode),
  691.     t_cuv (visual mode), t_cur (replace mode), t_cui (insert mode), t_cuc
  692.     (command line mode), t_cuq (back to standard cursor).
  693. Search patterns:
  694.     \{m,n\}     match at least m and at most n of preceding pattern.
  695.           \=        match empty string, leave cursor here.
  696.           \@        match word under cursor.
  697.     but do:
  698.     \{m,n\}        m to n matches. \{m\} is m matches, \{m,\} is at least m
  699.                 matches, \{,n\}: up to n matches.
  700.       \@        leave the cursor "at" this position
  701.           \w        match the word under the cursor
  702.       \W        match the WORD under the cursor.
  703.  
  704. From nvi:
  705. 'cdpath' option.
  706. Allow editing lines that do not fit in the window.
  707.  
  708. From xvim:
  709. Use '\' before commands to make them linewise.
  710. Allow a newline in search patterns (also for :s, can delete newline).
  711.     Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc.
  712.     [not in xvim:]
  713.     Use "\s" for "space" characters (like Perl): space, tab, newline, etc.
  714.     Add option to switch on matches crossing ONE line boundary.
  715. Add register for '?' and '/' commands? (yank_buf()).
  716. Remember last cursor position, optimize setcursor().
  717. Add :collapse, remove multiple blank lines (Demirel, Webb)?
  718.  
  719. From xvi:
  720. CTRL-_ : swap 8th bit of character
  721. Add egrep-like regex type, like xvi (Ned Konz)
  722.  
  723. From vile:
  724. Show unprintable characters in hex. (or in octal)
  725. When horizontal scrolling, use '<' and '>' for lines continuing outside of
  726.     window.
  727. Support putting .swp files in /tmp: Command in rc.local to move .swp files
  728.     from /tmp to some directory before deleting files.
  729.  
  730.  
  731. Far future extentions:
  732.  
  733. Make it possible to edit a register, in a window, like a buffer.
  734. Highlighting of different kinds of text (e.g. for showing variables, keywords).
  735. Mode to keep C-code formatted (sort of on-line indent). Use colors for
  736.     keywords, comments, etc.
  737. Add Ex mode (some people like to use it).
  738. Add macro language with real functions (Perl, TCL?).
  739. Allow vertical splitting of screen (once?).
  740. Option for filter when reading/writing a file for compression or crypting (-x
  741.     command line option, -z option: gzip/gunzip).  Also for crypting the
  742.     swap file. Support compression of documentation files.
  743. Allow editing beyond end of line, just like there are all spaces. Switch this
  744.     on with an option or special insert mode command. Also allow editing
  745.     above start and below end of buffer.
  746. When executing macro's: Save each line for undo only once.
  747. Make undo more memory-efficient: Compare text before and after change, only
  748.     remember the lines that really changed. When calling u_save with a
  749.     single line, don't save it if line is already saved for undo.
  750. When doing a global substitute, causing almost all lines to be changed, undo
  751.     info becomes very big. Put undo info in swap file??
  752. When inserting/deleting characters in a line, adjust marks.
  753. Smart cut/paste: recognize words and adjust spaces before/after them.
  754. Option verbose; when on keep the screen uptodate, when off only redisplay when
  755.     input needed. Also possible to use Vim from a shell script.
  756. Change the output to the message line. Don't redraw the screen until the next
  757.     vi command. Remember message line for redraw. Integrate the command line
  758.     in updateScreen().
  759. Mode to keep text formatted while inserting/deleting. Use soft/hard returns
  760.     with an option to switch this off.
  761. Korn-shell or tcsh like command line editing (like editing a single line with
  762.     vi). Use :cmap! for mappings. Can be implemented like a buffer containing
  763.     command lines. Use CTRL-O instead of <Esc>, to remain vi-compatible?
  764. Add column numbers to ":" commands ":line1,line2[col1,col2]cmd".  Block can be
  765.     selected with CTRL-V.  Allow '$' (end of line) for col2.
  766. Add 'hidecomment' option: don't display comments in /* */ and after //.
  767. Add open mode, use it when terminal has no cursor positioning.
  768. Special "drawing mode": a line is drawn where the cursor is moved to. Backspace
  769.     deletes along the line (from jvim).
  770. Add a command or option to save the current editing session (which files are
  771.     open, window sizes, file positions, etc.), so it can be resumed later.
  772. Perform commands on multiple windows (:W%s/foo/bar/g), multiple arguments (:A)
  773.     or multiple buffers (:B). Implement ":Bset", set option in all
  774.     buffers. Also ":Wset", set in all windows, ":Aset, set in all
  775.     arguments and ":Tset", set in all files mentioned in the tags file.
  776.     Add buffer/arg range, like in ":2,5B%s/..." (do we really need this???)
  777.     Add search string: "B/*.c/%s/.."?  Or ":F/*.c/%s/.."?
  778. Support for underlining (underscore-BS-char), bold (char-BS-char) and other
  779.     standout modes switched on/off with , 'overstrike' option (Reiter).
  780. Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five lines,
  781.     "3vitextESC" will insert "text" in three lines, etc..
  782. Internationalization: wide characters and multibyte char support.
  783. When editing a readonly file, don't use a swap file but read parts from the
  784.     original file.
  785. Recognize l, #, p as 'flags' to EX commands:
  786.     :g/RE/#l shall print lines with line numbers and in list format.
  787.     :g/RE/dp shall print lines that are deleted.
  788.     POSIX: Commands where flags shall apply to all lines written: list,
  789.     number, open, print, substitute, visual, &, z. For other commands,
  790.     flags shall apply to the current line after the command completes.
  791.     Examples: :7,10j #l Join the lines 7-10 and print the result in list
  792.  
  793.  vim:ts=4:tw=78:sw=4:
  794.