lynx-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

lynx-dev patch - Referer with query, un-hardwire ^Ve, PERSISTENT_COOKIES


From: Klaus Weide
Subject: lynx-dev patch - Referer with query, un-hardwire ^Ve, PERSISTENT_COOKIES default
Date: Wed, 3 Nov 1999 10:27:04 -0600 (CST)

Is anyone besides Tom still keeping track of patches? :)

* New lynx.cfg option REFERER_WITH_QUERY:[SEND|PARTIAL|DROP].
* 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.
* Changed default for PERSISTENT_COOKIES from TRUE to FALSE, since
  persistent cookie support is now configured in by default.
* 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).

[ There are still glitches with unusual situations in connection with some
mouse and sticky stuff. They are not limited to the new code.  Will look
into that. ]
[ I tried to do this right so that the key stuff works for the EBCDIC port,
no testing of course. ]

* Doc updates for TEXTAREA special functions.
* 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.
* Minor tweaks: -accept_all_cookies help string, some formatting changes,
  minor text additions and corrections.


Index: 2.17/WWW/Library/Implementation/HTTP.c
--- 2.17/WWW/Library/Implementation/HTTP.c Mon, 25 Oct 1999 09:01:18 -0500
+++ 2.17(w)/WWW/Library/Implementation/HTTP.c Mon, 01 Nov 1999 13:51:07 -0600
@@ -558,7 +558,8 @@
       if (!(LYUserSpecifiedURL ||
            LYNoRefererHeader || LYNoRefererForThis) &&
          strcmp(HTLoadedDocumentURL(), "")) {
-         char *cp = HTLoadedDocumentURL();
+         char *cp = LYRequestReferer;
+         if (!cp) cp = HTLoadedDocumentURL(); /* @@@ Try both? - kw */
          StrAllocCat(command, "Referer: ");
          if (!strncasecomp(cp, "LYNXIMGMAP:", 11)) {
              char *cp1 = strchr(cp, '#');
Index: 2.17/src/LYForms.c
--- 2.17/src/LYForms.c Mon, 01 Nov 1999 12:41:48 -0600
+++ 2.17(w)/src/LYForms.c Tue, 02 Nov 1999 17:43:53 -0600
@@ -394,7 +394,7 @@
             *  If we can edit it, report that we are using the tail. - FM
             */
            HTUserMsg(FORM_VALUE_TOO_LONG);
-           show_formlink_statusline(form);
+           show_formlink_statusline(form, FOR_INPUT);
            move(startline, startcol);
        }
     }
@@ -1825,8 +1825,9 @@
 /*
  *  Display statusline info tailored for the current form field.
  */
-PUBLIC void show_formlink_statusline ARGS1(
-    CONST FormInfo *,  form)
+PUBLIC void show_formlink_statusline ARGS2(
+    CONST FormInfo *,  form,
+    int,               for_what)
 {
     switch(form->type) {
     case F_PASSWORD_TYPE:
@@ -1865,7 +1866,17 @@
        } else if (form->no_cache) {
            statusline(FORM_LINK_TEXT_RESUBMIT_MESSAGE);
        } else {
-           statusline(FORM_LINK_TEXT_SUBMIT_MESSAGE);
+           char *submit_str = NULL;
+           char *xkey_info = key_for_func_ext(LYK_NOCACHE, for_what);
+           if (xkey_info && *xkey_info) {
+               HTSprintf0(&submit_str, FORM_LINK_TEXT_SUBMIT_MESSAGE_X,
+                          xkey_info);
+               statusline(submit_str);
+               FREE(submit_str);
+           } else {
+               statusline(FORM_LINK_TEXT_SUBMIT_MESSAGE);
+           }
+           FREE(xkey_info);
        }
        break;
     case F_SUBMIT_TYPE:
@@ -1933,8 +1944,25 @@
     case F_TEXTAREA_TYPE:
        if (form->disabled == YES)
            statusline(FORM_LINK_TEXT_UNM_MSG);
-       else
+       else if (no_editor || !editor || !*editor) {
            statusline(FORM_LINK_TEXTAREA_MESSAGE);
+       } else {
+           char *submit_str = NULL;
+           char *xkey_info = key_for_func_ext(LYK_EDIT_TEXTAREA, for_what);
+#ifdef TEXTAREA_AUTOEXTEDIT
+           if (!xkey_info)
+               xkey_info = key_for_func_ext(LYK_DWIMEDIT, for_what);
+#endif
+           if (xkey_info && *xkey_info) {
+               HTSprintf0(&submit_str, FORM_LINK_TEXTAREA_MESSAGE_E,
+                          xkey_info);
+               statusline(submit_str);
+               FREE(submit_str);
+           } else {
+               statusline(FORM_LINK_TEXTAREA_MESSAGE);
+           }
+           FREE(xkey_info);
+       }
        break;
     }
 }
Index: 2.17/src/LYGetFile.c
--- 2.17/src/LYGetFile.c Mon, 25 Oct 1999 09:01:18 -0500
+++ 2.17(w)/src/LYGetFile.c Wed, 03 Nov 1999 05:37:35 -0600
@@ -385,25 +385,44 @@
 #endif /* DIRED_SUPPORT */
 
                }
+
                if (LYNoRefererHeader == FALSE &&
                    LYNoRefererForThis == FALSE) {
+                   char *ref_url = HTLoadedDocumentURL();
+                   if (!strncmp(ref_url, "LYNXIMGMAP:", 11))
+                       ref_url += 11;
                    if (no_filereferer == TRUE &&
-                       !strncmp(HTLoadedDocumentURL(), "file:", 5)) {
+                       !strncmp(ref_url, "file:", 5)) {
                        LYNoRefererForThis = TRUE;
                    }
                    if (LYNoRefererForThis == FALSE &&
-                       (cp = strchr(HTLoadedDocumentURL(), '?')) != NULL &&
-                   strchr(cp, '=') != NULL) {
+                       (cp = strchr(ref_url, '?')) != NULL &&
+                       strchr(cp, '=') != NULL) {
                        /*
                         *  Don't send a Referer header if the URL is
                         *  the reply from a form with method GET, in
                         *  case the content has personal data (e.g.,
                         *  a password or credit card number) which
                         *  would become visible in logs. - FM
+                        *
+                        *  Changed 1999-11-01 to be controlled by
+                        *  REFERER_WITH_QUERY option. - kw
                         */
-                       LYNoRefererForThis = TRUE;
+                       if (LYRefererWithQuery == 'S') { /* SEND */
+                           StrAllocCopy(LYRequestReferer, ref_url);
+                       } else if (LYRefererWithQuery == 'P') { /* PARTIAL */
+                           FREE(LYRequestReferer); /* just to be sure */
+                           LYRequestReferer = HTParse(ref_url, "",
+               PARSE_ACCESS|PARSE_HOST|PARSE_STRICTPATH|PARSE_PUNCTUATION);
+                       } else { /* Everyhting else - don't send Referer */
+                           LYNoRefererForThis = TRUE;
+                       }
                        cp = NULL;
+                   } else if (LYNoRefererForThis == FALSE) {
+                       StrAllocCopy(LYRequestReferer, ref_url);
                    }
+               } else {
+                   StrAllocCopy(LYRequestReferer, HTLoadedDocumentURL());
                }
                if (url_type == LYNXHIST_URL_TYPE) {
                    /*
Index: 2.17/src/LYMainLoop.c
--- 2.17/src/LYMainLoop.c Mon, 25 Oct 1999 16:08:27 -0500
+++ 2.17(w)/src/LYMainLoop.c Wed, 03 Nov 1999 05:34:56 -0600
@@ -169,7 +169,7 @@
 
 PRIVATE void exit_immediately_with_error_message PARAMS((int state, BOOLEAN 
first_file));
 PRIVATE void status_link PARAMS((char *curlink_name, BOOLEAN show_more, 
BOOLEAN show_indx));
-PRIVATE void show_main_statusline PARAMS((CONST linkstruct curlink));
+PRIVATE void show_main_statusline PARAMS((CONST linkstruct curlink, int 
for_what));
 PRIVATE BOOL confirm_post_resub PARAMS((
     CONST char*                address,
     CONST char*                title,
@@ -195,6 +195,7 @@
 PUBLIC HTList * Goto_URLs = NULL;  /* List of Goto URLs */
 
 PUBLIC char * LYRequestTitle = NULL; /* newdoc.title in calls to getfile() */
+PUBLIC char * LYRequestReferer = NULL; /* Referer, may be set in getfile() */
 
 #ifdef DISP_PARTIAL
 PUBLIC int Newline_partial = 0;     /* required for display_partial mode */
@@ -246,6 +247,7 @@
     clear_tags();
 #endif /* DIRED_SUPPORT */
     FREE(WWW_Download_File);   /* LYGetFile.c/HTFWriter.c */
+    FREE(LYRequestReferer);
 
     return;
 }
@@ -833,7 +835,7 @@
         textinput_activated = TRUE;
         textinput_drawn = FALSE;
         if (!sticky_inputs)
-            show_main_statusline(links[curdoc.link]);
+            show_main_statusline(links[curdoc.link], FOR_INPUT);
         return 0;
     }
 #endif
@@ -994,7 +996,12 @@
                links[curdoc.link].form->type == F_TEXT_SUBMIT_TYPE ||
                links[curdoc.link].form->type == F_PASSWORD_TYPE ||
                links[curdoc.link].form->type == F_TEXTAREA_TYPE) {
-               show_formlink_statusline(links[curdoc.link].form);
+               show_formlink_statusline(links[curdoc.link].form,
+                                        (real_cmd==LYK_SUBMIT ||
+                                         real_cmd==LYK_NOCACHE ||
+                                         real_cmd==LYK_DOWNLOAD ||
+                                         real_cmd==LYK_HEAD) ?
+                                        FOR_PANEL : FOR_INPUT);
            }
 
            *c = change_form_link(&links[curdoc.link],
@@ -2157,7 +2164,7 @@
     int *,     old_c,
     int,       real_c)
 {
-#ifdef AUTOEXTEDIT
+#ifdef TEXTAREA_AUTOEXTEDIT
     /*
      *  If we're in a forms TEXTAREA, invoke the editor on *its*
      *  contents, rather than attempting to edit the html source
@@ -2193,7 +2200,7 @@
        }
        return 1;
     }
-#endif /* AUTOEXTEDIT */
+#endif /* TEXTAREA_AUTOEXTEDIT */
     return 0;
 }
 
@@ -3129,6 +3136,7 @@
             */
            StrAllocCopy(curdoc.address, newdoc.address);
            StrAllocCopy(newdoc.post_data, curdoc.post_data);
+           StrAllocCopy(newdoc.post_content_type, curdoc.post_content_type);
            newdoc.internal_link = FALSE;
            curdoc.line = -1;
            Newline = 0;
@@ -5276,6 +5284,17 @@
 #ifdef USE_PSRC
                psrc_first_tag = TRUE;
 #endif
+               FREE(LYRequestReferer);
+               /*
+                *  Don't send Referer if we have to load a document again
+                *  that we got from the history stack.  We don't know
+                *  any more how we originally got to that page.  Using
+                *  a Referer based on the current HTMainText could only
+                *  be right by coincidence. - kw 1999-11-01
+                */
+               if (popped_doc)
+                   LYNoRefererForThis = TRUE;
+
 #ifndef DONT_TRACK_INTERNAL_LINKS
                if (try_internal) {
                    if (newdoc.address &&
@@ -6221,7 +6240,13 @@
         *  to tell the user other misc info.
         */
        if (!show_help) {
-          show_main_statusline(links[curdoc.link]);
+#ifndef NO_NONSTICKY_INPUTS
+          show_main_statusline(links[curdoc.link],
+                               (!sticky_inputs && !textinput_activated) ?
+                               FOR_PANEL : FOR_INPUT);
+#else
+          show_main_statusline(links[curdoc.link], FOR_INPUT);
+#endif
        } else {
           show_help = FALSE;
        }
@@ -6339,7 +6364,7 @@
                    switch (c) {
                    case '\n':
                    case '\r':
-#ifdef AUTOGROW
+#ifdef TEXTAREA_AUTOGROW
                    /*
                     *  If on the bottom line of a TEXTAREA, and the user hit
                     *  the ENTER key, we add a new line/anchor automatically,
@@ -6398,7 +6423,7 @@
 #endif
 
                   }
-#endif /* AUTOGROW */
+#endif /* TEXTAREA_AUTOGROW */
 
                    /*
                     *  Make return in input field (if it was returned
@@ -6510,7 +6535,7 @@
                 links[curdoc.link].form->type == F_PASSWORD_TYPE ||
                 links[curdoc.link].form->type == F_TEXTAREA_TYPE))
 
-               show_main_statusline(links[curdoc.link]);
+               show_main_statusline(links[curdoc.link], FOR_PANEL);
            else if (more)
                HTInfoMsg(MOREHELP);
            else
@@ -7274,8 +7299,9 @@
  *  put a message on the screen
  *  to tell the user other misc info.
  */
-PRIVATE void show_main_statusline ARGS1(
-    CONST linkstruct,  curlink)
+PRIVATE void show_main_statusline ARGS2(
+    CONST linkstruct,  curlink,
+    int,               for_what)
 {
     /*
      * Make sure form novice lines are replaced.
@@ -7307,7 +7333,7 @@
 #endif /* NORMAL_NON_FORM_LINK_STATUSLINES_FOR_ALL_USER_MODES */
 #endif /* INDICATE_FORMS_MODE_FOR_ALL_LINKS_ON_PAGE */
        if (curlink.type == WWW_FORM_LINK_TYPE) {
-           show_formlink_statusline(curlink.form);
+           show_formlink_statusline(curlink.form, for_what);
        } else {
            statusline(NORMAL_LINK_MESSAGE);
        }
@@ -7369,10 +7395,11 @@
  *  selected link.  It should only be called at times when curdoc.link,
  *  nlinks, and the links[] array are valid. - kw
  */
-PUBLIC void repaint_main_statusline NOARGS
+PUBLIC void repaint_main_statusline ARGS1(
+    int,       for_what)
 {
     if (curdoc.link >= 0 && curdoc.link < nlinks)
-       show_main_statusline(links[curdoc.link]);
+       show_main_statusline(links[curdoc.link], for_what);
 }
 
 
Index: 2.17/src/LYStrings.c
--- 2.17/src/LYStrings.c Mon, 01 Nov 1999 12:41:48 -0600
+++ 2.17(w)/src/LYStrings.c Tue, 02 Nov 1999 17:35:42 -0600
@@ -1369,7 +1369,7 @@
        mouse_link = -1;        /* mainloop should not change cur link - kw */
     }
     if (code == FOR_INPUT && retlac == LYK_DO_NOTHING) {
-       repaint_main_statusline();
+       repaint_main_statusline(FOR_INPUT);
     }
     return retlac;
 }
Index: 2.17/src/LYKeymap.c
--- 2.17/src/LYKeymap.c Mon, 25 Oct 1999 09:01:18 -0500
+++ 2.17(w)/src/LYKeymap.c Tue, 02 Nov 1999 18:26:16 -0600
@@ -782,6 +782,39 @@
        static char buf[30];
 
        if (c == '\t')
+               sprintf(buf, "<tab>");
+       else if (c == '\r')
+               sprintf(buf, "<return>");
+       else if (c == CH_ESC)
+               sprintf(buf, "ESC");
+       else if (c == ' ')
+               sprintf(buf, "<space>");
+       else if (c == '<')
+               sprintf(buf, "<");
+       else if (c == '>')
+               sprintf(buf, ">");
+       else if (c == 0177)
+               sprintf(buf, "<delete>");
+       else if (c > ' ' && c <= 0377)
+               sprintf(buf, "%c", c);
+       else if (c < ' ')
+               sprintf(buf, "^%c", c|0100);
+       else if (c >= 0400 && (c - 0400) < (int) TABLESIZE(funckey)
+                && funckey[c-0400])
+               sprintf(buf, "%s", funckey[c-0400]);
+       else if (c >= 0400)
+               sprintf(buf, "key-%#x", c);
+       else
+               return 0;
+
+       return buf;
+}
+
+PRIVATE char *pretty_html ARGS1 (int, c)
+{
+       static char buf[30];
+
+       if (c == '\t')
                sprintf(buf, "&lt;tab&gt;      ");
        else if (c == '\r')
                sprintf(buf, "&lt;return&gt;   ");
@@ -820,7 +853,7 @@
      && the_key < TABLESIZE(revmap)
      && revmap[the_key].name != 0
      && revmap[the_key].doc != 0
-     && (formatted = pretty(i-1)) != 0) {
+     && (formatted = pretty_html(i-1)) != 0) {
        HTSprintf0(&buf, "%-11s %-13s %s\n", formatted,
                revmap[the_key].name,
                revmap[the_key].doc);
@@ -996,7 +1029,7 @@
     else if (c >= 0) {
        /* Remapping of key actions is supported only for basic
         * lynxkeycodes, without modifiers etc.!  If we get somehow
-        * called for an invalid lynxkeycode, fail or silently
+        * called for an invalid lynxkeycode, fail or silently ignore
         * modifiers. - kw
         */
        if (c & LKC_ISLAC)
@@ -1163,6 +1196,122 @@
        StrAllocCopy(buf, "");
     }
     return buf;
+}
+
+/*
+ *  Given one or two keys as lynxkeycodes, returns an allocated string
+ *  representing the key(s) suitable for statusline messages.
+ *  The caller must free the string. - kw
+ */
+PRIVATE char *fmt_keys ARGS2(
+    int,       lkc_first,
+    int,       lkc_second)
+{
+    char *buf = NULL;
+    BOOLEAN quotes = FALSE;
+    char *fmt_first = pretty(lkc_first);
+    char *fmt_second;
+    if (fmt_first && strlen(fmt_first) == 1 && *fmt_first != '\'') {
+       quotes = TRUE;
+    }
+    if (quotes) {
+       if (lkc_second < 0) {
+           HTSprintf0(&buf, "'%s'", fmt_first);
+           return buf;
+       } else {
+           HTSprintf0(&buf, "'%s", fmt_first);
+       }
+    } else {
+       StrAllocCopy(buf, fmt_first);
+    }
+    if (lkc_second >= 0) {
+       fmt_second = pretty(lkc_second);
+       if (!fmt_second) {
+           FREE(buf);
+           return NULL;
+       }
+       HTSprintf(&buf, "%s%s%s",
+                 ((strlen(fmt_second) > 2 && *fmt_second != '<') ||
+                  (strlen(buf) > 2 && buf[strlen(buf)-1] != '>')) ? " " : "",
+                 fmt_second, quotes ? "'" : "");
+    }
+    return buf;
+}
+    
+/*
+ *  This function returns the (int)ch mapped to the
+ *  LYK_foo value passed to it as an argument.  It is like
+ *  LYReverseKeymap, only the order of search is different;
+ *  e.g., small ASCII letters will be returned in preference to
+ *  capital ones.  Cf. LYKeyForEditAction, LYEditKeyForAction in
+ *  LYEditmap.c which use the same order to find a best key.
+ *  In addition, this function takes the dired override map into
+ *  account while LYReverseKeymap doesn't.
+ *  The caller must free the returned string. - kw
+ */
+#define FIRST_I 97
+#define NEXT_I(i,imax) ((i==122) ? 32 : (i==96) ? 123 : (i==126) ? 0 :\
+                       (i==31) ? 256 : (i==imax) ? 127 :\
+                       (i==255) ? (-1) :i+1)
+PRIVATE int best_reverse_keymap ARGS1(
+       int,    lac)
+{
+    int i, c;
+
+    for (i = FIRST_I; i >= 0; i = NEXT_I(i,KEYMAP_SIZE-2)) {
+#ifdef NOT_ASCII
+       if (i < 256) {
+           c = FROMASCII(i);
+       } else
+#endif
+           c = i;
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+       if (lynx_edit_mode && !no_dired_support && lac &&
+           LKC_TO_LAC(key_override,c) == lac)
+           return c;
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+       if (LKC_TO_LAC(keymap,c) == lac) {
+           return c;
+       }
+    }
+
+    return(-1);
+}
+
+/*
+ *  This function returns a string representing a key mapped
+ *  to a LYK_foo function, or NULL if not found.  The string
+ *  may represent a pair of keys.  if context_code is FOR_INPUT,
+ *  an appropriate binding for use while in the (forms) line editor
+ *  is sought.  - kw
+ */
+PUBLIC char* key_for_func_ext ARGS2(
+    int,       lac,
+    int,       context_code)
+{
+    int lkc, modkey = -1;
+
+    if (context_code == FOR_INPUT) {
+       lkc = LYEditKeyForAction(lac, &modkey);
+       if (lkc >= 0) {
+           if (lkc & (LKC_MOD1|LKC_MOD2|LKC_MOD3)) {
+               return fmt_keys(modkey, lkc & ~(LKC_MOD1|LKC_MOD2|LKC_MOD3));
+           } else {
+               return fmt_keys(lkc, -1);
+           }
+       }
+    }
+    lkc = best_reverse_keymap(lac);
+    if (lkc < 0)
+       return NULL;
+    if (context_code == FOR_INPUT) {
+       modkey = LYKeyForEditAction(LYE_LKCMD);
+       if (modkey < 0)
+           return NULL;
+       return fmt_keys(modkey, lkc);
+    } else {
+       return fmt_keys(lkc, -1);
+    }
 }
 
 /*
Index: 2.17/src/LYEditmap.c
--- 2.17/src/LYEditmap.c Mon, 25 Oct 1999 09:01:18 -0500
+++ 2.17(w)/src/LYEditmap.c Wed, 03 Nov 1999 09:22:58 -0600
@@ -1051,11 +1051,218 @@
 }
 
 /*
+ *  Macro to walk through lkc-indexed tables up to imax, in the (ASCII) order
+ *     97 - 122  ('a' - 'z'),
+ *     32 -  96  (' ' - '`', includes 'A' - 'Z'),
+ *    123 - 126  ('{' - '~'),
+ *      0 -  31  (^@  - ^_),
+ *    256 - imax,
+ *    127 - 255
+ */
+#define NEXT_I(i,imax) ((i==122) ? 32 : (i==96) ? 123 : (i==126) ? 0 :\
+                       (i==31) ? 256 : (i==imax) ? 127 :\
+                       (i==255) ? (-1) :i+1)
+#define FIRST_I 97
+
+PUBLIC int LYKeyForEditAction ARGS1(
+    int,               lec)
+{
+    int editaction, i;
+    for (i = FIRST_I; i >= 0; i = NEXT_I(i,KEYMAP_SIZE-2)) {
+        editaction = LYLineEditors[current_lineedit][i];
+       if (editaction == lec) {
+#ifdef NOT_ASCII
+           if (i < 256) {
+               return FROMASCII(i);
+           } else
+#endif
+               return i;
+       }
+    }
+    return (-1);
+}
+
+/*
+ *  Given a lynxactioncode, return a key (lynxkeycode) or sequence
+ *  of two keys that results in the given action while forms-editing.
+ *  The main keycode is returned as function value, possibly with modifier
+ *  bits set; in addition, if applicable, a key that sets the required
+ *  modifier flag is returned in *pmodkey if (pmodkey!=NULL).
+ *  Non-lineediting bindings that would require typing LYE_LKCMD (default ^V)
+ *  to activate are not checked here, the caller should do that separately if
+ *  required.  If no key is bound by current line-editor bindings to the
+ *  action, -1 is returned.
+ *  This is all a bit long - it is general enough to continue to work
+ *  should the three Mod<N>Binding[] become different tables. - kw
+ */
+PUBLIC int LYEditKeyForAction ARGS2(
+    int,               lac,
+    int *,             pmodkey)
+{
+    int editaction, i, c;
+    int mod1found = -1, mod2found = -1, mod3found = -1;
+    if (pmodkey)
+       *pmodkey = -1;
+    for (i = FIRST_I; i >= 0; i = NEXT_I(i,KEYMAP_SIZE-2)) {
+        editaction = LYLineEditors[current_lineedit][i];
+#ifdef NOT_ASCII
+       if (i < 256) {
+           c = FROMASCII(i);
+       } else
+#endif
+           c = i;
+       if (editaction == (lac | LYE_FORM_LAC))
+           return c;
+       if (editaction == LYE_FORM_PASS) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+           if (lynx_edit_mode && !no_dired_support && lac &&
+               LKC_TO_LAC(key_override,c) == lac)
+               return c;
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+           if (LKC_TO_LAC(keymap,c) == lac)
+               return c;
+       }
+       if (editaction == LYE_TAB) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+           if (lynx_edit_mode && !no_dired_support && lac &&
+               LKC_TO_LAC(key_override,'\t') == lac)
+               return c;
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+           if (LKC_TO_LAC(keymap,'\t') == lac)
+               return c;
+       }
+       if (editaction == LYE_SETM1 && mod1found < 0)
+           mod1found = i;
+       if (editaction == LYE_SETM2 && mod2found < 0)
+           mod2found = i;
+       if ((editaction & LYE_DF) && mod3found < 0)
+           mod3found = i;
+    }
+    if (mod3found >= 0) {
+       for (i = mod3found; i >= 0; i = NEXT_I(i,LAST_MOD3_LKC)) {
+           editaction = LYLineEditors[current_lineedit][i];
+           if (!(editaction & LYE_DF))
+               continue;
+           editaction = Mod3Binding[i];
+#ifdef NOT_ASCII
+           if (i < 256) {
+               c = FROMASCII(i);
+           } else
+#endif
+               c = i;
+           if (pmodkey)
+               *pmodkey = c;
+           if (editaction == (lac | LYE_FORM_LAC))
+               return (c|LKC_MOD3);
+           if (editaction == LYE_FORM_PASS) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+               if (lynx_edit_mode && !no_dired_support && lac &&
+                   LKC_TO_LAC(key_override,c) == lac)
+                   return (c|LKC_MOD3);
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+               if (LKC_TO_LAC(keymap,c) == lac)
+                   return (c|LKC_MOD3);
+           }
+           if (editaction == LYE_TAB) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+               if (lynx_edit_mode && !no_dired_support && lac &&
+                   LKC_TO_LAC(key_override,'\t') == lac)
+                   return (c|LKC_MOD3);
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+               if (LKC_TO_LAC(keymap,'\t') == lac)
+                   return (c|LKC_MOD3);
+           }
+       }
+    }
+    if (mod1found >= 0) {
+       if (pmodkey) {
+#ifdef NOT_ASCII
+           if (mod1found < 256) {
+               pmodkey = FROMASCII(mod1found);
+           } else
+#endif
+               *pmodkey = mod1found;
+       }
+       for (i = FIRST_I; i >= 0; i = NEXT_I(i,LAST_MOD1_LKC)) {
+           editaction = Mod1Binding[i];
+#ifdef NOT_ASCII
+           if (i < 256) {
+               c = FROMASCII(i);
+           } else
+#endif
+               c = i;
+           if (editaction == (lac | LYE_FORM_LAC))
+               return (c|LKC_MOD1);
+           if (editaction == LYE_FORM_PASS) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+               if (lynx_edit_mode && !no_dired_support && lac &&
+                   LKC_TO_LAC(key_override,c) == lac)
+                   return (c|LKC_MOD1);
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+               if (LKC_TO_LAC(keymap,c) == lac)
+                   return (c|LKC_MOD1);
+           }
+           if (editaction == LYE_TAB) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+               if (lynx_edit_mode && !no_dired_support && lac &&
+                   LKC_TO_LAC(key_override,'\t') == lac)
+                   return (c|LKC_MOD1);
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+               if (LKC_TO_LAC(keymap,'\t') == lac)
+                   return (c|LKC_MOD1);
+           }
+       }
+    }
+    if (mod2found >= 0) {
+       if (pmodkey) {
+#ifdef NOT_ASCII
+           if (mod1found < 256) {
+               pmodkey = FROMASCII(mod1found);
+           } else
+#endif
+               *pmodkey = mod1found;
+       }
+       for (i = FIRST_I; i >= 0; i = NEXT_I(i,LAST_MOD2_LKC)) {
+           editaction = Mod2Binding[i];
+#ifdef NOT_ASCII
+           if (i < 256) {
+               c = FROMASCII(i);
+           } else
+#endif
+               c = i;
+           if (editaction == (lac | LYE_FORM_LAC))
+               return (c|LKC_MOD2);
+           if (editaction == LYE_FORM_PASS) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+               if (lynx_edit_mode && !no_dired_support && lac &&
+                   LKC_TO_LAC(key_override,c) == lac)
+                   return (c|LKC_MOD2);
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+               if (LKC_TO_LAC(keymap,c) == lac)
+                   return (c|LKC_MOD2);
+           }
+           if (editaction == LYE_TAB) {
+#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
+               if (lynx_edit_mode && !no_dired_support && lac &&
+                   LKC_TO_LAC(key_override,'\t') == lac)
+                   return (c|LKC_MOD2);
+#endif /* DIRED_SUPPORT && OK_OVERRIDE */
+               if (LKC_TO_LAC(keymap,'\t') == lac)
+                   return (c|LKC_MOD2);
+           }
+       }
+    }
+    if (pmodkey)
+       *pmodkey = -1;
+    return (-1);
+}
+
+/*
  * Dummy initializer to ensure this module is linked
  * if the external model is common block, and the
  * module is ever placed in a library. - FM
  */
-PUBLIC int LYEditmapDeclared NOPARAMS
+PUBLIC int LYEditmapDeclared NOARGS
 {
     int status = 1;
 
Index: 2.17/src/HTForms.h
--- 2.17/src/HTForms.h Wed, 06 Oct 1999 14:21:53 -0500
+++ 2.17(w)/src/HTForms.h Tue, 02 Nov 1999 16:54:10 -0600
@@ -147,6 +147,7 @@
 #define LAST_ORDER   3
 
 /* in LYForms.c */
-extern void show_formlink_statusline PARAMS((CONST FormInfo * form));
+extern void show_formlink_statusline PARAMS((CONST FormInfo *  form,
+                                            int                for_what));
 
 #endif /* HTFORMS_H */
Index: 2.17/src/LYKeymap.h
--- 2.17/src/LYKeymap.h Wed, 06 Oct 1999 13:57:53 -0500
+++ 2.17(w)/src/LYKeymap.h Tue, 02 Nov 1999 17:16:03 -0600
@@ -7,6 +7,7 @@
 
 extern BOOLEAN LYisNonAlnumKeyname PARAMS((int ch, int key_name));
 extern char *key_for_func PARAMS((int func));
+extern char *key_for_func_ext PARAMS((int lac, int context_code));
 extern int LYReverseKeymap PARAMS((int key_name));
 extern int lookup_keymap PARAMS((int code));
 extern int lacname_to_lac PARAMS((CONST char *func));
Index: 2.17/src/LYGlobalDefs.h
--- 2.17/src/LYGlobalDefs.h Mon, 01 Nov 1999 12:41:48 -0600
+++ 2.17(w)/src/LYGlobalDefs.h Mon, 01 Nov 1999 19:52:31 -0600
@@ -154,6 +154,7 @@
 extern BOOLEAN verbose_img;    /* display filenames of images?     */
 extern BOOLEAN vi_keys;                /* TRUE to turn on vi-like key movement 
*/
 extern char *LYRequestTitle;   /* newdoc.title in calls to getfile() */
+extern char *LYRequestReferer; /* Referer, may be set in getfile() */
 extern char *LynxHome;
 extern char *LynxSigFile;      /* Signature file, in or off home */
 extern char *checked_box;      /* form boxes */
@@ -244,6 +245,7 @@
 
 extern BOOLEAN no_statusline;
 extern BOOLEAN no_filereferer;
+extern char LYRefererWithQuery;        /* 'S', 'P', or 'D' */
 extern BOOLEAN local_host_only;
 extern BOOLEAN override_no_download;
 extern BOOLEAN show_dotfiles;  /* From rcfile if no_dotfiles is false */
Index: 2.17/src/LYStrings.h
--- 2.17/src/LYStrings.h Mon, 25 Oct 1999 07:13:32 -0500
+++ 2.17(w)/src/LYStrings.h Tue, 02 Nov 1999 17:16:02 -0600
@@ -278,6 +278,8 @@
        EditFieldData * edit));
 extern int EditBinding PARAMS((int ch));                  /* in LYEditmap.c */
 extern int LYRemapEditBinding PARAMS((int xlkc, int lec)); /* in LYEditmap.c */
+extern int LYKeyForEditAction PARAMS((int lec));          /* in LYEditmap.c */
+extern int LYEditKeyForAction PARAMS((int lac, int *pmodkey));/* LYEditmap.c */
 extern int LYEdit1 PARAMS((
        EditFieldData * edit,
        int             ch,
Index: 2.17/src/LYMainLoop.h
--- 2.17/src/LYMainLoop.h Sat, 12 Jun 1999 17:10:16 -0500
+++ 2.17(w)/src/LYMainLoop.h Tue, 02 Nov 1999 17:35:40 -0600
@@ -5,14 +5,10 @@
 #include <HTUtils.h>
 #endif
 
-#define TEXTAREA_EXPAND_SIZE  5
-#define AUTOGROW
-#define AUTOEXTEDIT
-
 extern BOOLEAN LYOpenTraceLog NOPARAMS;
 extern int mainloop NOPARAMS;
 extern void HTAddGotoURL PARAMS((char *url));
 extern void LYCloseTracelog NOPARAMS;
-extern void repaint_main_statusline NOPARAMS;
+extern void repaint_main_statusline PARAMS((int for_what));
 
 #endif /* LYMAINLOOP_H */
Index: 2.17/src/LYMain.c
--- 2.17/src/LYMain.c Mon, 01 Nov 1999 12:41:48 -0600
+++ 2.17(w)/src/LYMain.c Mon, 01 Nov 1999 22:51:58 -0600
@@ -271,6 +271,7 @@
 
 PUBLIC BOOLEAN no_statusline = FALSE;
 PUBLIC BOOLEAN no_filereferer = FALSE;
+PUBLIC char LYRefererWithQuery = 'D'; /* 'D' for drop */
 PUBLIC BOOLEAN local_host_only = FALSE;
 PUBLIC BOOLEAN override_no_download = FALSE;
 PUBLIC BOOLEAN show_dotfiles = FALSE; /* From rcfile if no_dotfiles is false */
@@ -413,7 +414,7 @@
 PUBLIC char *LYCookieSLooseCheckDomains = NULL;  /* check loosely   */
 PUBLIC char *LYCookieSQueryCheckDomains = NULL;  /* check w/a query */
 #ifdef EXP_PERSISTENT_COOKIES
-BOOLEAN persistent_cookies = TRUE;
+BOOLEAN persistent_cookies = FALSE;    /* disabled by default! */
 PUBLIC char *LYCookieFile = NULL;         /* default cookie file */
 #endif /* EXP_PERSISTENT_COOKIES */
 PUBLIC char *XLoadImageCommand = NULL; /* Default image viewer for X */
@@ -2997,7 +2998,7 @@
 {
    PARSE_SET(
       "accept_all_cookies", SET_ARG,           &LYAcceptAllCookies,
-      "\naccepts all cookies"
+      "\naccept cookies without prompting if Set-Cookie handling is on"
    ),
    PARSE_FUN(
       "anonymous",     FUNCTION_ARG,   anonymous_fun,
Index: 2.17/src/LYReadCFG.c
--- 2.17/src/LYReadCFG.c Mon, 25 Oct 1999 08:46:34 -0500
+++ 2.17(w)/src/LYReadCFG.c Mon, 01 Nov 1999 13:51:05 -0600
@@ -819,6 +819,18 @@
     return 0;
 }
 
+static int referer_with_query_fun ARGS1(
+       char *,         value)
+{
+    if (!strncasecomp(value, "SEND", 4))
+       LYRefererWithQuery = 'S';
+    else if (!strncasecomp(value, "PARTIAL", 7))
+       LYRefererWithQuery = 'P';
+    else
+       LYRefererWithQuery = 'D';
+    return 0;
+}
+
 #ifdef SOURCE_CACHE
 static int source_cache_fun ARGS1(
        char *,         value)
@@ -1393,6 +1405,7 @@
      PARSE_SET("psrcview_no_anchor_numbering", CONF_BOOL, 
&psrcview_no_anchor_numbering),
 #endif
      PARSE_SET("quit_default_yes", CONF_BOOL, &LYQuitDefaultYes),
+     PARSE_SET("referer_with_query", CONF_FUN, referer_with_query_fun),
      PARSE_SET("reuse_tempfiles", CONF_BOOL, &LYReuseTempfiles),
 #ifndef NO_RULES
      PARSE_FUN("rule", CONF_FUN, HTSetConfiguration),
Index: 2.17/userdefs.h
--- 2.17/userdefs.h Mon, 25 Oct 1999 09:01:18 -0500
+++ 2.17(w)/userdefs.h Tue, 02 Nov 1999 17:30:22 -0600
@@ -1235,8 +1235,24 @@
  * case, but some users may find this surprising and expect <return> to just
  * move to the next link as for other text entry fields.
  */
-
 /* #define TEXT_SUBMIT_CONFIRM_WANTED */
+
+/********************************
+ * The following three definitions control some apsects of extended
+ * textarea handling.  TEXTAREA_EXPAND_SIZE is the number of new empty
+ * lines that get appended at the end of a textarea by a GROWTEXTAREA
+ * key.  If TEXTAREA_AUTOGROW is defined (to anything), <return> or
+ * <enter> in the last line of a textarea automatically extends the
+ * area by adding a new line.  If TEXTAREA_AUTOEXTEDIT is defined (to
+ * anything), a key mapped to DWIMEDIT will invoke the external editor
+ * like EDITTEXTAREA when used in a text input field.  Comment those
+ * last two definitions out to disable the corresponding behavior.
+ * See under KEYMAP in lynx.cfg for mapping keys to GROWTEXTAREA or
+ * DWIMEDIT actions.
+ */
+#define TEXTAREA_EXPAND_SIZE  5
+#define TEXTAREA_AUTOGROW
+#define TEXTAREA_AUTOEXTEDIT
 
 /********************************
  * If BUILTIN_SUFFIX_MAPS is defined (to anything), default mappings
Index: 2.17/lynx.cfg
--- 2.17/lynx.cfg Mon, 25 Oct 1999 16:08:27 -0500
+++ 2.17(w)/lynx.cfg Tue, 02 Nov 1999 16:54:12 -0600
@@ -998,14 +998,19 @@
 
 # COOKIE_FILE is the default file from which persistent cookies are read
 # at startup (if the file exists), and into which persistent cookies are
-# stored before exiting, if Lynx was compiled with EXP_PERSISTENT_COOKIES.
+# stored before exiting, if Lynx was compiled with EXP_PERSISTENT_COOKIES
+# and the PERSISTENT_COOKIES option is enabled.
 # The cookie file can also be specified in .lynxrc or on the command line.
+#
 #COOKIE_FILE:~/.lynx_cookies
 
-# PERSISTENT_COOKIES indicates that cookies should be stored for use between
-# Lynx sessions.  It is only used if Lynx was compiled with
-# EXP_PERSISTENT_COOKIES.  Use this flag to disable the feature.
-#PERSISTENT_COOKIES:TRUE
+# PERSISTENT_COOKIES indicates that cookies should be read at startup from
+# the COOKIE_FILE, and saved at exit for storage between Lynx sessions.
+# It is not used if Lynx was compiled without EXP_PERSISTENT_COOKIES.
+# The default is FALSE, so that the feature needs to be enabled here
+# explicitly if you want it.
+#
+#PERSISTENT_COOKIES:FALSE
 
 # VMS:
 #=====
@@ -1356,6 +1361,28 @@
 #
 #NO_FILE_REFERER:FALSE
 
+# REFERER_WITH_QUERY controls what happens when the URL in a Referer
+# header to be sent would contain a query part in the form of a '?'
+# character followed by one or more attribute=value pairs.  Query parts
+# often contain sensitive or personal information resulting from filling
+# out forms, or other info that allows tracking of a user's browsing path
+# through a site, an thus should not be put in a Referer header (which may
+# get sent to an unrelated third-party site).  On the other hand, some
+# sites (improperly) rely on browsers sending Referer headers, even when
+# the user is coming from a page whose URL has a query part.
+#
+# If REFERER_WITH_QUERY is SEND, full Referer headers will be sent
+# including the query part (unless sending of Referer is disabled in
+# general, see NO_REFERER_HEADER above).  If REFERER_WITH_QUERY is
+# PARTIAL, the Referer header will contain a partial URL, with the query
+# part stripped off.  This is not strictly correct, but should satisfy
+# those sites that check only whether the user arrived at a page from an
+# "outside" link.  If REFERER_WITH_QUERY is set to DROP (or anything else
+# unrecognized), the default, no Referer header is sent at all in this
+# situation.
+#
+#REFERER_WITH_QUERY:DROP
+
 # VERBOSE_IMAGES controls whether Lynx replaces [LINK], [INLINE] and [IMAGE]
 # (for images without ALT) with filenames of these images.
 # This can be useful in determining what images are important
@@ -1363,6 +1390,7 @@
 # provided the author uses meaningful names.
 #
 # The definition here will override the setting in userdefs.h.
+#
 #VERBOSE_IMAGES:TRUE
 
 # If MAKE_LINKS_FOR_ALL_IMAGES is TRUE, all images will be given links
@@ -1376,6 +1404,7 @@
 # and can be toggled via an "-image_links" command-line switch.
 # The user can also use the LYK_IMAGE_TOGGLE key (default `*')
 # or the `Show Images' option in the (new) Options Form.
+#
 #MAKE_LINKS_FOR_ALL_IMAGES:FALSE
 
 # If MAKE_PSEUDO_ALTS_FOR_INLINES is FALSE, inline images which don't specify
@@ -1389,6 +1418,7 @@
 # and can be toggled via a "-pseudo_inlines" command-line switch.
 # The user can also use the LYK_INLINE_TOGGLE key (default `[')
 # or the `Show Images' option in the (new) Options Form.
+#
 #MAKE_PSEUDO_ALTS_FOR_INLINES:TRUE
 
 # If SUBSTITUTE_UNDERSCORES is TRUE, the _underline_ format will be used
@@ -1816,8 +1846,11 @@
 # level of key mapping is supported via an external ".lynx-keymaps" file.
 # This file, if found in the home directory at startup, will always be
 # used under those conditions; see lynx-keymaps distributed in the samples
-# subdirectory for furhter explanation.  Note that mapping via
-# .lynx-keymaps, if applicable, is a step that precedes KEYMAP.
+# subdirectory for further explanation.  Note that mapping via
+# .lynx-keymaps, if applicable, is a step that logically comes before the
+# mappings done here: KEYMAP maps the result of that step (which still
+# represents a key) to a function (which represents an action that Lynx
+# should perform).
 
 #KEYMAP:0x5C:SOURCE    # Toggle source viewing mode (show HTML source)
 #KEYMAP:^R:RELOAD      # Reload the current document and redisplay
@@ -1854,7 +1887,7 @@
 #KEYMAP:H:HELP         # Show default help screen
 #KEYMAP:0x108:HELP     # Function key Help - Show default help screen
 #KEYMAP:i:INDEX                # Show default index
-#*** Edit FORM_LINK_SUBMIT_MESSAGE in userdefs.h if you change NOCACHE ***
+#*** Edit FORM_LINK_* messages in LYMessages_en.h if you change NOCACHE ***
 #KEYMAP:x:NOCACHE      # Force submission of form or link with no-cache
 #*** Do not change INTERRUPT from 'z' & 'Z' ***
 #KEYMAP:z:INTERRUPT    # Interrupt network transmission
Index: 2.17/LYMessages_en.h
--- 2.17/LYMessages_en.h Mon, 25 Oct 1999 09:01:18 -0500
+++ 2.17(w)/LYMessages_en.h Tue, 02 Nov 1999 17:03:28 -0600
@@ -60,11 +60,15 @@
 #define FORM_LINK_TEXT_MESSAGE \
  gettext("(Text entry field) Enter text.  Use UP or DOWN arrows or tab to move 
off.")
 #define FORM_LINK_TEXTAREA_MESSAGE \
- gettext("(Textarea) Enter text. Use UP/DOWN arrows or TAB to move off (^Ve 
for editor).")
+ gettext("(Textarea) Enter text. Use UP/DOWN arrows or TAB to move off.")
+#define FORM_LINK_TEXTAREA_MESSAGE_E \
+ gettext("(Textarea) Enter text. Use UP/DOWN arrows or TAB to move off (%s for 
editor).")
 #define FORM_LINK_TEXT_UNM_MSG \
  gettext("UNMODIFIABLE form text field.  Use UP or DOWN arrows or tab to move 
off.")
 #define FORM_LINK_TEXT_SUBMIT_MESSAGE \
- gettext("(Form field) Enter text.  Use <return> to submit (^Vx for no 
cache).")
+ gettext("(Form field) Enter text.  Use <return> to submit.")
+#define FORM_LINK_TEXT_SUBMIT_MESSAGE_X \
+ gettext("(Form field) Enter text.  Use <return> to submit (%s for no cache).")
 #define FORM_LINK_TEXT_RESUBMIT_MESSAGE \
  gettext("(Form field) Enter text.  Use <return> to submit, arrows or tab to 
move off.")
 #define FORM_LINK_TEXT_SUBMIT_UNM_MSG \
Index: 2.17/lynx_help/Lynx_users_guide.html
--- 2.17/lynx_help/Lynx_users_guide.html Mon, 25 Oct 1999 09:01:18 -0500
+++ 2.17(w)/lynx_help/Lynx_users_guide.html Tue, 02 Nov 1999 22:02:36 -0600
@@ -355,8 +355,8 @@
 document with a <em>.html</em> or <em>.htm</em> extension, if you
 want to read it with Lynx again later.
 
-<p>Lynx can allow users to edit documents that reside on the local
-system.  To enable editing, documents must be referenced using a
+<p ID="FileEdit">Lynx can allow users to edit documents that reside on the
+local system.  To enable editing, documents must be referenced using a
 "file:" URL or by specifying a plain filename on the command line as
 in the following two examples:
 
@@ -594,9 +594,10 @@
 
 <dl>
    <dt>Editor
-        <dd>The editor to be invoked when editing browsable files, and
-            sending mail or comments.  The full pathname of the editor
-            command should be specified when possible.
+        <dd>The editor to be invoked when editing browsable files, when
+            sending mail or comments, when preparing a news article for
+           posting, and for external TEXTAREA editing.  The full pathname
+            of the editor command should be specified when possible.
 
    <dt>DISPLAY variable
         <dd>This option is only relevant to X Window users.  The DISPLAY
@@ -1374,11 +1375,33 @@
     <em>TAB</em> key will move you down beyond the bottom of the TEXTAREA
     field.
 
-<dt>Editing TEXTAREA Fields
-<dd>TEXTAREA fields can be edited using an external editor
-    by entering <em>^Ve</em> when in the TEXTAREA.<p>
-
-    You can also use two other special TEXTAREA functions
+<dt>Editing TEXTAREA Fields and Special TEXTAREA Functions
+<dd>TEXTAREA fields can be edited using an external editor.
+    The statusline should tell you when this is possible and what
+    key to use, it might for example say
+
+<PRE>          <B>(Textarea) Enter text. </B>[...] <B>(^Ve for 
editor).</B></PRE>
+
+    An external editor has to be defined, for example in the <a
+    href="#InteractiveOptions">Options Menu</a>, before you can start
+    using this function.
+
+    <p>To map a key so that it will invoke external TEXTAREA editing, you
+    can either configure Lynx to use the <a
+    href="keystrokes/bashlike_edit_help.html">Bash-like Line-Editor
+    Bindings</a>, or add KEYMAP bindings to your <em>lynx.cfg</em> file,
+    e.g.<br>
+    &nbsp;&nbsp;KEYMAP:e:EDITTEXTAREA<br>
+    or<br>
+    &nbsp;&nbsp;KEYMAP:e:DWIMEDIT<br>
+    (the first is only functional for TEXTAREA editing, while the second
+    allows to use the same key for normal <a href="#FileEdit">file
+    editing</A>).</p>
+
+    You can also use two other special TEXTAREA functions.  Again, these
+    are already bound to key sequences in the <a
+    href="keystrokes/bashlike_edit_help.html#TASpecial">Bash-like Bindings</a>.
+    You can invoke them independently of the line edit style
     by adding KEYMAP bindings to your <em>lynx.cfg</em> file, e.g.<p>
 
     &nbsp;&nbsp;KEYMAP:$:GROWTEXTAREA<br>
@@ -1386,7 +1409,7 @@
 
     With these bindings -- you can choose other keys -- ,<br>
     (in a TEXTAREA only) <em>^V$</em> adds 5 lines to the TEXTAREA
-    and <em>^V#</em> brings up the name of an existing file
+    and <em>^V#</em> prompts for the name of an existing file
     to be inserted into the TEXTAREA (above the cursorline).
     An automatic variation is normally compiled in,
     so that hitting <em>Enter</em> with the cursor on the last line
@@ -1407,7 +1430,7 @@
     &nbsp;&nbsp;stty lnext ^V<br>
     &nbsp;&nbsp;exit</code><p>
 
-    NB when NOT in a TEXTAREA, <em>^V</em> is by default bound
+    NB when NOT in the Line Editor, <em>^V</em> is by default bound
     to the command
     to switch between SortaSGML and TagSoup HTML parsing
     (i.e., SWITCH_DTD ).
Index: 2.17/docs/README.defines
--- 2.17/docs/README.defines Mon, 01 Nov 1999 12:41:48 -0600
+++ 2.17(w)/docs/README.defines Mon, 01 Nov 1999 22:51:57 -0600
@@ -142,7 +142,8 @@
 they are set.  Normally installers shouldn't have to care about these
 symbols.
 
-SAVE_TIME_NOT_SPACE    HTString.c      minmize number of some malloc calls
+COOKIE_FILE            LYMain.c        default cookie file in HOME dir
+SAVE_TIME_NOT_SPACE    HTString.c      minimize number of some malloc calls
 SHOW_WHEREIS_TARGETS   LYCurses.h      whereis search highlighting
 USE_KEYMAPS            LYCurses.h      use of .lynx-keymaps files
 
Index: 2.17/lynx_help/keystrokes/bashlike_edit_help.html
--- 2.17/lynx_help/keystrokes/bashlike_edit_help.html Wed, 06 Oct 1999 14:48:20 
-0500
+++ 2.17(w)/lynx_help/keystrokes/bashlike_edit_help.html Tue, 02 Nov 1999 
22:02:17 -0600
@@ -44,12 +44,14 @@
      UPPER  Upper case the line   -  M-u
      LOWER  Lower case the line   -  M-l
 
-<!-- PASS!  Textarea external edit  - C-e C-e - mentioned in note [3] below
-                                    statusline shows binding where relevant
+     LKCMD  Invoke cmd prompt     -  C-v [FORM]
+     SWMAP  Switch input keymap   -  C-^ (if compiled in)
+
+<A NAME="TASpecial">Special commands for use in textarea fields</A> [FORM]:
+
+     PASS!  Textarea external edit  - C-e C-e [4], C-x e
      PASS!  Insert file in textarea - C-x i
      PASS!  Grow textarea           - C-x g
--->     LKCMD  Invoke cmd prompt     -  C-v [FORM]
-     SWMAP  Switch input keymap   -  C-^ (if compiled in)
 
 </pre>
 Here is a little textarea for practice:<BR>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]