. In some cases (e.g., disabled fields), prefer no info to wrong
info -KW
* extended KEYMAP option: additional field can specify DIRED to request
mapping in the Dired mode key_override table rather than the normal keymap
table. Documented the DIRED field and default override mapping in lynx.cfg
-KW
* corrected KEYMAP display for dired mode. It could display the normal binding
when that wouldn't actually be used, for example if a key is bound to
DO_NOTHING for DIRED. The logic deciding whether to show a separate line for
uppercase letters was only looking at the normal keymap -KW
* reset the edit_mode flag (indication of Dired mode) in various places, so the
flag doesn't stat TRUE after a new page has been loaded. For example,
invoking the forms based 'O'ptions page from a Dired directory view would
leave the Dired key bindings enabled within the Options page -KW
* for LYNXMESSAGES: page of recent statusline messages, removed setting of the
LYforce_no_cache flag in getfile(). Set the flag in LYMainLoop.c instead,
but only for following a link. This makes the page act more like a normal
no-cache document, for example returning to it via PREV_DOC does not cause an
automatic update. The special handling in LYMainLoop.c is necessary because
the link to LYNXMESSAGES: appears on the History Page, and following a link
from the History Page (as well as some other generated user interface pages)
normally implies overriding of no-cache behavior which we don't want in this
case -KW
* in LYNXMESSAGES: page, number recent statusline messages in historic order,
starting with 1 for the oldest. This should make it more obvious that they
are listed latest-first. Add "(No messages yet)" text if there are no
messages. Removed generation of invalid -KW
* use a temporary file instead of the normal .lynxrc file for saving and
restoring current settings in reload_read_cfg(). This avoids unexpected side
effects of lynx.cfg reloading (LYNXCFG://reload action), i.e. silent
modification or first-time generation of .lynxrc contents. In principle this
should make reloading of lynx.cfg usable for accounts that don't allow saving
of personal settings (i.e. option_save restriction, implied by -anonymous)
if other restrictions don't forbid it; but currently the option_save
restriction is still obeyed for saving to the temporary file (so that
reloading of lynx.cfg is prevented) -KW
* tweaks for LYNXCFG: and LYNXCOMPILEOPTS: pages: honor REUSE_TEMPFILES
setting if pages need to be regenerated, and clean up the memory for holding
the file URLs in free_lynx_cfg(). Recover if the tempfile has unexpectedly
disappeared, by regenerating it. Also regenerate tempfile if NOCACHE key
('x') is used. Added extra checks before doing automatic uncaching of
previous page in LYNXCFG://reload code, to test whether the previous page is
really a LYNXCFG: view -KW
* corrected problems with "show color" in forms Options page. Omit "ON" choice
if color is not possible (but saving allowed). When option_save restriction
was in effect, the ON/OFF initialization was wrong (resulting in unwanted
toggling of color each time options were changed in an anonymous account) -KW
* tweaks of reload_read_cfg() for retaining "show color" setting and for
updating display_lines (user_mode may have changed) -KW
* change for HTParse: if there is a hostname part, recognize a '?' as ending
it if there are no further slash characters -KW
* tweaks in configure.in and INSTALLATION: describe correctly what
--disable-dired-override does. Rename --disable-dired-archive to
--disable-dired-dearchive. Clarified INSTALLATION text for
--disable-full-paths. Changed some "define" to "prevent defining" -KW
* don't try to put cursor in last screen position for hiding in
show_main_statusline if -show_cursor/SHOW_CURSOR is on. The show_cursor
behavior may have been turned on to avoid problems with curses libs or
terminal types that cannot deal with it correctly. On pages with no links,
for example SOURCE display, this may leave the cursor at the end of the
statusline message if show_cursor is on. This just restores previous
versions' behavior in that case. On pages with links, the movement is
unnecessary anyway since the cursor will move again to the current link -KW
* removed a bug in automatic textarea growing. Textarea would grow by
one line unnecessarily if enter was used on the last input line on a
screen (if that was not actually the last line in the textarea). New
function HText_TAHasMoreLines() to help with this -KW
* revision of "nonsticky" behavior / options. Got rid of "sticky" terminology.
Renamed the controlling option to TEXTFIELDS_NEED_ACTIVATION and command line
flag -tna.
Compiling in of this mode can be disabled, see in userdefs.h under
TEXTFIELDS_MAY_NEED_ACTIVATION. Two versions of "Textfields Need
Activation" mode are provided. The default mode (simpler yet better IMO)
highlights an inactive selected text input fields like a current normal
anchor. The alternative variant (may go away later?) behaves like VH's
previous implementation and gets used when compiling with
-DINACTIVE_INPUT_STYLE_VH.
Many bugs that would occur in somewhat unusual circumstances are fixed, for
both variants. (Action of various commands on TEXT_SUBMIT_TYPE fields,
interaction with mouse selection, ...) Selecting an inactive input field with
the mouse will activate it. Various tweaks to make sure selecting a field in
this way will put the editing cursor at the right position (even if the line
had been scrolled / might be scrolled on entering the line editor), at least
with NCURSES mouse support. Also, -show_cursor now in general works as
expected. (In the INACTIVE_INPUT_STYLE_VH variant, cursor may sometimes end
up on the statusline after error messages.) -KW
* treat input lines of the same textarea more like one entity, as far as
"Textfields Need Activation" is concerned, as long as movement among those
lines is with PREV_LINK/UP_LINK/LPOS_PREV_LINK/NEXT_LINK/DOWN_LINK/
LPOS_NEXT_LINK or ACTIVATE keys (the last one only if TEXTAREA_AUTOGROW is
defined, for consistency with line-appending behavior). I.e. moving among
textarea lines with those keys automatically activates ('enters') the new
field for line editing if the previous one was activated -KW
* modified statusline messages to be more appropriate and specific on non-
activated form fields. (The additional messages are not used or compiled
in if TEXTFIELDS_MAY_NEED_ACTIVATION isn't defined.) Avoid unnecessary
repainting/refreshing of the physical statusline in many cases of moving
among fields and links. Make sure the additional lines shown in Novice
mode are also appropriate -KW
* modified line editor behavior on "disabled" form text fields: instead of
disabling all non-terminating edit keys, allow those that never modify the
field contents. The user can now scroll through a long value in a disabled
field with the arrow keys, rather than being stuck at the end -KW
* the ncurses mouse popup window would overlap the statusline in Novice mode.
Limit the overlap to border area (so at least no significant text gets
corrupted) -KW
* modified code for stickiness of the second kind (ex-STICKY_FIELDS) according
to preliminary proposal from Vlad. Named LEFTARROW_IN_TEXTFIELD_PROMPT.
Does not depend on any conditional compilation symbols, and is now unrelated
to the other kind of "stickiness" discussed above. See lynx.cfg. This isn't
optimal yet (LAKABOFTIF discussion etc..), but better than leaving it as it
was -KW
* made default width of textarea fields (if no COLS attribute given) depend on
window or screen width, instead of using a fixed default of "60". I.e. for
wider windows make better use of available space, and for narrows windows
avoid wrapped textarea lines. Take the usual left/right margins (depending
on current block style) into account. But for -dump don't make fields longer
than 60 anyway (they will just show up as blocks of underscores anyway, not
showing text content) -KW
* changes in code used to create new bookmark file after a bookmark has been
'R'emoved. Change should only affect Unix. Basically, revert back to
behavior used before 2.8.1dev.8 for "normal" files (no symlinks or extra
hard links). I.e. use rename / maybe try "mv" instead of "cp", then change
permission bits explicitly. Using "cp" means running the risk of losing or
truncating the user's bookmark file if for example the disk became full
(although these occasions should be rare - the scratch file we are trying
to copy or rename was written just before without error, usually on the
same filesystem). Some more comments in LYBookmark.c. Note: if you like
your bookmark files, make backup copies of them anyway... -KW
* changed F1 key bindings so it always invokes DWIMHELP, also in the Line
Editor (for all three Binding tables). This means that pressing F1 (if you
have it, and it is correctly mapped and recognized) while in a text form
field will now bring up the Line Editor Help Page for the currently selected
line edit style. Other keys bound to HELP by default ('?', 'h') remain
unchanged, they still always go to the main Help Page -KW
* don't let DWIMHELP show Line Editor help for a text input field that is
disabled -KW
* don't mangle a -cookie_file like /home/user/.lynx_cookies.~1~, only interpret
the '~' as reference to HOME if it's right at the beginning and followed by
'/' and then some more. There are probably other instances where '~' gets
mistreated (in addition to the intentional dropping of "user" from something
like "~user/" in file URLs etc.) -KW
* changed type of EXP_KEYBOARD_LAYOUT tables to LYKbLayout_t. They hold
Unicode values, any similarity to LYKeymap_t is just accidental -KW
* changed EXP_KEYBOARD_LAYOUT logic so that input characters that are
unrepresentable in the current display character set (unless it is UTF-8) get
transformed into '?' instead of some accidentally chosen 8-bit character.
For UTF-8, convert to UTF-8 encoding instead. Note the Line Editor isn't yet
UTF-8 aware; with some care it is possible to enter UTF-8 text, but the
display will be messed up, esp. the cursor position will be shown wrong -KW
* some corrections for TPOS, YANK enhanced lineedit functions -KW
* added back in a block in LYmbcsstrlen that got lost somehow -KW
* fix an array boundary accident in GridText.c -JB
* reiterate that LYNXCGI_LINKS is set by the configure script -PW
* note that patches should be generated by "diff -u" -PG
* modify HTReadProgress so that setting SHOW_KB_RATE false will let the
amount read be shown in bytes/sec -DK
* modify mkdirs.sh to ignore DOS-style device -IZ
* modify CF_PATH_SYNTAX configure macro to accept DOS-style path syntax, for
use in OS/2 EMX port -IZ
* fix some memory leaks in visited-pages tree -IZ
* correct recent change to LYEditmap.c for EBCDIC -PG
* change 'elf32ppc' to 'elf32ppc*' in config.guess to work on MkLinux DR3
(reported by Christopher Conrade Zseleghovski (kkz@MIMUW.EDU.PL>)
* add check to HTConfirmDefault() to ensure that NLS form of "yes" and "no"
are distinct in the first character, revert to English if not -TD
* add configure test for wredrawln, and use CF_CURSES_FUNCS -TD
* improve CF_TERMCAP_LIBS configure test -TD
1999-11-17 (2.8.3dev.15)
* add popup in options menu to control alternate organizations of the
visited links page -IZ
* reformatted src/makefile.dos and src/makefile.dsl to make them simpler to
modify -TD
* add -DOK_OVERRIDE to DIRED_DEFS for djgpp -LP
* change the samples in "URL Schemes Supported in Lynx" so they would appear
without //user:passw@ but //user@ with the explanation of yet another
possibility added in words... So user will not get a wrong impression if
reading that document not so carefully (you know, samples are so easy
remembered without details), -KW, LP
* ifdef bkgd() call in force_repaint that accommodated pre-ncurses 4.1 bugfix,
from early 1997. With current code, a ^L when a popup is displayed causes
the screen colors to be reset (reported by KW) -TD
* undo recent no_color_video check for A_BOLD, A_UNDERLINE since this did not
have the intended effect (reported by KW) -TD
* add note to lynx_url_support.html about lynxcgi -PW
* add user search in partial mode (while loading of the document is in
progress). Scrolling to the string in question is not working properly yet
if you repeat 'n' next time. More work required -LP
* improved makelynx.bat ()
* fixed bug that corrupted memory (resulting in crashes) in situations when
line ends with LY_SOFT_HYPHEN -VH
* correct comment in userdefs.h regarding renaming of
LINKS_AND_FORM_FIELDS_ARE_NUMBERED to LINKS_AND_FIELDS_ARE_NUMBERED and
change DEFAULT_KEYPAD_MODE to LINKS_AND_FIELDS_ARE_NUMBERED -PW
* fix bug that caused lss-enabled lynx to crash on growing textarea or
inserting file into it -VH
* new lynx.cfg option REFERER_WITH_QUERY:[SEND|PARTIAL|DROP] -KW
* don't send Referer if we have to load a document again that we got
from the history stack. Lynx would send the URL of the current
document (the one "later" in history) which could only accidentally
be right -KW
* changed default for PERSISTENT_COOKIES from TRUE to FALSE, since
persistent cookie support is now configured in by default -KW
* new functions (key_for_func_ext) to return a "best" key (or key pair) to
invoke a given lynx action, either in the Line Editor or in normal mode.
Currently only used for a couple of statusline messages (those that had ^V
hardcoded). The statusline info while in a textarea now gives the right
key(s) for invoking external editing, or omits the info if appropriate
(no key bound, or no editor defined or allowed) -KW
* doc updates for TEXTAREA special functions -KW
* moved #defines for TEXTAREA_EXPAND_SIZE, AUTOGROW, AUTOEXTEDIT from
LYMainLoop.h to userdefs.h, the latter two renamed to TEXTAREA_AUTOGROW
and TEXTAREA_AUTOEXTEDIT, added description -KW
* minor tweaks: -accept_all_cookies help string, some formatting changes,
minor text additions and corrections -KW
* set $(PROG_EXT) variable in makefiles for cygwin -TD
* define __CYGWIN__ if needed, e.g., for betas that define __CYGWIN32__ -TD
* workaround cygwin b19.1 problem generating cfg_defs.h because it did not
properly export $PATH -TD
1999-11-03 (2.8.3dev.14)
* modify no_color_video check for A_UNDERLINE so it is active for any
combination that uses underlining (reported by KW) -TD
* modified HTML.c so configure --enable-internal-links builds -TD
* improved 'lynx.patch' rule in makefile.in -PG
* add rough version of makelynx.bat for use with Khan's MingW32 (from Victor
Schneider )
* update dependencies in makefile.bcb for src/TRSTable.c -HS
* fix PDCurses ifdef's in LYCurses.c to work with WATT-32 -DK
* correct ifdef's in LYPrint.c so that send_file_to_mail() works with DJGPP -DK
* modify DOS makefiles for PDCURSES for watt-32 and some of the other recent
changes to lynx. Included some of the EXP_ defines that DOS users may want.
Changed the -O3 back to -O2, since -O3 has no advantage under djgpp -DK
* remove a useless ';', use FREE() instead of free() - JB
* correct spelling lexem/lexeme (reported by KW) -TD
* split-out function check_history() in LYMainLoop.c -TD
* add configure check for vasprintf -TD
* add configure check for _GNU_SOURCE -TD
* minor fixes for configure script macros CF_TERMCAP_LIBS, CF_DISABLE_ECHO,
CF_GCC_ATTRIBUTES, CF_GCC_WARNINGS -TD
* fixed bug in psrcmode code. Now htmlsrc_tag encloses only tagname, not
everything in generalized brackets <,>,,/> (reported by KW) -VH
* fixed a bug with 'g' command (reported by KW) -VH
* default value for 'OPT' in SGML.c made '1', removed alternatives to code
surrounded by #if OPT1
* notes (VH):
+ Seems that 'OPT' stuff doesn't contain errors. Let's enable it for several
releases, and then remove alternative code.
+ Added comments about pools.
+ Docs updated to reflect new functionality of -dont-wrap-pre
* old psrcview bug fixed - markup was unbalanced in some situations -VH
* content of SAMP tag made justifiable -VH
* implemented HTStyleChange pooling - sizeof(HTStyleChange) is 4 times smaller
than before, and only necessary number of stylechanges is allocated now,
instead of some constant (1024 by default) -VH
* functionality of dont-wrap-pre improved and extended. Now it's possible to
avoid wrapping the document being dumped completely (size of the non-wrapped
line before the patch was limited by MAX_LINE = 1024 by default). Specifying
-dont-wrap-pre with interactive session enables wrapped lines (in PRE) to
be marked as in source view - with '+' in normal view -VH
* functionality of -force-empty-hrefless-a was cleaned up,
#ifndefs NO_EMPTY_HREFLESS_A and endif's were removed -VH
* colorstyle changes are not emitted in HTML_end_element if me->skip_stack was
>0 on entry to this function. This caused some glitches if
-force-empty-hrefless-a was enabled -VH
* LYPrettySrc.c was slightly cleaned up, added support for lynx.cfg reloading,
memory deallocation -VH
* possible bug in print_wwwfile_to_fd fixed - when quoting the page, seems that
several '>'s could be emitted on the long line formed by concatenating lines
with LY_SOFT_NEWLINEs at the begining of them -VH
* general notes -VH:
+ users of lss-enabled lynx should consider on upgrading the lynx - at least
those who use lynx for viewing huge files. By default, each line on the
screen took 1K for colorstyles (on x86). With new approach colorstyle
changes take 24 bytes (on x86) per line in average document. Old lynx with
900K html file loaded as startfile occupied 30M of virtual memory, lynx
with patch applied occupied 5 Mb on the same file. Old code is still
accessible by defining OLD_STYLECHANGE.
+ I spent 4 hours debugging attempting to write/fix code that cleans up the
memory allocated in LYPrettySrc.c, but Lynx.leaks shows that I didn't
succeeded. I fear that leak detection stuff is broken - I checked/traced
the code very carefully several times.
> the remainder (most) of this patch from KW:
* for confirmation prompts (HTConfirm), also accept English letters 'Y', 'y',
'N', 'n' as responses. If characters different from those are derived from
the first letters of the translation of "yes" and "no" in a localized lynx,
the latter will still be the ones that appear in the prompt text and will
have precedence. Message translations using multibyte character sets should
continue to *not* translate "yes" and "no". Added a note to that effect.
* small update for some chartrans tables, minor comment changes.
* for Unix, use LYSystem instead of system for invoking telnet, rlogin,
rtn3270 commands.
[ For some non-Unix systems, LYSystem messes around with the passed command
string in various ways, and does some other stuff for DJGPP. So no change
for those, since I assume it worked before. For Unix the change prevents
the following occurring with ncurses (at least if USE_SIGACTION is
defined):
- access some (valid) telnet://some.host URL.
- within telnet client, escape to command level (usually '^]')
- suspend (usually 'z' or ^Z)
- resume (fg). Lynx process gets woken up, redraws lynx screen,
screen & tty state get messed up. ]
* another tweak for display refreshing when text previously displayed
had UTF-8 (for ncurses) - a check in display_page was missing.
* corrected stupid problem in LYGetFileInfo - invalid memory access.
* corrected and extended handling for textarea INSERTFILE and EDITTEXTAREA
(or DWIMEDIT), the previous patch wasn't quite right:
- now really truncate very long lines as intended for INSERTFILE, instead of
wrapping with loss of one character.
- for EDITTEXTAREA (DWIMEDIT), implement wrapping instead of truncation
(Rationale for the difference: user's editing work shouldn't be lost if we
can avoid it; it is only temporarily stored in a file which may be
unrecoverable, different from the typical INSERTFILE case.) If, upon
returning from the external editor, lines are encountered that don't fit in
the displayed width of the textarea fields, the user may be given the
option to wrap to that width. (This prompt may not be given when the first
such line has no suitable spaces for breaking - the file may be binary
garbage after all, not worth fixing up too much.) Line breaking is
attempted at spaces if possible (using isspace() for checking), but not if
the only available spaces are close to the beginning of a line. An attempt
is made to join the wrapped part of a line (if not too long) with the next
line if it is not indented, by suppressing the next line break (if not too
far away). Some other heuristics are used that work reasonably well for
normal text paragraphs.
If the above mechanisms fail, or the user did not confirm wrapping when
prompted, very long lines will still be wrapped to fit into the buffer size
(around 1024 chars).
[ The wrapping works quite nicely in "normal" cases - please try it! ]
* mouse action in popups would lead to call of fancy_mouse() with wrong row
number, which could lead to messed-up display as well as invalid memory
access.
* The previous changes in link redrawing made things worse instead of better
for UTF-8 display with ncurses (without color style). This time (using
wredrawln, not touchline) it should really get better...
[ The UTF-8 related changes would need testing with non-ncurses curses libs,
if anyone has one of those AND a working UTF-8 environment - late xterm
betas(?) from Tom's site should do. If the functions used for ncurses are
available in other curses libs, the code should probably look the same as
for ncurses. ]
* SGML.c to compile without --enable-prettysrc (reported by HN) -KW
* fixes an invalid memory problem from previous patch
* adds alignment inheritance from COLGROUP / COL / THEAD / TFOOT / TBODY.
* remove some logic from LYmbcsstrlen() that gave an incorrect count for
the number of cells displaying multibyte characters, resulting in too-few
cells being highlighted (reported by HN, HS) -KW
* added support for ROWSPAN attribute of TD and TH to TRST. This only
reserves the appropriate amount of space in subsequent lines.
[ Pages that show off ROWSPAN nicely:
and related ones for other "domain"s. (Verify that there really
is a ROWSPAN= in the current version.) View with a screen width
of 100. With 80 there is some kind of problem, compare both
^V settings... ]
* some corrections in TRST code.
* change initialization order of key escape sequence mappings for slang, so
that terminfo/termcap information always overrides defaults that may
conflict.
* minimal memory cleanup / leak prevention for EXP_FILE_UPLOAD error
cases in GridText.c.
* in HText_SubmitForm, don't change the post_content_type of the
passed in newdoc structure unless that is really wanted.
* tweaked UTF-8 prevention of display library wrapping/truncation to make
better use of available width for centered text, and to not apply if dumping
to stdout.
* for UTF-8 output with ncurses, do a clearok in display_page also if the page
that was *previously* displayed had UTF-8 characters. Without this there
were still display glitches.
* made previous changes to SGML.c and HTMLDTD for handling OBJECT more generic.
* minor tweaks, cleanups, glitch removal in previous changes.
* better tracking of HTSprintf0/HTSprintf with --enable-find-leaks
(-DLY_FIND_LEAKS). This can be disabled in LYLeaks.h by removing the
definition of LY_FIND_LEAKS_EXTENDED.
* added variant behavior in StrAllocVsprintf to make HTSprintf0/HTSprintf use
less memory allocation calls and keep its temporary string buffers across
calls. The buffers then only grow and never get cleaned up. This is enabled
by defining SAVE_TIME_NOT_SPACE in HTString.c, disable the definition there
in case of problems.
* added code so HTSprintf0/HTSprintf can use vasprintf() in some situations,
which should be more efficient. It also works with --enable-find-leaks
(EXTENDED or not). This only comes into play if USE_VASPRINTF is defined
(not defined automatically anywhere).
[ For me (some Debian glibc version), the prototype for this function
is in stdio.h but only gets included with an explicit -D_GNU_SOURCE. ]
[ Which of the four combinations with/without vasprintf, with/without
SAVE_TIME_NOT_SPACE is better (if any) remains t