-------------------------------------------------------------------------------
-- Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.               --
--                                                                           --
-- Permission is hereby granted, free of charge, to any person obtaining a   --
-- copy of this software and associated documentation files (the             --
-- "Software"), to deal in the Software without restriction, including       --
-- without limitation the rights to use, copy, modify, merge, publish,       --
-- distribute, distribute with modifications, sublicense, and/or sell copies --
-- of the Software, and to permit persons to whom the Software is furnished  --
-- to do so, subject to the following conditions:                            --
--                                                                           --
-- The above copyright notice and this permission notice shall be included   --
-- in all copies or substantial portions of the Software.                    --
--                                                                           --
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS   --
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF                --
-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN --
-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,       --
-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR     --
-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE --
-- USE OR OTHER DEALINGS IN THE SOFTWARE.                                    --
--                                                                           --
-- Except as contained in this notice, the name(s) of the above copyright    --
-- holders shall not be used in advertising or otherwise to promote the      --
-- sale, use or other dealings in this Software without prior written        --
-- authorization.                                                            --
-------------------------------------------------------------------------------
-- $Id: TO-DO,v 1.51 2008/10/11 19:22:27 tom Exp $
-------------------------------------------------------------------------------

SHORT-TERM TO-DO ITEMS:

Known Problems:

+ libtool does not work with GNAT.

+ The screen optimization has been tested only in an ad hoc manner.  We should
  develop a good set of regression tests to cover lib_doupdate.c and
  lib_mvcur.c.

+ Magic cookie support (for nonzero xmc values) does not work, since the logic
  does not take into account refresh.  Also, the initial optimize does not
  adjust the current location when a cookie is emitted.

+ Scrolling optimization has holes:  for example, it forces repaints of the
  screen between calls to refresh().

+ SVr4 uses slightly different rules for determining when softkeys are shown. 
  For example, they are initially displayed (before the ncurses 'e' test
  activates them), and a touchwin can apparently also force them to be
  displayed.

+ The code departs from perfect 8-bit cleanness in one respect; you cannot
  specify a character \200 as part of a capability string, because the
  terminfo library interprets \200 as a request to embed NUL (\000) at that
  point.  This is a legacy terminfo property we can't mess with.

+ The window classes defined in the c++ subdirectory need documentation.  Some
  C++ programmer could earn a lot of good karma by doing this...

+ vid_attr() should support the set_a_attributes (sgr1) string, but does not. 
  There appear to be no terminals that require that functionality.

+ the configure --disable-ext-funcs option does not work for Ada95 tree.

+ the --with-pthread configuration builds for Cygwin, but does not work
  properly (test/worm.c shows all of the worms in the same location).

+ the --enable-rpath configure option builds for the corresponding platforms;
  however combining it with --with-ticlib and --with-termlib does not always
  produce libraries that can be run without setting environment variables.
  Building those with libtool does not work either.  (This is a problem with
  the BSD platforms).

Portability (or lack thereof):

+ Users of older System V UNIXes (but not Solaris, and probably not SVr4) may
  trip over a known problem with the signal-handling code which causes abrupt
  termination of ncurses applications following resume from a ^Z suspend (this
  problem was first seen running lynx).  You will not see this problem if you
  are running Linux or one of the 4.4BSD derivatives like FreeBSD, NetBSD, or
  BSDI.  For details, see the analysis in the header comment of
  ncurses/tty/lib_tstp.c .

+ In theory, vwprintw and vwscanf are supposed to use the older varargs.h
  interface for handling variadic argument lists (and are deprecated by X/Open
  for that reason).  Linux doesn't have varargs.h, it has the newer
  X/Open-standard stdargs.h equivalent.  So these functions use stdargs
  instead.  This is unlikely to be a problem unless you're building ncurses on
  a System V old enough to only have varargs.h.  (Solaris 2.5.1 used the
  stdarg.h binding as well).

+ If you're using a BSD earlier than 4.4BSD, or a Linux old enough not to have
  a native vsscanf(3) in its library, vwscanw() will not work.  You lose.  (It
  should work on any System V, however).  If you want to fix this, add an
  implementation to ncurses/vsscanf.c.

+ The C++ binding fails to build with a few C++ compilers.

+ terminfo.5 does not format with the SunOS (and most other platform's) tbl
  utility because it relies on a diversion for each table entry.  Get the
  groff package.

Untested features:

+ The code for the HP color model using set_color_pair is untested.

+ The code for handling soft labels on a terminal type with built-in support
  for them (num_labels > 0, label_height, label_width, label_format, label_off,
  label_on, plab_norm, lab_f*) has not been tested.  The label_format and
  lab_f* capabilities aren't presently used.

LONGER-TERM TO-DO ITEMS:

1. Extended COSE conformance

There is an XPG4 standard released in 1996 which describes a superset
of the SVr4 API.  The library is BASE conformant with this standard.
We would like to make ncurses fully conformant at the EXTENDED level
supporting internationalization.

2. DOS port

Only a few of the files in the library depend on the terminfo format.
It should be possible to further kernelize the package, then rewrite 
a small number of core files to produce a functionally-compatible
port that would do updates to a memory-mapped screen area.  The first
result of this would be a DOS port.

3. X port

It would be nice if ncurses could recognize when it was running under X and
maintain its own window.  With this feature, all ncurses programs would
automatically become X programs.  The challenge is to handle resize events
properly.

4. Unused capabilities

The currently unused capabilities fall naturally into several groups:

A. Status-line capabilities:

	Booleans: has_status_line, status_line_esc_ok.
	Numerics: width_status_line.
	Strings: dis_status_line, from_status_line, to_status_line.

System V Release 1 curses made no use of these at all.  SVr4's use, if
any, is unknown.  From the AT&T termcap file it looks like curses, in general,
shouldn't use them; terminal variants with status lines have their line count
decremented by 1, suggesting that curses is supposed to leave the status line
alone.

B. Printer capabilities:

	Boolean: col_addr_glitch, cr_cancels_micro_mode, has_print_wheel,
		row_addr_glitch, semi_auto_right_margin, cpi_changes_res,
		lpi_changes_res.
	Numeric: buffer_capacity, dot_horz_spacing, dot_vert_spacing,
		max_micro_address, max_micro_jump, micro_col_size,
		micro_line_size, number_of_pins, output_res_char,
		output_res_line, output_res_horz_inch, print_rate,
		wide_char_size, bit_image_entwining, bit_image_type.
	String: down_half_line, form_feed, up_half_line, set_left_margin,
		set_right_margin, clear_margins, change_char_pitch
		... set_page_length (all the SVr4 printer caps),

Curses doesn't use these.

C. Printer-control capabilities:

	Boolean: prtr_silent.
	Strings: print_screen, prtr_on, prtr_off, prtr_non.

Curses doesn't use these.

D. Dialer strings:

	Strings: hangup, dial_phone, quick_dial, tone, pulse, flash_hook,
		fixed_pause, wait_tone.

Curses doesn't use these.

E. Window and virtual-terminal capabilities:

	Numerics: maximum_windows, virtual_terminal.
	Strings: req_for_input, create_window, goto_window, set_window.

These seem to be fossils from some AT&T experiments on character-based
window systems that never escaped the lab.  The virtual_terminal cap had
something to do with building terminal emulations into tty line disciplines.

F. Unused VDT capabilities:

	Booleans: erase_overstrike, has_meta_key, insert_null_glitch,
		move_insert, dest_tabs_magic_smso, transparent_underline,
		needs_xon_xoff, hard_cursor.
	Numerics: lines_of_memory, buttons.
	Strings: pkey_key, pkey_local, pkey_xmit, underline_char, 
		enter_xon_mode,	exit_xon_mode, xon_character, xoff_character, 
		display_clock, remove_clock, user[0-5], display_pc_char,
		enter_scancode_mode, exit_scancode_mode, pc_term_options, 
		scancode_escape, alt_scancode_esc.

These are the potentially important ones for ncurses.  Notes:

	i) ncurses doesn't need move_insert; it never uses cup/hpa/vpa while
		insert_mode is on.

	ii) We probably don't care about dest_tabs_magic_smso; only
		Telerays used it and they're all long obsolete.

-- vile:txtmode
