[w3m-dev 03793] incremental search fix

main.c (dispincsrch): revert sbuf.pos fix
		start from next position in next forward search
	(srch): start from next position in forward saerch
		if not found, restore original position
	(srch_nxtprv): start from next position in next forward search
* search.c (forwardSearch): search from current position
	(dispincsrch): start from current position in case of
From: Fumitoshi UKAI  <ukai@debian.or.jp>
This commit is contained in:
Fumitoshi UKAI
2003-03-05 18:56:28 +00:00
parent 4299bb58de
commit 5ef48c8f2e
3 changed files with 26 additions and 5 deletions
+11 -1
View File
@@ -1,3 +1,13 @@
2003-03-06 Fumitoshi UKAI <ukai@debian.or.jp>
* [w3m-dev 03793] incremental search fix
* main.c (dispincsrch): revert sbuf.pos fix
start from next position in next forward search
(srch): start from next position in forward saerch
if not found, restore original position
(srch_nxtprv): start from next position in next forward search
* search.c (forwardSearch): search from current position
2003-03-06 Fumitoshi UKAI <ukai@debian.or.jp> 2003-03-06 Fumitoshi UKAI <ukai@debian.or.jp>
* [w3m-dev 03792] URL match string * [w3m-dev 03792] URL match string
@@ -7307,4 +7317,4 @@ a * [w3m-dev 03276] compile error on EWS4800
* release-0-2-1 * release-0-2-1
* import w3m-0.2.1 * import w3m-0.2.1
$Id: ChangeLog,v 1.771 2003/03/05 18:19:12 ukai Exp $ $Id: ChangeLog,v 1.772 2003/03/05 18:56:28 ukai Exp $
+13 -2
View File
@@ -1,4 +1,4 @@
/* $Id: main.c,v 1.216 2003/03/05 18:19:15 ukai Exp $ */ /* $Id: main.c,v 1.217 2003/03/05 18:56:28 ukai Exp $ */
#define MAINPROGRAM #define MAINPROGRAM
#include "fm.h" #include "fm.h"
#include <signal.h> #include <signal.h>
@@ -1603,7 +1603,6 @@ dispincsrch(int ch, Str buf, Lineprop *prop)
if (ch == 0 && buf == NULL) { if (ch == 0 && buf == NULL) {
SAVE_BUFPOSITION(&sbuf); /* search starting point */ SAVE_BUFPOSITION(&sbuf); /* search starting point */
currentLine = sbuf.currentLine; currentLine = sbuf.currentLine;
sbuf.pos -= 1; /* XXX start from current position */
pos = sbuf.pos; pos = sbuf.pos;
return -1; return -1;
} }
@@ -1632,12 +1631,16 @@ dispincsrch(int ch, Str buf, Lineprop *prop)
if (do_next_search) { if (do_next_search) {
if (*str) { if (*str) {
if (searchRoutine == forwardSearch)
Currentbuf->pos += 1;
SAVE_BUFPOSITION(&sbuf); SAVE_BUFPOSITION(&sbuf);
srchcore(str, searchRoutine); srchcore(str, searchRoutine);
arrangeCursor(Currentbuf); arrangeCursor(Currentbuf);
if (Currentbuf->currentLine == currentLine if (Currentbuf->currentLine == currentLine
&& Currentbuf->pos == pos) { && Currentbuf->pos == pos) {
SAVE_BUFPOSITION(&sbuf); SAVE_BUFPOSITION(&sbuf);
if (searchRoutine == forwardSearch)
Currentbuf->pos += 1;
srchcore(str, searchRoutine); srchcore(str, searchRoutine);
arrangeCursor(Currentbuf); arrangeCursor(Currentbuf);
} }
@@ -1692,6 +1695,7 @@ srch(int (*func) (Buffer *, char *), char *prompt)
char *str; char *str;
int result; int result;
int disp = FALSE; int disp = FALSE;
int pos;
str = searchKeyData(); str = searchKeyData();
if (str == NULL || *str == '\0') { if (str == NULL || *str == '\0') {
@@ -1704,9 +1708,14 @@ srch(int (*func) (Buffer *, char *), char *prompt)
} }
disp = TRUE; disp = TRUE;
} }
pos = Currentbuf->pos;
if (func == forwardSearch)
Currentbuf->pos += 1;
result = srchcore(str, func); result = srchcore(str, func);
if (result & SR_FOUND) if (result & SR_FOUND)
clear_mark(Currentbuf->currentLine); clear_mark(Currentbuf->currentLine);
else
Currentbuf->pos = pos;
displayBuffer(Currentbuf, B_NORMAL); displayBuffer(Currentbuf, B_NORMAL);
if (disp) if (disp)
disp_srchresult(result, prompt, str); disp_srchresult(result, prompt, str);
@@ -1759,6 +1768,8 @@ srch_nxtprv(int reverse)
reverse = 1; reverse = 1;
if (searchRoutine == backwardSearch) if (searchRoutine == backwardSearch)
reverse ^= 1; reverse ^= 1;
if (reverse == 0)
Currentbuf->pos += 1;
result = srchcore(SearchString, routine[reverse]); result = srchcore(SearchString, routine[reverse]);
if (result & SR_FOUND) if (result & SR_FOUND)
clear_mark(Currentbuf->currentLine); clear_mark(Currentbuf->currentLine);
+2 -2
View File
@@ -1,4 +1,4 @@
/* $Id: search.c,v 1.28 2003/03/05 18:19:17 ukai Exp $ */ /* $Id: search.c,v 1.29 2003/03/05 18:56:30 ukai Exp $ */
#include "fm.h" #include "fm.h"
#include "regex.h" #include "regex.h"
#include <signal.h> #include <signal.h>
@@ -107,7 +107,7 @@ forwardSearch(Buffer *buf, char *str)
if (l == NULL) { if (l == NULL) {
return SR_NOTFOUND; return SR_NOTFOUND;
} }
pos = buf->pos + 1; pos = buf->pos;
if (l->bpos) { if (l->bpos) {
pos += l->bpos; pos += l->bpos;
while (l->bpos && l->prev) while (l->bpos && l->prev)