home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-11-22 | 18.8 KB | 347 lines | [TEXT/VIM!] |
- Known problems:
-
- If file system full and write to swap file failed, get error message for
- lnum > line_count?
- When editing same file in two xterms, in second type ":" at first wait-return
- for ".swp file exists", at exit cursor is left at top of window.
- Windows NT: display is not always correct.
- Windows NT: CTRL-C in a child shell (created with ":sh" or CTRL-Z) kills Vim.
- MSDOS: When using smardrive a readonly floppy will cause problems. Test for
- writable directory first?
- Some terminals start inverting at the position where the invert code is put.
- This is not handled correctly. Remove 'weirdinvert' hack.
- ":s/\(.*\)/\1" on line with ^M should not replace ^M by linebreaks.
- Replace with 'r' should set last inserted text.
- BS in replace mode does not work correctly with et set and after inserting a TAB.
- In insert mode CTRL-O . does not repeat the last CTRL-O command but the insertion.
- Sometimes the time stamp in the memfile is old. May be caused by opening the
- file r/w when testing for readonly.
- When doing a CTRL-Z and typing a command for the shell, while Vim is busy
- (e.g. writing a file), the command for the shell is sometimes eaten by Vim.
- Find out why screen size is changed in unexpected place for Bob Beresh.
-
-
- To be checked:
- Check '\n' at end of some : commands (that do not have TRLBAR).
- Check for '\\' at the start of search commands (undocumented vi feature).
- Environment name expansion for 'bdir' default value does not work?
- Usage of isspace() vi-compatible (compared to iswhite())?
- Terminal initializations compared to vi. "vs" used to make cursor very visible,
- or for scrollbars (Webb)?
- MSDOS: After writing on a network the 'w' bit for others is set.
- When can the 'p' and 'P' command not be redone??
-
-
- Problems that will probably not be solved:
-
- Prolem with HPterm under X (cosentino/2).
- Amiga: When using quickfix with the Manx compiler we only get the first 25
- errors. How do we get the rest?
- Amiga: The ":cq" command does not always abort the Manx compiler. Why?
- Linux: A file with protection r--rw-rw- is seen readonly for others. The access()
- function in GNU libc is probably wrong.
-
-
- Further extentions and improvements:
-
- Add icon setting for xterm (riehm/69, mulder/iconname.set).
- Make command line arguments options to be combined after a single dash, eg "-nb".
- When started to edit another file, make message "file 1 of 8" different.
- When entering text, keep other windows on same buffer updated (when a line
- entered)?
- Amiga: When 'r' protection bit is not set, file can still be opened
- but gives read errors. Check protection before opening.
- Bind windows together, scrolling is done in both windows synchronous
- (horizontally and vertically). Use CTRL-W b?
- Re-select last Visual selection with "v." (exactly same text, from '[ to ']).
- Don't write any pages into the swapfile until the buffer has been changed.
- Catch terminating signals and call ml_sync_all(): SIGHUP, SIGINT, SIGQUIT,
- SIGILL, SIGABRT, SIGFPE, SIGPIPE, SIGALRM, SIGTERM, SIGBUS, SIGSEGV.
- Change ".swp" to ".vim", because it give a hint who created the file?
- Use termcap 'ts' and 'fs' entries for setting the window title. Check 'hs'
- and use minimum of 'ws' (if present) and Columns to truncate the title.
- When writing check for file exists but no permission, "Permission denied".
- In dosub() regexec is called twice for the same line. Try to avoid this.
- When line is too long to fit on screen, don't display it.
- When inserting makes cursor go past end of screen, scroll up in insertchar().
- Window updating from memline.c: insert/delete/replace line.
- Optimize ml_append() for speed, esp. for reading a file.
- V..c should keep indent when 'ai' is set, just like <count>cc.
- In visual select mode: Inclusion or exclusion of char under cursor depends
- on movement command. "vwd" and "dw" do the same???
- Find out why macros of Stephen Riehm are working strange.
- :s///p prints the line after a substitution.
- Make CTRL-R (insert register contents) also work in command line mode.
- Updatescript() can be done faster with a string instead of a char.
- Add arguments to ":args", like ":next".
- When searching with 'n' give message when getting back where the search first
- started. Remember start of search in '/ mark.
- Add option that scrolls screen to put cursor in middle of screen after search.
- Add \! to search patterns: matches string that does not match previous atom.
- Screen updating is inefficient with CTRL-F and CTRL-B when there are long lines.
- Use 'backupdir' for all backup files if it starts with '>'.
- When writing a file, name it "foo.new". Then rename "foo" to "foo.bak" and
- "foo.new" to "foo". If dir is not writable or on write error copy "foo"
- to "backupdir/foo.bak" and overwrite "foo". Check for correct group/owner
- and try to set it if not. NO: this breaks with hard links.
- INSTEAD: make Amiga and MSDOS work like unix: first make copy of file, then
- truncate and overwrite original file. Use an option for this, default
- on for Unix, off for Amiga/MSDOS.
- Use CTRL-E and CTRL-Y in insert mode for scroll up/down?
- Uppercase characters in ex commands can be made lowercase?
- Add t_del, code for delete key (termcap 'kD') and maybe some other keys:
- 'kI' insert key, 'kL' delete line, t_bs 'bs', etc.
- Filtering a block should only apply to the block, not to the whole lines. When
- the number of lines is increased, add lines. When decreased, padd with
- spaces or delete?
- CTRL-V > should move the block, not whole lines.
- Add commands to move selected text, without deselecting.
- Add "p" command to swap selected text with unnamed buffer.
- Add "P" command to insert contents of unnamed buffer, move selected text to
- position of previous deleted (to swap foo and bar in " + foo")
- In out-of-memory situations: Free allocated space in undo (after asking).
- 8-bit codes between 0x80 and 0xa0 cannot be typed directly (mostly msdos
- problem). Need more codes for delete key and more function keys. Use
- 2-byte code? (see xvim).
- Insert octal numbers with CTRL-V o, hexadecimal with CTRL-V x and binary
- with CTRL-V b.
- List mappings: Once with and without ^ and ~ (meta keys). Use "F1" and "PgUp"
- for MSDOS default mappings.
- Add option that tells which characters to display directly, e.g.
- ":set gr=32-126,140-244", others are displayed with ^ and ~ and +
- Add option to show character value in octal, decimal, hex and screen code.
- How does vi detect whether a filter has messed up the screen? Check source.
- After ":w !command" a wait_return?
- Improve screen updating code for doput() (use s_ins()).
- With 'p' command on last line: scroll screen up (also for terminals without
- insert line command).
- Amiga: ExpandWildCards in amiga.c: don't expand if there are no wildcards.
- unix: Speedup wildcard expansion of "*", "~" and "$": do it internally, more
- complicated things can still be done with the shell.
- Only do wildcard expansion with 'wildchar' when entering a command that has a
- file name as argument (:r :w :! :e :f :n)?
- Unix: When comparing two file names to see if they are the same file use stat()
- and compare device/inode; much faster than FullPathName()
- In regexp.c: "\^" after "\|" or "\(" is start of line, and "\$" before "\|"
- and "\)" is end of line.
- Remember the "last changed" time of the edited file and check it before
- overwriting; another user may have changed it.
- Support for command lines longer than 256 characters (for EXINIT).
- Option for filter when reading/writing a file for compression or crypting.
- Option to set time for emsg() sleep. Interrupt sleep when key is typed? sleep
- before second message?
- Delete message after new command has been entered and have waited for key.
- Add "next tag" command for tags that have multiple hits.
- Support static tags: first search for tags with current filename: "foo.c:bar",
- then for global tags (without a filename).
- History stack for . command?
- Use insert/delete char when terminal supports it.
- With undo with simple line delete/insert: optimize screen updating.
- Optimize screen redraw for slow terminals.
- "edit" option: when off changing the buffer is not possible.
- Add "-d null" for editing from a script file without displaying.
- Add "-R" for readonly mode (ex has it).
- When writing to a readonly file, ask for permission to overwrite it (if file can
- be made writable) and restore file to readonly afterwards.
- MSDOS: search for _exrc in the directory where the binary is, instead
- of using $VIM\_exrc.
- In insert mode: Remember the characters that were removed with backspace and
- re-insert them one at a time with <key1>, all together with <key2>.
- Amiga: Add possibility to set a keymap. The code in amiga.c does not work yet.
- Implement 'redraw' option.
- Add possibility to put the value of an option into the text: "'lines'p
- Unix: WildExpand: Without csh file name with embedded space will be split in two.
- With wildcard expansion after '%' and '#', expand current/alternate file name, so
- it can be edited.
- Add special code to 'sections' option to define something else but '{' or '}'
- as the start of a section (e.g. one shiftwidth to the right).
- Nopaste option: Mappings with non-printable characters are OK.
- Add 'indent' option: Always use this amount of indent when starting a new line
- and when formatting text.
- Add 'crown' option to 'Q' command: preserve indent of second line.
- When formatting with 'Q', break at paragraph boundaries (empty lines).
- When 'textwidth' is negative, use for 'Q' only, no automatic formatting.
- Add option 'comment', initally "/*,*,*/,#", giving the characters at start of
- a line that should be left alone by the internal formatting.
- After formatting with Q the cursor is on the end of the last line; with = and
- when formatprg is set it is at the start of the first line. Not good.
- Add 'scrolloff': scroll when cursor is less then 'scrolloff' lines from top/bottom.
- Add option to switch off ignoring braces inside quotes for "%" command??
- Use pipes for filtering on unix.
- Allow for +command and -option on any position in argv[].
- Add commands like ]] and [[ that do not include the line jumped to.
- When :unab without matching "from" part and several matching "to" parts,
- delete the entry that was used last, instead of the first in the list.
- After :set nowrap remove superflous redraw with wrong hor. offset if cursor
- is right of the screen.
- Add -x option: crypt/decrypt when writing/reading file.
- Add count to ':', gives ":.,.+count-1"
- Improve online help: Fit into the window (also small ones), hypertext, etc.
- (See also dh1:text/vi/vi.help). View help just like a file?
- Support several errorformats, use the first format that matches.
- Recognize "$*" in 'makeprg'; replace it by the arguments to :make.
- Allow multiple arguments to :unmap.
- Add option that contains characters which are included in identifiers;
- default "[a-bA-B0-9]_", for LISP "[a-bA-B0-9]_-".
- With :s///c highlight the pattern to be replaced and replace \&, ~, etc. when
- showing the replacement pattern.
- Add mappings for visual mode; use marks for start/end of selected text.
- With ambigious mapping, print conflicting entry.
- In insert mode add # for CTRL-R (alternate filename).
- Highlight search string when found?
- Command line: cursor up on empty line: go to previous command, on non-empty line:
- go to previous matching command.
- Add command to clear all mappings, "clearmap".
- Add text justification option.
- When the edited file is a symlink, try to put the .swp file in the same dir as
- the actual file. Adjust FullName().
- Add new operator: clear, make area white (replace with spaces)
- Add put function that replaces the text under it.
- After "inv"ing an option show the value: ":set invpaste" gives "paste is off".
- After ":read" set '[ and '] marks.
- In fileio.c replace filemess() by outputting strings after each other (only
- one wait_return().
- After executing a shell, put tty back in raw mode (for shells that mess with
- the tty settings)
- Make program to transform termcap entries into something that fits in tcarr
- structure.
- Improve error messages: when expanding '%': "no filename to substitute for '%'"
- when expanding '#': "no alternate filename to substitute for '#'"
- Put warnings in some color (errors are inverted, normal messages plain).
- Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR.
- When a file cannot be opened but does exist, give error message.
- If file does not exists, check if directory exists.
- MSDOS: t_cv and t_ci not set, but do invert char under cursor.
- Add option to switch off move to start of line (Waggoner/12 and 13).
- Command to show keys that are not used and available for mapping.
- Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex commands.
- When memory gets low, reduce the number of undo levels (with confirmation).
- Add 'para_regex' option: regular expression for end of paragraph.
- tag-completion command: when tag found, replace it by the prototype, when not
- found, replace it by the longest match.
- make listings in a more-like way (mappings, files, settings, etc.).
- ":set -w all": list one option per line.
- Before overwriting a non-writable file with ":w!" ask for permission.
- Amiga: test for 'w' flag when reading a file.
- When appending to the last line, causing it to wrap, screen redraw first does it
- at a wrong position.
- Include patches for Russian text (Marinichev/4).
- Ex commands in a mapping should not be put in the command line history.
- Option not to change the search string when using a :tag command.
- Error message for ambiguous mapping: Include the arguments.
- Add ":retab". When "et" set, convert tabs to spaces, when "noet" vice versa.
- ":retab 8" will replace tabs and spaces with the current "ts" setting
- to a "ts" of 8.
- :table command (Webb)
- Add command to go to last non-blank in line (like 0 vs. ^, $ vs. ???)
- Add 'backupdiralways', 'bda' option for 'bdir', like 'da' for 'dir'.
- Add option to recognize identifiers with everything but spaces ('forth'?).
- Adjust isidchar().
- MSDOS: How about supporting function keys #11 and #12?
- With blockwise visual mode and "c" command, insert same text in every line.
- Search filenames for starting with $HOME and replace it with "~" when displaying.
- For 'shell' option add possibility to give arguments for fast start (e.g. -f).
- Not to be used for ":shell".
- Make ":e file1 file2" work like ":n file1 file2"?
- Give message "No lines in buffer" when last line in buffer deleted.
- When displaying (file xx of yy), add "not" when curbuf is not file xx.
- Add commands to do things in all buffers: ":Substitute", ":searchall", etc.
- Make ":sleep" accept floating point numbers, like ":sleep 0.01".
- When in replace mode and 'expandtab' set, make tab look like spaces.
- Support multiple search buffers, so macros can be made without side effects.
- With :read set '[ and '] to start/end of new lines
- Make builtin termcaps with a configuration file and a program to translate
- it into a .h file.
- Use %> and #> for filename without path?
- Allow multiple arguments for ":edit", add them to the argument list.
- Allow multiple arguments for ":read", read all the files.
- Make options from modelines only used in the buffer where the file is read.
- For visual mode: "." does a search for the string in the marked area. Only
- when less than two lines. What key to use for backward search?
- Matching with "%" should be configurable. 'matchstrings' =
- (/*,*/),(^#if,^#else,^#endif)
- Expanding ~ and $VAR in options should be done not only for the first entry.
- Add 'resizecmd' option: vi command to be executed when window is resized.
- Do not accept mappings when waiting for key hit with --more--.
- Add option to make settings from modelines valid only in the file where they
- were set. Reset options when starting to edit another file.
- Keep output from listings in a window, so you can have a look at it while
- working in another window. Put cmdline in a separate window?
- Keyword completion code should use the case from the match.
- Add regular expression \{m,n\}: m to n matches. \{m\} is m matches, \{m,\} is
- at least m matches. Also do \{,n\}: up to n matches.
- When 'backup' is not set and 'writebackup is set, use a unique name for the
- backup file, don't deleted the ".bak" file.
-
- From Elvis:
- fontchanges recognized "\\fB" etc.
- :color command
- :if and friends, conditional statements
- Read .exfilerc when starting to edit a new file (can be used to load macros for
- specific file type).
- Change cursor shape in command/insert mode.
- 'flipcase' variable: upper/lower case pairs.
-
- From nvi:
- 'cdpath' option.
- 'remapmax' option.
- Allow editing lines that do not fit in the window.
-
- From xvim:
- Use '\' before commands to make them linewise.
- Allow a newline in search patterns (also for :s, can delete newline).
- Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc.
- Add register for ':', '?' and '/' commands? (yank_buf()).
- Support mouse control (also weissman/1). With option to switch it off to
- enable copy/paste.
- Searching in help file.
- get code for backspace from termcap.
- Remember last cursor position, optimize setcursor().
-
- From xvi:
- CTRL-_ : swap 8th bit of character
-
- From vile:
- CTRL-X e: edit file name under the cursor (like ^] and *)
- Show unprintable characters in hex.
- Use scrollbar.
- When horizontal scrolling, use '<' and '>' for lines continuing outside of window.
-
- Far future extentions:
-
- Allow vertical splitting of screen (once).
- Allow editing beyond end of line, just like there are all spaces. Switch this
- on with an option or special insert mode command. Also allow editing
- above start and below end of buffer.
- MSdos: use extended or expanded memory.
- When executing macro's: Save each line for undo only once.
- Smart cut/paste: recognize words and adjust spaces before/after them.
- Add 'notwsuffixes' option: suffixes for files where 'tw' should be 0.
- Make files with suffix in 'suffixes' option always appear in list of matched
- files, but at the end.
- Keyword completion: first look in the file for a match, then in a dictionary (Webb).
- Option verbose; when on keep the screen uptodate, when off only redisplay when
- input needed.
- Change the output to the message line. Don't redraw the screen until the next
- vi command. Remember message line for redraw. Integrate the command line
- in updateScreen().
- Mode to keep text formatted while inserting/deleting. Use soft/hard returns with
- an option to switch this off.
- Mode to keep C-code formatted (sort of on-line indent). Use colors for
- keywords, comments, etc.
- Korn-shell like command line editing (like editing a single line with vi). Use
- :cmap! for mappings. Can be implemented like a buffer containing command
- lines.
- Add column numbers to ":" commands (:line1:col1,line2:col2 cmd). Block can be
- selected with CTRL-V.
- Add 'hidecomment' option: don't display comments in /* */ and after //.
- Add open mode, use it when terminal has no cursor positioning.
- Add macro language with real functions.
- File in local directory to store contents of named registers and named marks.
- Write when quitting, read when starting.
- Special "drawing mode": a line is drawn where the cursor is moved to. Backspace
- deletes along the line (from jvim).
- Save cursor position (and other things) for a next editing session.
- Perform commands on multiple windows (:W%s/foo/bar/g), multiple arguments (:A)
- or multiple buffers (:B).
-