Sorry,

I forgot again to attach a patch.

Regards,
Karsten

Numbered links.
TODO the width of the additional link prefix (the number) is not considered
     while rendering; the prefix should probably insert earlier or some data
     updated
TODO the link list generation should be moved somewhere in file.c

---
commit 943bacee8ee8fc52e80be0df17eddfb9b931eb44
tree f0f1acda2ce8bccd65c45ef81b115959f4e64b53
parent dd586d2f53a7917967602d22073484e0ad420a62
author Karsten Schoelzel <[EMAIL PROTECTED]> Wed, 03 May 2006 01:59:52 +0200
committer Karsten Schoelzel <[EMAIL PROTECTED]> Wed, 03 May 2006 01:59:52 +0200

 file.c |   26 ++++++++++++++++++++------
 fm.h   |    1 +
 main.c |   18 +++++++++++++++++-
 rc.c   |    3 +++
 4 files changed, 41 insertions(+), 7 deletions(-)

diff --git a/file.c b/file.c
index d537c8d..0c82b93 100644
--- a/file.c
+++ b/file.c
@@ -1671,6 +1671,13 @@ checkRedirection(ParsedURL *pu)
     return TRUE;
 }
 
+static void
+addLinkNumber(Str tmp, int hseq)
+{
+    if (displayLinkNumber)
+       Strcat(tmp, Sprintf("[%d]", hseq));
+}
+
 /* 
  * loadGeneralFile: load file to buffer
  */
@@ -3450,15 +3457,17 @@ process_img(struct parsed_tag *tag, int 
 Str
 process_anchor(struct parsed_tag *tag, char *tagbuf)
 {
+    Str tmp; 
     if (parsedtag_need_reconstruct(tag)) {
-       parsedtag_set_value(tag, ATTR_HSEQ, Sprintf("%d", cur_hseq++)->ptr);
-       return parsedtag2str(tag);
+       parsedtag_set_value(tag, ATTR_HSEQ, Sprintf("%d", cur_hseq)->ptr);
+       tmp = parsedtag2str(tag);
     }
     else {
-       Str tmp = Sprintf("<a hseq=\"%d\"", cur_hseq++);
+       tmp = Sprintf("<a hseq=\"%d\"", cur_hseq);
        Strcat_charp(tmp, tagbuf + 2);
-       return tmp;
     }
+    addLinkNumber(tmp, cur_hseq++);
+    return tmp;
 }
 
 Str
@@ -3530,9 +3539,11 @@ process_input(struct parsed_tag *tag)
     case FORM_INPUT_TEXT:
     case FORM_INPUT_FILE:
     case FORM_INPUT_CHECKBOX:
+       addLinkNumber(tmp, cur_hseq);
        Strcat_char(tmp, '[');
        break;
     case FORM_INPUT_RADIO:
+       addLinkNumber(tmp, cur_hseq);
        Strcat_char(tmp, '(');
     }
     Strcat(tmp, Sprintf("<input_alt hseq=\"%d\" fid=\"%d\" type=%s "
@@ -3573,6 +3584,7 @@ process_input(struct parsed_tag *tag)
        case FORM_INPUT_SUBMIT:
        case FORM_INPUT_BUTTON:
        case FORM_INPUT_RESET:
+           addLinkNumber(tmp, cur_hseq - 1);
            Strcat_charp(tmp, "[");
            break;
        }
@@ -3659,9 +3671,11 @@ process_select(struct parsed_tag *tag)
 
 #ifdef MENU_SELECT
     if (!select_is_multiple) {
-       select_str = Sprintf("<pre_int>[<input_alt hseq=\"%d\" "
+       select_str = Strnew_charp("<pre_int>");
+       addLinkNumber(select_str, cur_hseq);
+       Strcat(select_str, Sprintf("[<input_alt hseq=\"%d\" "
                             "fid=\"%d\" type=select name=\"%s\" 
selectnumber=%d",
-                            cur_hseq++, cur_form_id, html_quote(p), n_select);
+                            cur_hseq++, cur_form_id, html_quote(p), n_select));
        Strcat_charp(select_str, ">");
        if (n_select == max_select) {
            max_select *= 2;
diff --git a/fm.h b/fm.h
index 8686866..1a1a60c 100644
--- a/fm.h
+++ b/fm.h
@@ -909,6 +909,7 @@ global int label_topline init(FALSE);
 global int nextpage_topline init(FALSE);
 global char *displayTitleTerm init(NULL);
 global int displayLink init(FALSE);
+global int displayLinkNumber init(FALSE);
 global int displayLineInfo init(FALSE);
 global int DecodeURL init(FALSE);
 global int retryAsHttp init(TRUE);
diff --git a/main.c b/main.c
index 0d709ef..b365de9 100644
--- a/main.c
+++ b/main.c
@@ -1239,8 +1239,24 @@ do_dump(Buffer *buf)
        dump_head(buf);
     if (w3m_dump & DUMP_SOURCE)
        dump_source(buf);
-    if (w3m_dump == DUMP_BUFFER)
+    if (w3m_dump == DUMP_BUFFER) {
+       int i;
        saveBuffer(buf, stdout, FALSE);
+       if (displayLinkNumber) {
+           for (i = 0; i < buf->href->nanchor; i++) {
+               ParsedURL pu;
+               static Str s = NULL;
+               if (buf->href->anchors[i].slave)
+                   continue;
+               parseURL2(buf->href->anchors[i].url, &pu, baseURL(buf));
+               s = parsedURL2Str(&pu);
+               if (DecodeURL)
+                   s = Strnew_charp(url_unquote_conv
+                                    (s->ptr, Currentbuf->document_charset));
+               printf("[%d] %s\n", buf->href->anchors[i].hseq + 1, s->ptr);
+           }
+       }
+    }
     mySignal(SIGINT, prevtrap);
 }
 
diff --git a/rc.c b/rc.c
index f57b564..95afd95 100644
--- a/rc.c
+++ b/rc.c
@@ -72,6 +72,7 @@ static int OptionEncode = FALSE;
 #define CMT_OPEN_TAB_BLANK N_("Open link on new tab if target is _blank or 
_new")
 #define CMT_OPEN_TAB_DL_LIST N_("Open download list panel on new tab")
 #define CMT_DISPLINK     N_("Display link URL automatically")
+#define CMT_DISPLINKNUMBER N_("Display link numbers")
 #define CMT_DECODE_URL   N_("Display decoded URL")
 #define CMT_DISPLINEINFO N_("Display current line number")
 #define CMT_DISP_IMAGE   N_("Display inline images")
@@ -338,6 +339,8 @@ struct param_ptr params1[] = {
      CMT_OPEN_TAB_DL_LIST, NULL},
     {"display_link", P_INT, PI_ONOFF, (void *)&displayLink, CMT_DISPLINK,
      NULL},
+    {"display_link_number", P_INT, PI_ONOFF, (void *)&displayLinkNumber,
+     CMT_DISPLINKNUMBER, NULL},
     {"decode_url", P_INT, PI_ONOFF, (void *)&DecodeURL, CMT_DECODE_URL, NULL},
     {"display_lineinfo", P_INT, PI_ONOFF, (void *)&displayLineInfo,
      CMT_DISPLINEINFO, NULL},



!-------------------------------------------------------------flip-


Mark the link listing in -dump output.
Output link listing only if there are any links.

---
commit ccbb9954f64ef40ab3b9240c30e09945919e64b8
tree b2a8149deda08d7ca6491acf2fd9167dd10222ef
parent 943bacee8ee8fc52e80be0df17eddfb9b931eb44
author Karsten Schoelzel <[EMAIL PROTECTED]> Wed, 03 May 2006 11:37:26 +0200
committer Karsten Schoelzel <[EMAIL PROTECTED]> Wed, 03 May 2006 11:37:26 +0200

 main.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/main.c b/main.c
index b365de9..2b5193c 100644
--- a/main.c
+++ b/main.c
@@ -1242,7 +1242,8 @@ do_dump(Buffer *buf)
     if (w3m_dump == DUMP_BUFFER) {
        int i;
        saveBuffer(buf, stdout, FALSE);
-       if (displayLinkNumber) {
+       if (displayLinkNumber && buf->href->nanchor) {
+           printf("\nReferences:\n\n");
            for (i = 0; i < buf->href->nanchor; i++) {
                ParsedURL pu;
                static Str s = NULL;



!-------------------------------------------------------------flip-


Reply via email to