commit 2246482eaf5f2c63df9af5b3436312be16907a56 from: Stefan Sperling date: Tue Jun 25 10:27:42 2019 UTC make search actually work in 'tog blame' commit - ac66afb8fb3969b18a36010bfb8d8a90a54685e7 commit + 2246482eaf5f2c63df9af5b3436312be16907a56 blob - 1a425faf447bc2565598eab69be83532393fee3a blob + 691ab915f783045757051241faacca38bd22898f --- lib/object.c +++ lib/object.c @@ -1160,7 +1160,7 @@ got_object_blob_dump_to_file(size_t *total_len, int *n if (len == 0) break; buf = got_object_blob_get_read_buf(blob); - for (i = 0; i < len; i++) { + for (i = hdrlen; i < len; i++) { if (buf[i] != '\n') continue; if (nlines) @@ -1179,7 +1179,7 @@ got_object_blob_dump_to_file(size_t *total_len, int *n } if (line_offsets && nlines && total_len) { (*line_offsets)[*nlines - 1] = off; - off = *total_len + i + 1; + off = *total_len + i + 1 - got_object_blob_get_hdrlen(blob); } } if (total_len) blob - 8268cae07e60377775edbec94b0fc5e5607397e1 blob + 77aba92b932766d94d94f684e5085155417a8a6f --- tog/tog.c +++ tog/tog.c @@ -3246,7 +3246,6 @@ match_line(const char *line, regex_t *regex) static const struct got_error * search_next_blame_view(struct tog_view *view) { - const struct got_error *err = NULL; struct tog_blame_view_state *s = &view->state.blame; int lineno; @@ -3257,9 +3256,9 @@ search_next_blame_view(struct tog_view *view) if (s->matched_line) { if (view->searching == TOG_SEARCH_FORWARD) - lineno = s->first_displayed_line - 1 + s->selected_line + 1; + lineno = s->matched_line + 1; else - lineno = s->first_displayed_line - 1 + s->selected_line - 1; + lineno = s->matched_line - 1; } else { if (view->searching == TOG_SEARCH_FORWARD) lineno = 1; @@ -3278,6 +3277,7 @@ search_next_blame_view(struct tog_view *view) free(line); break; } + if (view->searching == TOG_SEARCH_FORWARD) lineno = 1; else @@ -3291,16 +3291,13 @@ search_next_blame_view(struct tog_view *view) } free(line); line = parse_next_line(s->blame.f, &len); - if (line == NULL) - break; - if (match_line(line, &view->regex)) { + if (line && match_line(line, &view->regex)) { view->search_next_done = 1; s->matched_line = lineno; free(line); break; } free(line); - line = NULL; if (view->searching == TOG_SEARCH_FORWARD) lineno++; else @@ -3308,19 +3305,6 @@ search_next_blame_view(struct tog_view *view) } if (s->matched_line) { - int cur = s->first_displayed_line - 1 + s->selected_line; - while (cur < s->matched_line) { - err = input_blame_view(NULL, NULL, NULL, view, KEY_DOWN); - if (err) - return err; - cur++; - } - while (cur > s->matched_line) { - err = input_blame_view(NULL, NULL, NULL, view, KEY_UP); - if (err) - return err; - cur--; - } s->first_displayed_line = s->matched_line; s->selected_line = 1; }