mirror of
https://github.com/bobbimanners/emailler.git
synced 2024-09-29 23:54:59 +00:00
EDIT: Refactored search/replace. Replace now does replace-all.
This commit is contained in:
parent
192d5a9dc0
commit
a01426c0b1
50
apps/edit.c
50
apps/edit.c
@ -1410,8 +1410,9 @@ void save(void) {
|
|||||||
* Perform replace part of search/replace
|
* Perform replace part of search/replace
|
||||||
* pos - position where search term was found
|
* pos - position where search term was found
|
||||||
* r - if 0 then perform replace operation
|
* r - if 0 then perform replace operation
|
||||||
|
* Returns 1 if search should continue, 0 otherwise
|
||||||
*/
|
*/
|
||||||
void finish_search_replace(uint16_t pos, uint8_t r) {
|
uint8_t finish_search_replace(uint16_t pos, uint8_t r) {
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
mode = SEL_NONE;
|
mode = SEL_NONE;
|
||||||
jump_pos(pos);
|
jump_pos(pos);
|
||||||
@ -1423,6 +1424,37 @@ void finish_search_replace(uint16_t pos, uint8_t r) {
|
|||||||
}
|
}
|
||||||
set_modified(1);
|
set_modified(1);
|
||||||
draw_screen();
|
draw_screen();
|
||||||
|
return (r == 0 ? 1 : 0); // Always continue for replace
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Perform search/replace operation
|
||||||
|
* r - if 0 then perform replace operation
|
||||||
|
*/
|
||||||
|
void do_search_replace(uint8_t r) {
|
||||||
|
uint8_t wrapcount = 0;
|
||||||
|
uint16_t foundpos;
|
||||||
|
mode = SRCH1; // Searching ..
|
||||||
|
update_status_line();
|
||||||
|
search:
|
||||||
|
if (search_in_gapbuf(gapend + 1, search, &foundpos) == 0) {
|
||||||
|
if (wrapcount > 0)
|
||||||
|
return; // Wrapped already. Give up.
|
||||||
|
++wrapcount;
|
||||||
|
mode = SRCH2; // Wrapped ..
|
||||||
|
update_status_line();
|
||||||
|
set_gapbuf(gapbegin, '\0'); // NULL term for search_in_gapbuf()
|
||||||
|
if (search_in_gapbuf(0, search, &foundpos) == 0) {
|
||||||
|
mode = SRCH3; // Not found ..
|
||||||
|
update_status_line();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (finish_search_replace(foundpos, r) == 1)
|
||||||
|
goto search;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (finish_search_replace(gapbegin + foundpos - (gapend + 1), r) == 1)
|
||||||
|
goto search;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1568,21 +1600,7 @@ int edit(char *fname) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mode = SRCH1;
|
do_search_replace(tmp);
|
||||||
update_status_line();
|
|
||||||
if (search_in_gapbuf(gapend + 1, search, &foundpos) == 0) {
|
|
||||||
mode = SRCH2;
|
|
||||||
update_status_line();
|
|
||||||
set_gapbuf(gapbegin, '\0');
|
|
||||||
if (search_in_gapbuf(0, search, &foundpos) == 0) {
|
|
||||||
mode = SRCH3;
|
|
||||||
update_status_line();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
finish_search_replace(foundpos, tmp);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
finish_search_replace(gapbegin + foundpos - (gapend + 1), tmp);
|
|
||||||
break;
|
break;
|
||||||
case 0x80 + 'I': // OA-I "Insert file"
|
case 0x80 + 'I': // OA-I "Insert file"
|
||||||
case 0x80 + 'i':
|
case 0x80 + 'i':
|
||||||
|
Loading…
Reference in New Issue
Block a user