TODO file (? means the feature may be implemented, but not definitely)
------------------------------------------------------------------------

For the future (no targeted version, catch-all)
- Compatibility with vi/emacs status files so we can let other editors 
  know we're in a file?
- FriBidi support?
- Port to DJGPP?
- Make matching bracket searches sophisticated enough to skip over
  brackets inside comments?
- Allow indentation of marked text by spaces as well as tabs?
- Allow indentation to add just enough columns to reach the nearest
  multiple of tabsize, rather than always adding tabsize columns?
- Allow conversion between different character sets.  Maybe use glib's
  iconv() if the system's iconv() is inadequate, since we already use
  glib's vsnprintf() if the system lacks vsnprintf()?
- Allow color syntaxes to apply to more than just color, so that we can
  e.g. specify a different alternate spell checker depending on which
  file type we have open.
- Allow even better file type detection than we have currently, e.g. 
  through libmagic?
- Allow setting marks (saved positions, not to be confused with the mark
  set via Ctrl-^) at various lines and/or columns in the buffer, and
  allow movement between them with a single keystroke? (we're running 
  out of keystrokes)
- Allow searching for and replacing newlines.
- Fix handling of bad/incomplete UTF-8 sequences to display one Unicode
  FFFD (Replacement Character) per sequence instead of one per byte.

For version 2.4:
- New regression framework built on expect.
- Allow text searches in the help browser.
- Handle window resizes better.  After we resize, we should stay
  wherever we were before we resized, as Pico does.
- Add the ability to move to different lines of the screen with a single
  keystroke, e.g. M-` (M-~) to go to the top line, M-& (M-7) to go to
  the center line, and M-' (M-") to go to the last line.
- Detect when we're pasting text, so that we can handle it differently
  (i.e. faster than currently with screen redraws)
- Allow piping marked text to an external command and replacing it with
  the command's output (as the internal spell checker already does with
  the "spell" command)?

For version 2.2:
- Rebindable keys? [DONE]
- Undo/Redo keys (M-U and M-E)? [DONE]
- Fix problems with color syntaxes' highlighting lines too aggressively [DONE]
- Allow nano to work like a pager (read from stdin) [DONE]
- Allow color syntaxes to be selected based on more than just filename
  extension, [DONE]
- Allow soft wrapping as well as hard wrapping? [DONE]

For version 2.0:
- UTF-8 support. [DONE]
- Support for paragraph searches. [DONE]
- Support for justifying the entire file at once. [DONE]
- Support for filename searches in the file browser. [DONE]
- Keystroke to implement "Add next sequence as raw" like vi's ^V. [DONE]
- Spell check selected text only. [DONE]
- Make "To Line" (^W^T) and "Read from Command" (^R^X) reenter their
  parent menu when their keystroke is entered a second time (^W^T^T and
  (^R^X^X) (requires figuring out when to keep cursor position and when
  not to). [DONE]
- Fix resetstatuspos global which we shouldn't have. [DONE]

For version 1.2:
- Single line scroll up/down? [DONE]
- Color syntax highlighting? (certainly seems like there's a demand for
  it.) [DONE]
- .nanorc [DONE]
- Backup making (filename~)? [DONE]
- Search (etc.) string history [DONE]
- Implement Pico's -j and -g flags, as they are pretty easy to do.
  [DONE]
- Make mouse support work with clicking on the shortcuts (-m).  Must
  make global variable pointing to current shortcut list to determine
  what keystroke to ungetch(). [DONE].
- Implement -o (chroot of sorts) [DONE]
- Allow -r to take a negative argument, meaning right margin instead of
  left (allows resizing that way), formerly -W arg. [DONE]

For version 1.0:
- Implement Spelling [DONE]
- Implement Help [DONE]
- Internationalization [In progress, translators welcome!]
- Allow nano to be resized in X. [DONE]
- On page up/down, put the cursor on the first line (like Pico), not the
  center line [DONE]
- Rewrite edit_refresh, if at all possible [DONE]
- Implement justify function [DONE]
- Cut to end of line [DONE]
- Built-in speller command [needed for version 1.0] [DONE]
- Better statusbar interaction (scrolling, tab completion for filename)
  [needed for version 1.0] [DONE]
- Now do username completion [DONE].
- Unjustify command (^U after ^J) [DONE =-].
- Username completion (~user) [DONE =-].

$Id$
