
Filename: TODO.txt
Updated:  2010-01-02, 01:22am

The Features listed below aren't features yet! (But the bugs are. ;)

_____________________________________________________________________
Major Features Still Missing {{{1

o Slightly more sophisticated dialogs with radio buttons, checkboxes,
  list boxes, and input boxes to simplify option selection flow.
o A real widget (not text area) statusbar.
o Proportional fonts.
o Print preview and page manipulation.
o Hidden command line (but able to pop open).
o Apple platform support. (Need a tester, probably works.)
o Project file management.
  * => Vim 7
o Live/real-time remote editing (FTP/HTTP/SSH).
  * => Vim 7
o Hex editing
  * => Now available, but undocumented.
o Smoother handling of ultra-large files.
  * => Minor fixes to turn off syntax highlighting.

_____________________________________________________________________
Short Term {{{1

o BUG: Alt+Down to a function in same file stays in the same tab
  (good), but it hides the local Tag List pane (bad). And Alt+Up seems
  to only return to the original place if the new file is in the same
  directory as the old. (Mark Gardner)
o Tab/window conflicts {{{2
  * BUG: When opening too many files from the command line (10+), Vim
    complains that there is "not enough room" when using tabs (Elias
    Pschernig)
  * => BUG: Multi-window logic still needed.
    - Eg, diff split can't switch between.
    - Eg, window logic broken for single-sessions.
    - Eg, window logic broken for externally passed arguments. (File
      managers.)
    - What should happen?
      + => Nothing? Provide "tab all" option? Maximize should probably
        clean up tabs--we don't want one buffer hidden and another
        shown twice.
      + => Dis-allow tabs with window options? (When used, hide tabs.)
  * BUG: Fix tab right-click menu (Cream-ify).
    - => Vim bug, this menu is hard-coded.
  }}}2
o Spell check features {{{2
  * => Need to add languages
    - Option to select languages based on existing dictionaries, or
      available.
    - Option to retrieve additional dictionaries from
      ftp://ftp.vim.org/pub/vim/runtime/spell.
    - Option to "turn off" dictionaries?
    - Move them to a stash location
    - Mod and retain &spelllang
    - (If not adding the above.) Add Vim7 spell check FAQ item on how
      to add dictionaries, and set spelllang.
  * BUG: reconcile Cream global with Vim buffer-local state.
  * Ctrl+F7: add word to user's dictionary
  * Create an "edit user dictionary" option? Scroll through words one
    by one.
  * Option: Specify that all words that begin with a capital letter
    are spelled correctly. (Peter Heslin)
  * Create an auto-correct (mis-spelling abbreviations) for each
    language that has a dictionary.
  2}}}
o Add option for &autosave.
o BUG: Turn off last file restore if Cream detects arguments (argc() >
  0).
o BUG: Wrap width highlighting is buffer-specific, and non-retained
  across sessions. (And the menu doesn't make this clear.) (Mark
  Gardner)

______________________________________________________________________
Longer Term {{{1

o Move from CVS to SVN.
o Add setting for Windows keyboard shortcut via shortcut maker (now in
  lib-os).
  * Can we do this for Gnome?
o Build RPM based on Jeff Woods contribution.
o Hooks for Save and SaveAs. (Ben Armstrong)
  * => Will involve re-working the browse confirm with a more parsing
    browse().
o BUG: BufEnter autocmds do not respect modelines.
  * => Fixed by securemodelines?
o Move sorting to use internal :sort
o Convert remaining menus from anoremenu form to i/vmenu form so they
  are properly handled in column mode.
o Add Insert [filename] (:read). [Frank, 2005-11-14]
o Run MRU paths through Cream_path_fullsystem() to avoid duplicates
  (on Windows only?). (Frank)
o Prototype popup should insert current function name.
  * Re-vamped completion based on new Vim7 feature.
o Explore motion correcting new key: CTRL-\ CTRL-O.
o Insert mode CursorHold autocmd event:
  * More granular undo, such as character by character inserted rather
    than an entire line. (I type too fast, I guess. ;)
  * Autosaves
o Unfolded fold indicator. (With bookmarks? With autocmd
  &foldcolumn=2?) (Wolfgang Hommel)
o Templates {{{2
  * :read into var!
    - => Vim7.
  * Templates need better press
  * Template structure should be located on-demand, not loaded as vars
    - Read literally
      + no escaping issues
      + Fixes botched listings (e.g., "html" et.al.)
    - Organized by filetype name directories.
    - Handle completions without line endings via NL trim.
  2}}}
o Find/Replace {{{2
  * Use new internal grep to search files before opening them.
    - => Vim7.
  * More precise control over :promptfind and :promptrepl. As it
    stands, the commands are carried out by the master without our
    filtering. The input and settings are also unreturnable.
    - => TGL wrote patches, tracking above.
  * Fix Feature doc statement about regexp.
  * Change to treat '\' literally. (No hope to use regexp.) (?!)
  * Make it recursive down a directory.
  * BUG: Find's repeat dialog Previous button broken in some
    instances.
  2}}}
o :promptfind and :promptrepl bug tracking {{{2
  * => Some of these look to end up in Vim7.
  * Documentation of usage of '\V' for both.
  * Need checkbox for regexp. (TGL)
  * Replace treats '\r' as literal, but ReplaceAll sees it as return.
  * Windows: Dialog looses focus. (Verify with direct call.)
  * Windows: Replace portion isn't remembered.
  * Windows: Esc doesn't close dialog.
  2}}}
o Large file handler {{{2
  * lazyredraw, swapfile, backup, autocmds, highlighting
  * autocmd wrapper (Ben Armstrong):
    -   let myeventignore = &eventignore
    -   set eventignore=BufEnter
    -   " open in current window  } command
    -   execute "edit " . myfile  }
    -   let &eventignore = myeventignore
    -   doautocmd BufEnter *
  2}}}
o Performance issues {{{2
  * Methods
    - new :profile command!
    - set verbose=9+ (:help 'verbose)
  * Load on-demand, and buffer-local:
    - Contributors
    - => Need Cream_return_file(file) to return the contents of a
      file. (To avoid loading it as a script or var.)
  * Speed. Opening many files is too slow. Re-think array system for
    some cases.
    - => Menuing is the single most expensive task on startup,
      generally the more, the slower. (Filetypes are the largest and
      therefore the biggest culprit...now cached. The Developer menu
      (usually off) is the second largest.)
    - Explore: autocmds
      + => Menuing autocmds are half of startup time.
      + No improvements by clustering.
    - Explore: EasyHtml MvQSort call.
    - Add-ons
      + => Review completed.
    - Explore: Optioning of window/font positioning
      + => Review completed.
      + Vim positioning
        o default for winpos *is* off
        o ":set sessionoptions+=resize" is for panes, not window (no
          help)
      + Pane organization does not contribute to slowness.
      + Font does not contribute to slowness. 
  2}}}
o Use a different char for LF($), CR/LF(¶), CR(«, §, ⁋)? Change on
  BufEnter depending on fileformat.
  * => Has to be ASCII for full platform support.
o BUG: When opening a file from the command line ($cream file) with an
  instance already existing, sometimes the file is not opened or a
  closed is not closed--buffer confusion. (Kamadev Bhanuprasad)
o Use browsedir() where useful.
o Project manager (Matt Wilkie, et.al.) {{{2
  * Use lists to manage associated vars.
    - => Vim7.
  * Menus
    - Menuization of all project files.
    - Dynamic menu mechanism has now been refactored and already in
      use for Cream Developer menu.
  * Retainage of project preferences, paths, settings
    - Explore :mksession options 1, 2, 4, 7, and 10 (*x.vim).
    - Session file stored with the files themselves (multi-user).
      (Verify no personal information stored.)
    - Paths stored in session file with relative pathing.
    - Vim variables and script. (E.g., Timestamp style.)
  * Multiple projects available in a single session.
  * Simple modification and adjustment (read/write) of project file.
  2}}}
o Vimgrep files for expression. (Ben Armstrong)
o Remote editing (FTP, HTTP, SCP).
o Move Convert Hex2ASCII add-on to View menu.
o Add :set display+=uhex (?)
o Option to open Recent File list items Read Only. (Ben Armstrong)
o Full Justification
  * Fix trailing spaces bug. (Xavier Nodet)
  * Should strip leading whitespace (such as when right justified).
    (Michael Marquart)
o String translation scheme. (TGL) {{{2
  * => Need help writing software that can extract and process strings
    out of the code.
    - In a nutshell, the problem is 
      1. Enabling code to call messages for the proper language.
      2. A update notification system so translators know when to 
         translate new messages.
    - The simplest strategy would be to:
      1. Use a numbered message system, each call for a string
         references the language's file containing the strings.
      2. Make them numerical and never edit existing strings so the
         last number indicates the last line translated.
  * New functions that manage i18n:
    - Functions:
      + Cream_i18n_confirm()
      + Cream_i18n_echo()
      + Cream_i18n_input()
    - New i18n functions must manage standard arguments, but also:
      + file_line code
      + default string
    - Closing parenthesis of call must end line. (No trailing space.)
  * String extractor
    - Generates a "strings" file from the code by extracting select
      functions.
    - Use function returning string by number.
    - Regexp extraction on existing strings.
      + mg (multiline grep: http://www.srekcah.org/~utashiro/perl/scripts/mg/)

          mg -c 0 -eQ 'confirm\([\w\W]*?\)\s*\n' *.vim

      + Above just needs to capture everything from line beginning.
  * String translator
    - Handles call from string functions and returns translated
      string or default.
  * String diff - Tool to diff existing translations against updated code.
      + Re-uses existing translated strings
      + Indicates updated/new strings that need to be (re)translated
  2}}}
o Enhance lib-os: cp, mkdir, permissions, rootcmd, rm/rmdir
o BUG: Encrypt algorithmic is botched.
  * => Works on GNU/Linux, Windows bug only?
o ctags:
  * BUG: Update Cream ctags with silent appears to fail.
    - => Fixed in 0.33?
  * BUG: ctag generation hosed cross platform with paths that have a space.
  * Test and stablize Ctag Generate addon.
o Expert mode {{{2
  * BUG: isn't being retained across sessions (or multiple windows).
    (Java TrashBin)
    - => Now fixed?
  * If in Expert Mode, start a session in Normal mode. (Eugene/eyv)
  * Warning is a bit flagrant and doesn't explain that it can be
    simply toggled off. (Michael Marquart)
  * Should Esc in Expert Mode always drop to normal and not toggle
    between normal and insert? (Julien Goodwin)
  2}}}
o Swap files
  * Use of single-session with swapfiles causes warning at each new
    instance. Swapfiles are disabled with the single-session setting
    and upon starting a new instance from an existing one.
    - => Improved design here would be to pass only the relevant info
      via a session file, not the viminfo. (Variables are not passed
      between sessions as best we can tell.)
o Approaches to HTML tag wrapping: {{{2
  * function! My_li()
    " expects user to be in visual mode when started
        " re-select
        normal gv
        " cut
        normal "xx
        " insert start tag
        normal i<li>
        " paste
        normal "xpl
        " close tag
        normal i</li>
    endfunction
  * func! My_li()
        normal `>
        normal a</li>
        normal `<
        normal i<li>
        normal `>
        normal f>
    endfunc
  * func! My_li()
        let @x="<li>"
        normal gv"Xx
        let @X="</li>"
        normal "xp
    endfunc
  2}}}
o Use command line progress readout (a la third party script) for
  replacemulti. (Any other routines that could benefit?)
o Update all input dialogs to use custom Inputdialog().
o TeX issues
  * BUG: Spell check shows ". \a" as an error in Tex. (Wolfgang Hommel)
  * BUG: Treats a number followed by a TeX size keyword as something
    special. (Wolfgang Hommel, 28 Jan 2005)
o ADDON: Finish touch typing tutor! (Giraffe/Tetris-like)
o Option multiple presses of a mapped keystroke for "power key" (F12).
  Example: <F12> is timestamp, <F12><F12> is filename stamp. 
o Printing
  * Basic (optional?) CUPS printexpr for gui_gtk2.
  * Improve usability of print setup menus.
  * Fix default print header.
  * See if print header can be evaluated in dialog prior to printing.
o Install a KDE icon for Cream. (John Culleton)
o text=>html, text-link, wiki-ish features. A project is postable as a
  set of web pages, complete with relative links to non-html files.
o Explore DOS shells that don't leave open via Tip #642.
o Make Vim/Cream a "known app" Win32 registry additions: {{{2
  * (2003-11-05, by Giuseppe "Oblomov" Bilotta):
  ............................................................
  REGEDIT4

  [HKEY_CLASSES_ROOT\Applications\gvim.exe]
  [HKEY_CLASSES_ROOT\Applications\gvim.exe\shell]
  [HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit]
  [HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command]
  @="c:\\vim\\vim63\\gvim.exe \"%1\""

  [HKEY_CLASSES_ROOT\.htm\OpenWithList\gvim.exe]
  ............................................................
  * Adds gvim.exe to the list of "known apps" to appear in the "Open
    With ..." list.
  * Adds the above mentioned "known app" to the list of HTML editors
    for IE.
  * Win98+ (untested on Win95, WinNT-XP)
  2}}}
o Timestamp Add-on: try to guess the format based on existing. (Else
  default to last.)
o Explore entire feature set of externally called commands via K
  command and &keywordprg.
o Explore title case capitalization without particles
  * Just substitute lower cased particles in the finished string.
  * Make that list multi-language.
o Modify $CREAM to not have a trailing slash.
o BUG: Multiple help windows opened aren't closed. (Opened via tag
  nav?)
o File type:
  * Foldmarker: Check out "set foldmarker=begin_fold,end_fold" for
    HTML. (Colby Jon)
o Diff
  * Diff (patch) creation
    - New buffer
    - Same file format as that patched, or always UNIX?
  * -u vs. -c
o Find, Replace, Replace Multi-File {{{2
  * Find and Replace shortcuts (Ctrl+F, Ctrl+H) do not behave properly
    with selections (from visual mode). Pass selection to dialog.
    (Sven Vahar)
  * Find (not multifile)
    - Allow wildcard "*" in Find field. Use "\*" to imply a real
      asterisk.
    - Match whole word only
  * Replace (not multifile)
    - Allow wildcard "*" in Find field. Use "\*" to imply a real
      asterisk.
    - Option replace in selection.
    - Match whole word only
  * Replace Multifile:
    - Clean up multi-replace using Cream_cmd_on_paths()
    - Allow wildcard "*" in Find field. Use "\*" to imply a real
      asterisk. (use globpath() over glob())
    - Option path browse, start at current.
    - Option list only. List filenames containing Find (rather than
      change them).
    - Match whole word only
    - Search subdirectories
  * Make call of find or find/replace with selection use that
    selection as the default find.
  * Find/Replace (builtin) :promptfind and :promptrepl. Could we go
    back to using these? Known problems:
    - Loss of focus means the mouse must be used to repeat the search.
  2}}}
o Taglist
  * Eliminate some header info
  * Put all help info in header
o Help, Cream
  * What's New dialog/splash. (Matthias Kopfermann)
  * Add additional version information into Help > About dialog.
o Synchronize non-Cream scripts
  * ShowMarks (Anthony Kruize)
    - http://www.vim.org/scripts/script.php?script_id=152> 
  * calendar
  * mru
  * buffer menu
o Reduce general function scopes (via s:).
o Marketing (*cough*)
  * "Powered by" icon.
  * Start an Easy Contributions/Help Wanted list to post to the
    website.
o Open current file's folder in Windows:
    http://vim.sourceforge.net/tip_view.php?tip_id=311
o QuickMark -- Eliminate Ctrl+F2 mapping for show marks (they should
  always show if they exist) and use Ctrl+F2+[digit] for QuickMarks.
  If at a QuickMark, it's eliminated, if not jumps to it. (Wolfgang
  Hommel)
o Rename Wrap, AutoWrap and QuickWrap more intuitively. Suggestions
  include "WordWrap", "Re-Format", "Re-Wrap". (Wolfgang Hommel) Also,
  "Wrap-As-You-Type".
o Spaces-to-tab function
  * => :help retab  Accomlished with noexpandtabs and :retab!
  * Remove spaces before tabs (calculate based on &tabstop, if
    {spaces} < ts, replace with tab )
    - :%s/\t[ \1,{x}]\t/\t\t/ge (where {x} is tabstop - 1)
    - :%s/\t[ \{y}]\t/\t[\t\{y}]\t/ge (where {y} is tabstop^1...n)
    Also can just select all, indent then unindent. (Must make sure
    re-wrap tendancies are turned off!)
o Windows Installer {{{2
  * Installer license "Accept" button is blank with Dutch language.
    (Bram Moolenaar) (Apparently also German, others.)
    - => This is NSIS language stuff, only partially fixed by 2.0
  * cream+vim:
    - no _vimrc.orig backup gets created
    - Cream's vimrc install should backup the existing vimrc as
      "_vimrc.vim"(?)
  * Some items from install.exe still not supported.
  * Make Vim-branded splash graphic
  2}}}
o Toolbar icon upload {{{2
  * Read :help toolbar-icon. (Most of these tricks and subtlties are
    now described below.)
  * Using icons is bulletproof if you address these concerns:
    - "icon=" is broken
      + Direct pathing works unreliably. Instead ammend a parent path
        of the icon subdirectory to &runtimepath:
        o A subfolder "bitmaps" must exist below some path on
          &runtimepath. All referenced icons must be here.
        o Spaces in &runtimepath path must be escaped.
      + Extensions can get in the way
        o Don't specify the file extension in your icon= parameter.
        o Use .bmp for Windows and .xpm for GTK.
      + Menu priority must come after the icon argument (must precede
        everything else other than "<silent>").
    - Icon specifics
      + Size is 18px x 18px.
      + Windows: Icons must be 16 colors (4-bit), using the default
        Windows palatte (Lt. Gray is transparent).
      + GTK: Up to 24-bit icons w/ single bit transparency are
        supported. (Multi-bit maybe now too, although the file sizes
        will start to get a bit large.)
   2}}}
o Buffer/Window management {{{2

  (We know there are still a few minor issues left here but can't
  generate the interest to finish.)

  * Tiling should retain open windows, even when multiple windows are
    focused on a single buffer. This implies that positioning within
    each window/file should also be retained. (Benji Fisher)

  * MAKE OPTIONAL!

  * EVENTS
    Open/New:
    [x] File open via File menu, map, toolbar -- Cream_file_open()
    [x] File open via MRU menu -- Cream_file_open()
    [x] File open via Opsplorer
    [x] File New -- Cream_file_new()
    [-] File SaveAs -- Cream_file_saveas()
    [x] Help
    [x] Special: Calendar via map and Window menu -- Cream_calendar()
    [x] Special: Opsplorer open via Window menu -- Opsplorer()
    [-] Special: File Explorer open via Window menu -- Cream_explorer()
    [x] Special: TagList startup
    [x] Special: EasyHtml startup
    [ ] Single session: when in special/etc.
    Window Tiling:
    [x] Maximize (Single)
    [x] Minimize (Hide)
    [ ] Splits, new buffer, Vertical or Horizontal
    [ ] Splits, existing buffer, Vertical or Horizontal
    [ ] Diffs
    [?] Tile -- Future
    [-] Modes -- No, this is unnecessary. Future at best.
    Change:
    [x] Change buffer via buffer menu
    [-] Change window via mouse
    [x] Change window/buffer via map -- Cream_next[prev]window()
    [-] Window sizes and count -- (various)
    Restart:
    [x] Specials not initialized: Opsplorer, Taglist, EasyHtml
    Close:
    [x] File close via File menu, map and toolbar -- Cream_close()
    [x] Special: Opsplorer close via "X" option -- Cream_close()
    [x] Special: File Explorer open via Window menu -- Cream_explorer()
    [x] Special: File Explorer close via File menu -- Cream_close()
    [x] Special: Calendar via map and Window menu -- Cream_calendar()
    [x] Special: TagList via File menu -- Cream_close()
    [x] Special: EasyHtml via File menu -- Cream_close()
    Exit:
    [x] Exit via File menu -- Cream_exit()
    [x] Exit via window manager -- Cream_exit() (autocmd)
    [x] Exit via mouse (window X) -- Cream_exit() (autocmd)

  * CONDITIONS ("Test Suite")
    - No buffers open, unnamed is unmodified
    - Named and Unnamed buffers
    - Modified and Unmodified buffers
    - Windowed and Hidden buffers
    - Multiple and Single buffers
    - Multi-Windowed buffer (one buffer in two windows)
    - Special buffers:
      + &buftype=help -- will always open in an existing help window
      + "__Calendar"
      + "__opsplorer"
      + isdirectory() -- File Explorer window
      + "__Tag_List__"
      + "-- EasyHtml --"
    - Diff mode buffers
      + limited to four (non-special) windows
      + restricted from specials

  * GOALS
    - Specials: Keep file explorer, opsplorer, taglist, lists, etc. to
      left and unaffected by *any* other window operations. Assume
      they are concrete.
    - Help (and select (future) info windows): pop from the bottom.
      Should be inside left specials but below all other windows.
    - Remainder: Vertical tile, Horizontal tile, Tile, Single/alone.
    - Option Ctrl+Tab to cycle through non-special windows
    - Stack current file list by most recently accessed so we can
      Ctrl+Tab per Wolfgang Hommel, and so we can drop into the
      previous buffer when the current is closed. (Ctrl-^)

  * MENU
    - &equalalways preference?
    - &scrollbind preference?
    - Functionalize window menu

o Explorer {{{2
o File Tree:
  * BUG: PageUp erases the contents. (Felix Breuer)
  * Key/menu for File Tree should toggle. (Felix Breuer)
o Overhaul
  * explorer.vim
  * http://vim.sourceforge.net/scripts/script.php?script_id=192
  * http://vim.sourceforge.net/scripts/script.php?script_id=184
  * libtree -- Method for drawing heirachical trees such as directory
    structures, book/chapter/verse, etc.
    - Applications:
      + directory structures
      + book-chapter-verse
      + country codes (continent-country)
      + tag-attribute-value
      + domain codes
      + US state two letter codes
      + telephone area codes
    - Features:
      + Abstracts display from actual contents so that the method can
        have multiple applications
      + Need to compose two tables: one actual, one display.
        . This helps us calculate on the raw before re-displaying.
          Destroying the raw in the making of the display won't do.
        . Actual must always contain root and below. Display might not
          indicate upper portions.
      + atom id: {0,6,2,4,26} (count at depth)
      + open/close nodes
    - vars:
      + root
      + current
      + indent/level/depth
      + multiple open consecutively
      + top shows root v. active node
    - functions:
      + get_table()
      + make_display()
      + get_item()
      + MvQSortElements({array}, {sep}, "s:CmpByString", 1)
    - setline([sum of atom ids], "myitem") == current
  2}}}
o ADDON: Book (Bible) reading stuff:
  * Based on treelib
  * HTML2NIV script(s)
o ADDON: TEXT2HTML converter: add encoding headers:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN http://www.w3.org/TR/html4/strict.dtd">
    exe "normal a<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:html_encoding . "\">\n
    exe "normal a" . expand("%:p:~") . "</title>\n\e"
    exe "normal a<meta name=\"Generator\" content=\"Vim/" . version/100 . "." . version %100 . "\">\n\e"
    exe "normal a<style type=\"text/css\">
        <!--\n
        -->
        </style>\n"
o ADDON: Email munger: add option to triple separators (user@@@doman...com)
o ADDON: Create a ctag directory(s) option. Retain directories in global
o ADDON: Double space after sentence period remover/adder.
o ADDON: Find duplicate lines.
o ADDON: HMTL tag stripper.
o ADDON: Arithmatic columns.
o ADDON: Calculator.
o ADDON: Count chars, lines, sentences, paragraphs (selection, document).
o ADDON: Draw (box character thingy).
o ADDON: Geek code/decoder. (Something like the printer options script.)
o Syntax highlighting:
  * http/ftp
      syn match INUrl  +\(www\.\|http://\)\S*\w\+\/*+
    - => Needs to "act like a duck if it looks like one." (Thomas Baxter)
o Add directory diff/merge utility.
  (http://vim.sourceforge.net/script.php?script_id=102)
o Versioned backups. (See
  http://vim.sourceforge.net/script.php?script_id=89)
o Single-server optimizations (still a little slow)
o User-defined command set(s). (Matthias Kopfermann)
o Add number incrementer/deincrementer (normal mode: Ctrl+A/Ctrl+X)
o Info and error logging. Global variable, a file or both?
  * Variable required to react to situations where file reading for
    settings might be too much overhead (to surpress a particular
    warning after the first time).
  * Variable that maintains various states could chew up considerable
    memory, especially if we maintain find/replace file names and
    other string-based events.
  * Log file is useful for many other things, such as variable/file
    migration/upgrades, error logging, file actions (find/replace),
    etc.
  * Log file is slow. (But too slow?)
  * Log file is no place for settings.
  * Both is extra overhead.
  * Both would mean coordination between the two if they ever held the
    same info.
  * Both might mean difficulties if there are platform-specific errors
    and settings and Cream is being used on multiple platforms.
  * The current VIMINFO scheme actually writes all globals to file.
    Maintain our own cream-state file? Could be read whenever
    a variable is changed or needed, but starts sounding like
    a registry to me, file format?
  * Confusing settings with one-time logged events?
o Bookmarks:
  * Expert mode uses named bookmarks. (Show "a>" rather than ">>".)
o winaltkeys setting toggle so that i18n users can switch between
  Alt+letter binding functions and characters.
o Column mode
  * Speed.
    - => Needs selection-specific :redraw!
  * Option to hold until user specifically drops it. (Wolfgang Hommel)
o Macros:
  * Custom (and multiple) registers
  * Remember which custom register currently in use
  * Edit macros [:let @a = substitute(@a, '-', '_', 'g')]
o Multiple clipboards 
  * Last used should always be made global?
o Option buffer-level setting control of wrap and autowrap.
  * => Better as multiple session.
o Bullets
  * Functionalize and option bullet choices. Allow four or five and
    perhaps determine nesting order.
  * Re-bulleter to fix bullets on indent/unindent.
o Right-click
  * External applications via popup menu (<cword> to file explorer,
    web browser, zip file, etc.).
  * Open related under cursor (open corresponding .h file from .c and
    vice-versa)
    - Open file (Shift+Enter)
    - Close and return(?) (Ctrl+Shift+Enter)
o Calendar: Option for start with Monday/Sunday.
o Full "macro" recording capability, with export and listed recall of
  recorded macros.

______________________________________________________________________
Console {{{1

o CONSOLE: Cream in terminals is generally hosed because:
  * Alt key support is so unpredictable from terminal to terminal.
  * Console menus are activated as if from normal mode.
  * Other keystrokes (Ctrl+Arrows) are regularly mis-handled.
  * Absence of dialog presentation for info confusing.
o CONSOLE: Keystrokes
  * Document what keystrokes will work, in what terminal.
o CONSOLE: Menus
  * Option console key spoofing. Coordinate strategy with F12?
  * Terminal F12 menus (Christoffer Sawicki "qerub"/70899):
    - A mode change or something occurs... All new text is, kind of,
      inserted like in "INSERT (REPLACE)" mode.
    - Can't bring the F12 menus to foreground. Hitting ESC and/or INSERT
      repeatly fixes it.
  * Provide Alt+menu letter emenu tricks? (:help :simalt)
      imap <F12> <C-o>:emenu File.<C-z>
  * Console menus
  * Provide "standby" [Alt] mappings for menus in terminals.
o CONSOLE: Cygwin adjustments (from vim list):
  * set grepprg=grep\ -nH
  * set shell=sh        " Use the sh shell
  * set shellslash      " Use the forward slash for expansion.
  * set shellcmdflag=-c " Use the forward slash for expansion.
  * set shellxquote=\"  " Use the forward slash for expansion.
  * set shellpipe=\|\ tee
  * http://vim.sourceforge.net/tip_view.php?tip_id=381
o CONSOLE: Create Cream_confirm() (or similar):
  * Handle both GUI and console messages
  * Shortcut version 6.0's requirement for a button text.
o CONSOLE: Replicate dialog, confirm, browse calls with Cream functions that
  handle GUI v. terminal.
o CONSOLE: Search: obtain user input, finds, but then returns to
  insert mode.

______________________________________________________________________
CANTFIX {{{1

o BUG: NSIS installer languages still broken. (Sometimes selects
  non-English.)
o Vince Negri's Conceal/ownsyntax/cursorbind patch:
  - => Refused in Vim7.
  - (Broken: http://www.angelfire.com/vt2/conceal/)
o Build binary with static libraries (Python, Ruby, Perl, TCL, etc.)
  (Ben Armstrong)
  * => Vim builds do not support as yet.
o BUG: Win32: Extreme weirdities when %HOME% is already defined.
  * => Fixed in 0.31beta, 2004-08-20?
o BUG: set guifont=* still causes window positioning problems on first
  time usage.
  * => Vim bug now resolved?
o Condition mapping load at start up on Cream behavior, and remove
  mappings only on switch from Cream to Cream Lite behavior.
  (Preserves user mappings on startup with Cream Lite mode.) (William
  McKee)
  * => Current workaround is to call cream-lite, then autocmd
    cream-user... is this a final solution?
o Templates
  * Dialog user-defined additions ({word}, {completion}, {filetype})
o A real widget statusbar with proportional fonts, icon/graphic symbol
  support, and relieved groupings.
o Hide the command line. It should pop up only when in use and go away
  when not (optionally). (Partial solution explored 2002-12 with
  'ruler'.)
o Vim splash screen (feature.h) doesn't handle our hard returns
o Consider revising various popup/template/info stuff to use MS
  keystrokes:
  * Ctrl+I: Info pop (Impossible: Vim <C-I> is identical to <Tab>)
  * Ctrl+J: List insert (Impossible: Vim <C-J> is identical to
    <Enter>)
o Re-map of Ctrl+[ (Impossible: Vim <C-[> is identical to <Esc>)
o Multifile Replace likely doesn't handle Apple CR/NL issues
  correctly. Need to verify DOS/Linux platform files in cross-platform
  conditions. (Help! We need an Apple tester!)
o Multiple toolbars.
o Show intermediate spaces (not trailing) as invisible characters.
o Status bar indicator for Caps Lock.
o Ctrl+Shift+Z should be redo. (Conflicts with <c-z>, due to case.)
o Better and controlable GUI dialogs!!
o Better and controlable console dialogs.
  * Multiline text boxes
  * Check boxes:   [X] [ ]
  * Radio buttons: (O) ( )
  * Multiple/arrayed returns.

WONTFIX {{{1

o Explore set syntax=ON/OFF as a means of buffer-specific highlighting
  control. [Too confusing.]
o Pesky Vim 6.0 bug insertion of an "i" character on BufEnter. (Fixed
  in Vim 6.1.)
o File Explorer
  * => Generally the explorer is a hack, the whole thing needs to be
    re-done, spot fixing is not worth the time.
  * seems to be broken immediately after starting Cream/VIM. Similar
    to the calendar, the file explorer seems to show up as empty menu
    item in the Window menu. However, compared to the calendar, I can
    switch to it and the file explorer is there again, just its
    "Window" menu entry has no name. (Wolfgang Hommel)
  * Cream_explorer() doesn't function correctly in an empty buffer.
  * Problems opening paths with spaces
  * Close is broken in GNU/Linux, occasionally W2k

1}}}
 vim:foldmethod=marker
