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-