14a1a9510SRong-En Fan------------------------------------------------------------------------------- 2*e1865124SBaptiste Daroussin-- Copyright 2020 Thomas E. Dickey -- 3*e1865124SBaptiste Daroussin-- Copyright 1998-2010,2011 Free Software Foundation, Inc. -- 44a1a9510SRong-En Fan-- -- 54a1a9510SRong-En Fan-- Permission is hereby granted, free of charge, to any person obtaining a -- 64a1a9510SRong-En Fan-- copy of this software and associated documentation files (the -- 74a1a9510SRong-En Fan-- "Software"), to deal in the Software without restriction, including -- 84a1a9510SRong-En Fan-- without limitation the rights to use, copy, modify, merge, publish, -- 94a1a9510SRong-En Fan-- distribute, distribute with modifications, sublicense, and/or sell copies -- 104a1a9510SRong-En Fan-- of the Software, and to permit persons to whom the Software is furnished -- 114a1a9510SRong-En Fan-- to do so, subject to the following conditions: -- 124a1a9510SRong-En Fan-- -- 134a1a9510SRong-En Fan-- The above copyright notice and this permission notice shall be included -- 144a1a9510SRong-En Fan-- in all copies or substantial portions of the Software. -- 154a1a9510SRong-En Fan-- -- 164a1a9510SRong-En Fan-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- 174a1a9510SRong-En Fan-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- 184a1a9510SRong-En Fan-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- 194a1a9510SRong-En Fan-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- 204a1a9510SRong-En Fan-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- 214a1a9510SRong-En Fan-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- 224a1a9510SRong-En Fan-- USE OR OTHER DEALINGS IN THE SOFTWARE. -- 234a1a9510SRong-En Fan-- -- 244a1a9510SRong-En Fan-- Except as contained in this notice, the name(s) of the above copyright -- 254a1a9510SRong-En Fan-- holders shall not be used in advertising or otherwise to promote the -- 264a1a9510SRong-En Fan-- sale, use or other dealings in this Software without prior written -- 274a1a9510SRong-En Fan-- authorization. -- 284a1a9510SRong-En Fan------------------------------------------------------------------------------- 29*e1865124SBaptiste Daroussin-- $Id: TO-DO,v 1.58 2020/02/02 23:34:34 tom Exp $ 304a1a9510SRong-En Fan------------------------------------------------------------------------------- 310e3d5408SPeter Wemm 320e3d5408SPeter WemmSHORT-TERM TO-DO ITEMS: 330e3d5408SPeter Wemm 340e3d5408SPeter WemmKnown Problems: 350e3d5408SPeter Wemm 364a1a9510SRong-En Fan+ libtool does not work with GNAT. 370e3d5408SPeter Wemm 384a1a9510SRong-En Fan+ The screen optimization has been tested only in an ad hoc manner. We should 390e3d5408SPeter Wemm develop a good set of regression tests to cover lib_doupdate.c and 400e3d5408SPeter Wemm lib_mvcur.c. 410e3d5408SPeter Wemm 424a1a9510SRong-En Fan+ Magic cookie support (for nonzero xmc values) does not work, since the logic 434a1a9510SRong-En Fan does not take into account refresh. Also, the initial optimize does not 444a1a9510SRong-En Fan adjust the current location when a cookie is emitted. 450e3d5408SPeter Wemm 464a1a9510SRong-En Fan+ Scrolling optimization has holes: for example, it forces repaints of the 470e3d5408SPeter Wemm screen between calls to refresh(). 480e3d5408SPeter Wemm 494a1a9510SRong-En Fan+ SVr4 uses slightly different rules for determining when softkeys are shown. 500e3d5408SPeter Wemm For example, they are initially displayed (before the ncurses 'e' test 510e3d5408SPeter Wemm activates them), and a touchwin can apparently also force them to be 520e3d5408SPeter Wemm displayed. 530e3d5408SPeter Wemm 540e3d5408SPeter Wemm+ The code departs from perfect 8-bit cleanness in one respect; you cannot 554a1a9510SRong-En Fan specify a character \200 as part of a capability string, because the 564a1a9510SRong-En Fan terminfo library interprets \200 as a request to embed NUL (\000) at that 574a1a9510SRong-En Fan point. This is a legacy terminfo property we can't mess with. 580e3d5408SPeter Wemm 594a1a9510SRong-En Fan+ The window classes defined in the c++ subdirectory need documentation. Some 604a1a9510SRong-En Fan C++ programmer could earn a lot of good karma by doing this... 614a1a9510SRong-En Fan 624a1a9510SRong-En Fan+ vid_attr() should support the set_a_attributes (sgr1) string, but does not. 634a1a9510SRong-En Fan There appear to be no terminals that require that functionality. 640e3d5408SPeter Wemm 655d08fb1fSRong-En Fan+ the configure --disable-ext-funcs option does not work for Ada95 tree. 665d08fb1fSRong-En Fan 675d08fb1fSRong-En Fan+ the --with-pthread configuration builds for Cygwin, but does not work 685d08fb1fSRong-En Fan properly (test/worm.c shows all of the worms in the same location). 695d08fb1fSRong-En Fan 705d08fb1fSRong-En Fan+ the --enable-rpath configure option builds for the corresponding platforms; 715d08fb1fSRong-En Fan however combining it with --with-ticlib and --with-termlib does not always 725d08fb1fSRong-En Fan produce libraries that can be run without setting environment variables. 735d08fb1fSRong-En Fan Building those with libtool does not work either. (This is a problem with 745d08fb1fSRong-En Fan the BSD platforms). 755d08fb1fSRong-En Fan 7606bfebdeSXin LI+ more work is needed to make the MinGW port support ordinary terminals. 7706bfebdeSXin LI 780e3d5408SPeter WemmPortability (or lack thereof): 790e3d5408SPeter Wemm 804a1a9510SRong-En Fan+ Users of older System V UNIXes (but not Solaris, and probably not SVr4) may 814a1a9510SRong-En Fan trip over a known problem with the signal-handling code which causes abrupt 824a1a9510SRong-En Fan termination of ncurses applications following resume from a ^Z suspend (this 834a1a9510SRong-En Fan problem was first seen running lynx). You will not see this problem if you 8406bfebdeSXin LI are using one of the 4.4BSD derivatives like such as, NetBSD, or BSDI, or 8506bfebdeSXin LI systems using that convention. For details, see the analysis in the header 8606bfebdeSXin LI comment of ncurses/tty/lib_tstp.c . 870e3d5408SPeter Wemm 884a1a9510SRong-En Fan+ In theory, vwprintw and vwscanf are supposed to use the older varargs.h 895ca44d1cSRong-En Fan interface for handling variadic argument lists (and are deprecated by X/Open 9006bfebdeSXin LI for that reason). Many newer systems do no have varargs.h, instead they have 9106bfebdeSXin LI only the newer X/Open-standard stdargs.h equivalent. So these functions use 9206bfebdeSXin LI stdargs instead. This is unlikely to be a problem unless you're building 9306bfebdeSXin LI ncurses on a System V old enough to only have varargs.h. (Solaris 2.5.1 used 9406bfebdeSXin LI the stdarg.h binding as well). 950e3d5408SPeter Wemm 9606bfebdeSXin LI+ If you're using a system old enough not to have a native vsscanf(3) in its 9706bfebdeSXin LI library, vwscanw() will not work. If you want to fix this, add an 984a1a9510SRong-En Fan implementation to ncurses/vsscanf.c. 990e3d5408SPeter Wemm 1005ca44d1cSRong-En Fan+ The C++ binding fails to build with a few C++ compilers. 1010e3d5408SPeter Wemm 1020e3d5408SPeter Wemm+ terminfo.5 does not format with the SunOS (and most other platform's) tbl 1034a1a9510SRong-En Fan utility because it relies on a diversion for each table entry. Get the 1044a1a9510SRong-En Fan groff package. 1050e3d5408SPeter Wemm 1060e3d5408SPeter WemmUntested features: 1070e3d5408SPeter Wemm 1084a1a9510SRong-En Fan+ The code for the HP color model using set_color_pair is untested. 1090e3d5408SPeter Wemm 1104a1a9510SRong-En Fan+ The code for handling soft labels on a terminal type with built-in support 1110e3d5408SPeter Wemm for them (num_labels > 0, label_height, label_width, label_format, label_off, 1120e3d5408SPeter Wemm label_on, plab_norm, lab_f*) has not been tested. The label_format and 1130e3d5408SPeter Wemm lab_f* capabilities aren't presently used. 1140e3d5408SPeter Wemm 1150e3d5408SPeter WemmLONGER-TERM TO-DO ITEMS: 1160e3d5408SPeter Wemm 1170e3d5408SPeter Wemm1. Extended COSE conformance 1180e3d5408SPeter Wemm 1195ca44d1cSRong-En FanThere is an XPG4 standard released in 1996 which describes a superset 1200e3d5408SPeter Wemmof the SVr4 API. The library is BASE conformant with this standard. 1210e3d5408SPeter WemmWe would like to make ncurses fully conformant at the EXTENDED level 1220e3d5408SPeter Wemmsupporting internationalization. 1230e3d5408SPeter Wemm 1240e3d5408SPeter Wemm2. DOS port 1250e3d5408SPeter Wemm 1264a1a9510SRong-En FanOnly a few of the files in the library depend on the terminfo format. 1270e3d5408SPeter WemmIt should be possible to further kernelize the package, then rewrite 1280e3d5408SPeter Wemma small number of core files to produce a functionally-compatible 1290e3d5408SPeter Wemmport that would do updates to a memory-mapped screen area. The first 1300e3d5408SPeter Wemmresult of this would be a DOS port. 1310e3d5408SPeter Wemm 1320e3d5408SPeter Wemm3. X port 1330e3d5408SPeter Wemm 1340e3d5408SPeter WemmIt would be nice if ncurses could recognize when it was running under X and 1350e3d5408SPeter Wemmmaintain its own window. With this feature, all ncurses programs would 1360e3d5408SPeter Wemmautomatically become X programs. The challenge is to handle resize events 1370e3d5408SPeter Wemmproperly. 1380e3d5408SPeter Wemm 1390e3d5408SPeter Wemm4. Unused capabilities 1400e3d5408SPeter Wemm 1410e3d5408SPeter WemmThe currently unused capabilities fall naturally into several groups: 1420e3d5408SPeter Wemm 1430e3d5408SPeter WemmA. Status-line capabilities: 1440e3d5408SPeter Wemm 1450e3d5408SPeter Wemm Booleans: has_status_line, status_line_esc_ok. 1460e3d5408SPeter Wemm Numerics: width_status_line. 1470e3d5408SPeter Wemm Strings: dis_status_line, from_status_line, to_status_line. 1480e3d5408SPeter Wemm 1490e3d5408SPeter WemmSystem V Release 1 curses made no use of these at all. SVr4's use, if 1500e3d5408SPeter Wemmany, is unknown. From the AT&T termcap file it looks like curses, in general, 1510e3d5408SPeter Wemmshouldn't use them; terminal variants with status lines have their line count 1520e3d5408SPeter Wemmdecremented by 1, suggesting that curses is supposed to leave the status line 1530e3d5408SPeter Wemmalone. 1540e3d5408SPeter Wemm 1550e3d5408SPeter WemmB. Printer capabilities: 1560e3d5408SPeter Wemm 1570e3d5408SPeter Wemm Boolean: col_addr_glitch, cr_cancels_micro_mode, has_print_wheel, 1580e3d5408SPeter Wemm row_addr_glitch, semi_auto_right_margin, cpi_changes_res, 1590e3d5408SPeter Wemm lpi_changes_res. 1600e3d5408SPeter Wemm Numeric: buffer_capacity, dot_horz_spacing, dot_vert_spacing, 1610e3d5408SPeter Wemm max_micro_address, max_micro_jump, micro_col_size, 1620e3d5408SPeter Wemm micro_line_size, number_of_pins, output_res_char, 1630e3d5408SPeter Wemm output_res_line, output_res_horz_inch, print_rate, 1640e3d5408SPeter Wemm wide_char_size, bit_image_entwining, bit_image_type. 1650e3d5408SPeter Wemm String: down_half_line, form_feed, up_half_line, set_left_margin, 1660e3d5408SPeter Wemm set_right_margin, clear_margins, change_char_pitch 1670e3d5408SPeter Wemm ... set_page_length (all the SVr4 printer caps), 1680e3d5408SPeter Wemm 1690e3d5408SPeter WemmCurses doesn't use these. 1700e3d5408SPeter Wemm 1710e3d5408SPeter WemmC. Printer-control capabilities: 1720e3d5408SPeter Wemm 1730e3d5408SPeter Wemm Boolean: prtr_silent. 1740e3d5408SPeter Wemm Strings: print_screen, prtr_on, prtr_off, prtr_non. 1750e3d5408SPeter Wemm 1760e3d5408SPeter WemmCurses doesn't use these. 1770e3d5408SPeter Wemm 1780e3d5408SPeter WemmD. Dialer strings: 1790e3d5408SPeter Wemm 1800e3d5408SPeter Wemm Strings: hangup, dial_phone, quick_dial, tone, pulse, flash_hook, 1810e3d5408SPeter Wemm fixed_pause, wait_tone. 1820e3d5408SPeter Wemm 1830e3d5408SPeter WemmCurses doesn't use these. 1840e3d5408SPeter Wemm 1850e3d5408SPeter WemmE. Window and virtual-terminal capabilities: 1860e3d5408SPeter Wemm 1870e3d5408SPeter Wemm Numerics: maximum_windows, virtual_terminal. 1880e3d5408SPeter Wemm Strings: req_for_input, create_window, goto_window, set_window. 1890e3d5408SPeter Wemm 1900e3d5408SPeter WemmThese seem to be fossils from some AT&T experiments on character-based 1910e3d5408SPeter Wemmwindow systems that never escaped the lab. The virtual_terminal cap had 1920e3d5408SPeter Wemmsomething to do with building terminal emulations into tty line disciplines. 1930e3d5408SPeter Wemm 1940e3d5408SPeter WemmF. Unused VDT capabilities: 1950e3d5408SPeter Wemm 1960e3d5408SPeter Wemm Booleans: erase_overstrike, has_meta_key, insert_null_glitch, 1970e3d5408SPeter Wemm move_insert, dest_tabs_magic_smso, transparent_underline, 1980e3d5408SPeter Wemm needs_xon_xoff, hard_cursor. 1990e3d5408SPeter Wemm Numerics: lines_of_memory, buttons. 2000e3d5408SPeter Wemm Strings: pkey_key, pkey_local, pkey_xmit, underline_char, 2010e3d5408SPeter Wemm enter_xon_mode, exit_xon_mode, xon_character, xoff_character, 2020e3d5408SPeter Wemm display_clock, remove_clock, user[0-5], display_pc_char, 2030e3d5408SPeter Wemm enter_scancode_mode, exit_scancode_mode, pc_term_options, 2040e3d5408SPeter Wemm scancode_escape, alt_scancode_esc. 2050e3d5408SPeter Wemm 2060e3d5408SPeter WemmThese are the potentially important ones for ncurses. Notes: 2070e3d5408SPeter Wemm 2080e3d5408SPeter Wemm i) ncurses doesn't need move_insert; it never uses cup/hpa/vpa while 2090e3d5408SPeter Wemm insert_mode is on. 2100e3d5408SPeter Wemm 2110e3d5408SPeter Wemm ii) We probably don't care about dest_tabs_magic_smso; only 2120e3d5408SPeter Wemm Telerays used it and they're all long obsolete. 2130e3d5408SPeter Wemm 2144a1a9510SRong-En Fan-- vile:txtmode 215