Integrate JIndent or something
note that a Mark references editor

use smart backspace?

Work on Documentation

Debug Option
        dbgFlow 0, 1, 2, 3, ... think there are some defines in code....

Anomolies
=========

incomplete port of ^t, ^d in input mode
  - '^'^d (remove all indent) isn't supported
  - if cursor is before first non-blank, it is left at the
    first non-blank. Position within indent should be maintained.
  - Replace stack is ignored
  - 'start of insert' should be repositioned, its left alone.

catch rest of ctrl characters

There is no previous context stack

Additional
==========

Keeping MRU list of files is tricky for app independence. For now, keep
list in manager, but list is set up by calls to manager from app. Keep
a list per viewable area (browser in JB). Probably should provide some
kind of switchTo listener, could be call to factory. First cut is only
keeping one list, not list per container.

add option for selecting matcher.

Have an option to allow '\n' to match '.'?

Issues with 'leftover' key bindings. The methods are definitely dependent on
the environment. 

Tool tips in property dialog

do getChar from cache'd segment?

Implement a virtual cursor (use WCursor as a virtual cursor) so that
cursor movement and/or searching can occur without queuing up redraw.
Then have an update method.

Use Character class for iswhitespace...

If big unexpected jump, set previous context. Something that will catch
changes after something like 'Ctrl-Shft-P'.

implement ^C (when there's separate thread for long running things....)

how to display control characters. Could extend view somehow and graphically
fix them up. Won't work for JB. They have their own view. Just extend their
view....

Use the [[ and ]] commands to traverse methods rather than '{' in column 1.
Ahhh, vim has the [m and ]m commands for method traversal

After a '/', '?' search, normal_cmd is not exited in the usual way. What
happens is that it exits when the search is started, and then the search
happens some time later. To really complicate this, when the search happens
from a dialog (like JB), then the exit is as expected, since the thread
that took the keystroke is suspended while the dialog and search are
active. For now, only use the dialog.

In future cleanup command entry to
  - bypass widget completely when possible
  - handle all input and manipulate combo box directly

Handle tags
  - tag generation in java
    - http://www.ars.net/jtags/
    - 

TODO
====
  - Map command. Include way to display current mappings. Mappings of
    function keys and IDE keymap.
  - Implement uppercase bookmarks, across all files.
  - Implement indent, '=' and '=='. Probably use JIndent.
  - Implement internally: '%' command; search and regexp.
  - provide capability to change some command bindings
  - more commands, which ones?
  - improve performance, where? ('.', '<<', '>>')
  - implement and extend EditorPane, Document and AbstractDocument.Content 
    tuned for vi. Make sure to always be able to go native.
  - Commands that take a program, e.g. '!', '=', have some way to hook
    them to other loaded classes.

Details
=======
When file smaller than window, there can be some spurious null pointer's,
  Got the following when 'L', the file was smaller than the window,
  the file was created by 'New... panel', and some designer stuff.
  Wrote the file, and the created file has no terminating .
  Messed around and came back, the file still has no final  but
  i'm not getting the error? Hmm.
  java.lang.NullPointerException:
    at com.raelity.tools.vi.swing.TextView.getLineStartOffset(TextView.java:320)
    at com.raelity.tools.vi.Normal.nv_scroll(Normal.java, Compiled Code)
    at com.raelity.tools.vi.Normal.normal_cmd(Normal.java, Compiled Code)
    at com.raelity.tools.vi.Normal.processInputChar(Normal.java, Compiled Code)
    at com.raelity.tools.vi.GetChar.gotc(GetChar.java, Compiled Code)
    at com.raelity.tools.vi.swing.ViManager.keyStroke(ViManager.java, Compil
  The problem revolves around the getViewBottomLine() method when the view
  is not filled with the file. This method is widely used, so i may not fix
  it right away for fear of destabizing.


Copyright © 1998-2000, 2007 Raelity Engineering
Contact Raelity Engineering