diff options
Diffstat (limited to '')
| -rw-r--r-- | ChangeLog | 20 | ||||
| -rw-r--r-- | NEWS | 1 | ||||
| -rw-r--r-- | doc-jp/README.func | 2 | ||||
| -rw-r--r-- | doc/README.func | 2 | ||||
| -rw-r--r-- | funcname.tab | 4 | ||||
| -rw-r--r-- | main.c | 92 | ||||
| -rw-r--r-- | proto.h | 4 | 
7 files changed, 115 insertions, 10 deletions
| @@ -1,3 +1,21 @@ +2003-07-23  Yoshinobu Sakane <sakane@d4.bsd.nes.nec.co.jp> + +	* [w3m-dev 03939] next/prev visited link +	* funcname.tab (NEXT_VISITED): added +		(PREV_VISITED): added +	* main.c (_nextA): added +		(_prevA): added +		(nextVA): added +		(prevVA): added +	* proto.h (nextVA): added +		(prevVA): added +	* doc/README.func (NEXT_VISITED): added +		(PREV_VISITED): added +	* doc-jp/README.func (NEXT_VISITED): added +		(PREV_VISITED): added +	* NEWS: func: NEXT_VISITED, PREV_VISITED +	 +  2003-07-14  Hiroyuki Ito <hito@crl.go.jp>  	* [w3m-dev 03938] clear region margin @@ -7933,4 +7951,4 @@ a	* [w3m-dev 03276] compile error on EWS4800  	* release-0-2-1  	* import w3m-0.2.1 -$Id: ChangeLog,v 1.852 2003/07/13 16:19:09 ukai Exp $ +$Id: ChangeLog,v 1.853 2003/07/22 17:24:49 ukai Exp $ @@ -1,5 +1,6 @@  w3m 0.5 or 1.0? +* func: NEXT_VISITED, PREV_VISITED  * autoconfiscate  * rc: use_history diff --git a/doc-jp/README.func b/doc-jp/README.func index e5fbfa8..ea46ba9 100644 --- a/doc-jp/README.func +++ b/doc-jp/README.func @@ -79,6 +79,7 @@ NEXT_RIGHT     カーソルの右側にあるリンクに移動します  NEXT_RIGHT_DOWN        カーソルの右側(無ければ次行以降)にあるリンクに移動します  NEXT_TAB	次のタブに移動します  NEXT_UP                カーソルの上側にあるリンクに移動します +NEXT_VISITED    次の訪れたことのあるリンクに移動します  NEXT_WORD	次の単語に移動します  NOTHING		何もしません  NULL		何もしません @@ -93,6 +94,7 @@ PREV_LINK	前のリンクに移動します  PREV_MARK	一つ前のマークに移動します  PREV_PAGE	前のページを表示します  PREV_TAB	前のタブに移動します +PREV_VISITED    前の訪れたことのあるリンクに移動します  PREV_WORD	前の単語に移動します  PRINT		バッファの表示内容をファイルに保存します  QUIT		w3mを終了します diff --git a/doc/README.func b/doc/README.func index e48cabf..28d84f4 100644 --- a/doc/README.func +++ b/doc/README.func @@ -79,6 +79,7 @@ NEXT_RIGHT     Move to next right link  NEXT_RIGHT_DOWN        Move to next right (or downward) link   NEXT_TAB	Move to next tab  NEXT_UP                Move to next upward link  +NEXT_VISITED    Move to next visited link  NEXT_WORD	Move to next word  NOTHING		Do nothing  NULL		Do nothing @@ -93,6 +94,7 @@ PREV_LINK	Move to previous link  PREV_MARK	Move to previous mark  PREV_PAGE	Move to previous page  PREV_TAB	Move to previous tab +PREV_VISITED    Move to previous visited link  PREV_WORD	Move to previous word  PRINT		Save buffer to file  QUIT		Quit w3m diff --git a/funcname.tab b/funcname.tab index d5b4589..2434069 100644 --- a/funcname.tab +++ b/funcname.tab @@ -1,4 +1,4 @@ -# $Id: funcname.tab,v 1.20 2003/01/23 18:37:21 ukai Exp $ +# $Id: funcname.tab,v 1.21 2003/07/22 17:24:49 ukai Exp $  # macro name	function name  #----------------------------  @@@		nulcmd @@ -147,3 +147,5 @@ VIEW_BOOKMARK	ldBmark  VIEW_IMAGE	followI  WHEREIS		srchfor  WRAP_TOGGLE	wrapToggle +NEXT_VISITED    nextVA +PREV_VISITED    prevVA @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.226 2003/05/12 16:34:12 ukai Exp $ */ +/* $Id: main.c,v 1.227 2003/07/22 17:24:49 ukai Exp $ */  #define MAINPROGRAM  #include "fm.h"  #include <signal.h> @@ -94,6 +94,8 @@ static void _goLine(char *);  static void _newT(void);  static void followTab(TabBuffer * tab);  static void moveTab(TabBuffer * t, TabBuffer * t2, int right); +static void _nextA(int); +static void _prevA(int);  static int check_target = TRUE;  #define PREC_NUM (prec_num ? prec_num : 1)  #define PREC_LIMIT 10000 @@ -3451,10 +3453,39 @@ lastA(void)  void  nextA(void)  { +    _nextA(FALSE); +} + +/* go to the previous anchor */ +void +prevA(void) +{ +    _prevA(FALSE); +} + +/* go to the next visited anchor */ +void +nextVA(void) +{ +    _nextA(TRUE); +} + +/* go to the previous visited anchor */ +void +prevVA(void) +{ +    _prevA(TRUE); +} + +/* go to the next [visited] anchor */ +static void +_nextA(int visited) +{      HmarkerList *hl = Currentbuf->hmarklist;      BufferPoint *po;      Anchor *an, *pan;      int i, x, y, n = searchKeyNum(); +    ParsedURL url;      if (Currentbuf->firstLine == NULL)  	return; @@ -3462,40 +3493,63 @@ nextA(void)  	return;      an = retrieveCurrentAnchor(Currentbuf); -    if (an == NULL) +    if (visited != TRUE && an == NULL)  	an = retrieveCurrentForm(Currentbuf);      y = Currentbuf->currentLine->linenumber;      x = Currentbuf->pos; +    if (visited == TRUE) { +        n = hl->nmark; +    } +      for (i = 0; i < n; i++) {  	pan = an;  	if (an && an->hseq >= 0) {  	    int hseq = an->hseq + 1;  	    do {  		if (hseq >= hl->nmark) { +                    if (visited == TRUE) +                        return;  		    an = pan;  		    goto _end;  		}  		po = &hl->marks[hseq];  		an = retrieveAnchor(Currentbuf->href, po->line, po->pos); -		if (an == NULL) +		if (visited != TRUE && an == NULL)  		    an = retrieveAnchor(Currentbuf->formitem, po->line,  					po->pos);  		hseq++; +                if (visited == TRUE && an) { +                    parseURL2(an->url, &url, baseURL(Currentbuf)); +                    if (getHashHist(URLHist, parsedURL2Str(&url)->ptr)) { +                        goto _end; +                    } +                }  	    } while (an == NULL || an == pan);  	}  	else {  	    an = closest_next_anchor(Currentbuf->href, NULL, x, y); +            if (visited != TRUE)   	    an = closest_next_anchor(Currentbuf->formitem, an, x, y);  	    if (an == NULL) { +                if (visited == TRUE) +                    return;  		an = pan;  		break;  	    }  	    x = an->start.pos;  	    y = an->start.line; +            if (visited == TRUE) { +                parseURL2(an->url, &url, baseURL(Currentbuf)); +                if (getHashHist(URLHist, parsedURL2Str(&url)->ptr)) { +                    goto _end; +                } +            }  	}      } +    if (visited == TRUE) +        return;    _end:      if (an == NULL || an->hseq < 0) @@ -3508,13 +3562,14 @@ nextA(void)  }  /* go to the previous anchor */ -void -prevA(void) +static void +_prevA(int visited)  {      HmarkerList *hl = Currentbuf->hmarklist;      BufferPoint *po;      Anchor *an, *pan;      int i, x, y, n = searchKeyNum(); +    ParsedURL url;      if (Currentbuf->firstLine == NULL)  	return; @@ -3522,40 +3577,63 @@ prevA(void)  	return;      an = retrieveCurrentAnchor(Currentbuf); -    if (an == NULL) +    if (visited != TRUE && an == NULL)  	an = retrieveCurrentForm(Currentbuf);      y = Currentbuf->currentLine->linenumber;      x = Currentbuf->pos; +    if (visited == TRUE) { +        n = hl->nmark; +    } +      for (i = 0; i < n; i++) {  	pan = an;  	if (an && an->hseq >= 0) {  	    int hseq = an->hseq - 1;  	    do {  		if (hseq < 0) { +                    if (visited == TRUE) +                        return;  		    an = pan;  		    goto _end;  		}  		po = hl->marks + hseq;  		an = retrieveAnchor(Currentbuf->href, po->line, po->pos); -		if (an == NULL) +		if (visited != TRUE && an == NULL)  		    an = retrieveAnchor(Currentbuf->formitem, po->line,  					po->pos);  		hseq--; +                if (visited == TRUE && an) { +                    parseURL2(an->url, &url, baseURL(Currentbuf)); +                    if (getHashHist(URLHist, parsedURL2Str(&url)->ptr)) { +                        goto _end; +                    } +                }  	    } while (an == NULL || an == pan);  	}  	else {  	    an = closest_prev_anchor(Currentbuf->href, NULL, x, y); +            if (visited != TRUE)  	    an = closest_prev_anchor(Currentbuf->formitem, an, x, y);  	    if (an == NULL) { +                if (visited == TRUE) +                    return;  		an = pan;  		break;  	    }  	    x = an->start.pos;  	    y = an->start.line; +            if (visited == TRUE && an) { +                parseURL2(an->url, &url, baseURL(Currentbuf)); +                if (getHashHist(URLHist, parsedURL2Str(&url)->ptr)) { +                    goto _end; +                }  	}      } +    } +    if (visited == TRUE) +        return;    _end:      if (an == NULL || an->hseq < 0) @@ -1,4 +1,4 @@ -/* $Id: proto.h,v 1.92 2003/04/08 16:01:40 ukai Exp $ */ +/* $Id: proto.h,v 1.93 2003/07/22 17:24:49 ukai Exp $ */  /*    *   This file was automatically generated by version 1.7 of cextract.   *   Manual editing not recommended. @@ -65,6 +65,8 @@ extern void onA(void);  extern void nextA(void);  extern void prevA(void); +extern void nextVA(void); +extern void prevVA(void);  extern void nextL(void);  extern void nextLU(void);  extern void nextR(void); | 
