diff options
author | Fumitoshi UKAI <ukai@debian.or.jp> | 2002-12-18 16:33:19 +0000 |
---|---|---|
committer | Fumitoshi UKAI <ukai@debian.or.jp> | 2002-12-18 16:33:19 +0000 |
commit | 22fc4c640a30f5ffe44cc76e0e5f50eb7f8412a3 (patch) | |
tree | 520a1a65c026780156504301fd0e7e475ff1fb12 /search.c | |
parent | * main.c (DefaultAlarm): fix initialize value (diff) | |
download | w3m-22fc4c640a30f5ffe44cc76e0e5f50eb7f8412a3.tar.gz w3m-22fc4c640a30f5ffe44cc76e0e5f50eb7f8412a3.zip |
[w3m-dev 03579] Re: clean up displayBuffer()
* display.c (displayBuffer): re calcTabPos() when force or image redraw
* main.c (_mark): force redraw
(reinit): redraw image
* search.c (backwardSearch): found_last
From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
Diffstat (limited to 'search.c')
-rw-r--r-- | search.c | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -1,4 +1,4 @@ -/* $Id: search.c,v 1.22 2002/11/24 16:02:22 ukai Exp $ */ +/* $Id: search.c,v 1.23 2002/12/18 16:33:19 ukai Exp $ */ #include "fm.h" #include "regex.h" #include <signal.h> @@ -189,7 +189,7 @@ forwardSearch(Buffer *buf, char *str) int backwardSearch(Buffer *buf, char *str) { - char *p, *q, *found, *first, *last; + char *p, *q, *found, *found_last, *first, *last; Line *l, *begin; int wrapped = FALSE; int pos; @@ -220,11 +220,14 @@ backwardSearch(Buffer *buf, char *str) #endif p = &l->lineBuf[pos]; found = NULL; + found_last = NULL; q = l->lineBuf; while (regexMatch(q, &l->lineBuf[l->len] - q, q == l->lineBuf) == 1) { matchedPosition(&first, &last); - if (first <= p) + if (first <= p) { found = first; + found_last = last; + } #ifdef JP_CHARSET if (l->propBuf[q - l->lineBuf] & PC_KANJI1) q += 2; @@ -237,7 +240,7 @@ backwardSearch(Buffer *buf, char *str) if (found) { buf->pos = found - l->lineBuf; arrangeCursor(buf); - set_mark(l, buf->pos, last - l->lineBuf); + set_mark(l, buf->pos, found_last - l->lineBuf); return SR_FOUND; } } @@ -252,14 +255,17 @@ backwardSearch(Buffer *buf, char *str) } } found = NULL; + found_last = NULL; q = l->lineBuf; while (regexMatch(q, &l->lineBuf[l->len] - q, q == l->lineBuf) == 1) { matchedPosition(&first, &last); if (wrapped && l == begin && buf->pos == first - l->lineBuf) /* exactly same match */ ; - else + else { found = first; + found_last = last; + } #ifdef JP_CHARSET if (l->propBuf[q - l->lineBuf] & PC_KANJI1) q += 2; @@ -272,7 +278,7 @@ backwardSearch(Buffer *buf, char *str) buf->currentLine = l; gotoLine(buf, l->linenumber); arrangeCursor(buf); - set_mark(l, buf->pos, last - l->lineBuf); + set_mark(l, buf->pos, found_last - l->lineBuf); return SR_FOUND | (wrapped ? SR_WRAPPED : 0); } if (wrapped && l == begin) /* no match */ |