home *** CD-ROM | disk | FTP | other *** search
- export void IncSearch()
- {
- string searchstring="";
- string key;
- int searchlen=0;
- int repeat=1;
- int keylen=0, counter;
- int foundy[100], foundx[100];
- int ret;
-
-
- SearchSet("f+"); // Only search forward.
-
- while (repeat) {
- Status(0, joinstr("Search:»", searchstring, "«"));
- key=GetKey();
- if (!strcmp(key, "\n") || !strcmp(key, "\r")) {
- repeat=0;
- } else if (!strcmp(key, "\b")) {
- if (searchlen) {
- RedrawScreen();
- searchlen--;
- GotoLine(foundy[searchlen], foundx[searchlen]);
- searchstring=substr(searchstring, 0, searchlen);
- }
- } else if (searchlen<90) {
- keylen=0;
- if (!searchlen || strcmp(key, "\x13")) {
- searchstring+=key;
- searchlen+=(keylen=strlen(key));
- for (counter=keylen; counter>0; counter--) {
- foundx[searchlen-counter]=ReadInfo("byte_position");
- foundy[searchlen-counter]=ReadInfo("line");
- }
- Visible(0);
- CursorLeft(1);
- }
- ret=Search(searchstring);
- if (ret<0) {
- DisplayBeep();
- if (keylen)
- CursorRight(1);
- }
- RedrawScreen();
- Visible(1);
- if (ret>=0)
- InverseLine(0, searchlen, 0);
- }
- }
- RedrawScreen();
- }
-
- AssignKey("IncSearch();", "Control s");
-
-