editorFindCallback prevents search results navigation
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
Direzione di ricerca
Inizia dal punto di ingresso editorFindCallback nel codice sorgente di kilo e riproduci il problema effettuando una ricerca, quindi usando i tasti freccia per spostarti tra i risultati. Il lavoro è completo quando la navigazione sia al risultato precedente sia a quello successivo lascia l’editor sul risultato selezionato invece di tornare immediatamente a quello originale.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Heyy, while doing the kilo guide, i stumbled across a bug with my editor, for some reason when i press the arrow keys to navigate to the previous and next search result the editor jumped to the next result (as expected) but then imediately jumps back to the previous result where we were originally (preventing search navigation)
To fix this, simply edit the editorFindCallback with the changes...
void editorFindCallback(char *query, int key) {
static int last_match = -1;
static int direction = 1;
// Empty queries reset searching from top
if (strlen(query) == 0) {
last_match = -1;
return;
}
int current;
if (key == '\r' || key == '\x1b') {
last_match = -1;
direction = 1;
return;
} else if (key == ARROW_RIGHT || key == ARROW_DOWN) {
current = last_match+1; // Search from next row
direction = 1;
} else if (key == ARROW_LEFT || key == ARROW_UP) {
current = last_match-1; // Search from previous row
direction = -1;
} else {
direction = 1;
current = last_match; // Keep search on current row with current result to terminate early
}
if (last_match == -1) direction = 1;
int i;
for (i = 0; i < E.numrows; i++) {
// Clamp current
if (current == -1) current = E.numrows - 1;
else if (current == E.numrows) current = 0;
// Immediately search without moving current positon
erow *row = &E.row[current];
char *match = strstr(row->render, query);
if (match) {
last_match = current;
E.cy = current;
E.cx = editorRowRxToCx(row, match - row->render);
E.rowoff = E.numrows;
break;
}
current += direction;
}
}
- Lingua principale
- C
- Stelle
- 9.2k
- Fork
- 1k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di antirez/kilo
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 35/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 55/100
-
Multi-line comment highlighting breaks after row deletionForse già presa @davidklassen l’ha presa 269 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 38/100
Tutte le issue di antirez/kilo
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
FujiNetWIFI/fujinet-firmware#2261 ·
I maintainer di solito rispondono entro 1 giorno
-
area/infrared type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
DarkFlippers/unleashed-firmware#1201 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
pocoproject/poco#5626 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 78/100
VMAFx/vmafx#3260 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
FujiNetWIFI/fujinet-lib#272 ·
I maintainer di solito rispondono entro 1 giorno