71 lines
3.6 KiB
Plaintext
71 lines
3.6 KiB
Plaintext
#
|
|
# @(#)TODO 1.1 94/10/31 SMI; from S5R3 1.2.1.1
|
|
#
|
|
|
|
This file documents things I would like to see done to curses
|
|
that I simply don't have time for. I can design them but there
|
|
is no time to implement them. Someone should.
|
|
|
|
HP terminals: performance on HP terminals is terrible, because it
|
|
outputs ESC & d x before every character that has the highlighting
|
|
changed. I was unable to make it work without doing this. To make
|
|
it work, you're going to have to keep a data structure of cookies
|
|
that are on the screen, and when one gets in the way, change it.
|
|
This is hard because operations like ins/del line, ins/del char,
|
|
ceol, and clear affect the cookie map. The philosophy has to change,
|
|
currently it's "output cookies everywhere", it should change to
|
|
"output as few cookies as you can get away with".
|
|
|
|
Lots of variations. The Ann Arbor Guru (and to a lesser extent the
|
|
Ambassador) point out an amazing number of modes you might want to
|
|
run the terminal in. Different sizes, different amounts of memory,
|
|
normal or reverse video, with or without a status line, with or without
|
|
context, with or without destructive backspace, etc. Including entries
|
|
for all these possibilities is not only a lot of work (even with use=
|
|
you have to list them all) but each one takes up lots of space. Adding
|
|
a new option with two possibilities doubles the number of terminal types
|
|
(and hence the amount of disk spaced needed for the binaries).
|
|
|
|
The solution to this is to make setupterm smarter about how it looks
|
|
up terminal type names. It should start with $TERM. If that isn't
|
|
there, it should strip off the final -opt and try that. Keep stripping
|
|
off -opt's until you find one. Then look for "delta files" showing
|
|
how to change the default for these options. For example
|
|
aaa-60-s-rv
|
|
Assume there is no aaa-60-s-rv. Try aaa-60-s. That fails, so try
|
|
aaa-60. Suppose that works. You read in aaa-60, then search for
|
|
aaa+s (the + is used internally to indicate an option, see the source
|
|
code to terminfo for examples.) The contents of aaa+s is applied as
|
|
a difference to aaa-60. Then aaa+rv is looked up, and it is applied
|
|
as a delta. This will require a new value in a compiled terminfo file:
|
|
"unknown", plus "cancel". If you interpret the current missing values
|
|
(0 for Bool, -1 for int, 0 for string) as "unknown" in a delta (rather
|
|
than "not present") you'll just need one new value - "cancel", which
|
|
could be -1 for bool, -2 for int, -1 for string. -2 should be defined
|
|
as 377, 376.
|
|
|
|
By convention, -60 means "60 lines", -x80 means "by 80", that is, "80
|
|
columns", and -60x80 means "60 lines, 80 cols". These should override
|
|
the default "lines" and "columns", although this is a last resort, and
|
|
you should check for the appropriate file first (there might be some
|
|
other changes to some init strings, for example.)
|
|
|
|
It would be nice to be able to define capabilities as strings and include
|
|
them in the middle of other capabilities. For instance:
|
|
foo,
|
|
is2=\E[^(lines);^(columns)z,
|
|
might mean that the values of "lines" and "columns" (taken as text)
|
|
should be inserted at these two points, to initialize the screen size.
|
|
The ^(cap) notation won't conflict with existing usage. The interpretation
|
|
must be done by setupterm, since at compile time you don't know what
|
|
the capabilities values are. Some clever storage scheme will be needed
|
|
since the compiler interprets existing ^'s, e.g. use the parity bit.
|
|
|
|
Some future code changes and optimizations:
|
|
|
|
Get rid of _lastch since the information is never used
|
|
In _init_costs, add some decisions about using ins/del line
|
|
vs. scrolling regions so that it doesn't have to
|
|
be constantly checked
|
|
Rewrite _showstring()
|