commit - ad80ab7bbcd36adcb6e10ed8d9e31a573d188b35
commit + fb2756b9645e56a7371fbb658d2b2634a7f62dfe
blob - 62a436a1ce30e16c207ee46e03c16eda0b912197
blob + 717b19eb897fabfc8c02dd72eb86fd837ae01367
--- tog/tog.c
+++ tog/tog.c
const struct got_error *err = NULL;
struct got_object_id *head_id = NULL;
int nfetched;
- struct tog_log_view_state *state = &view->state.log;
+ struct tog_log_view_state *s = &view->state.log;
- err = got_repo_map_path(&state->in_repo_path, repo, path);
+ err = got_repo_map_path(&s->in_repo_path, repo, path);
if (err != NULL)
goto done;
return err;
/* The graph contains all commits. */
- err = got_commit_graph_open(&state->graph, head_id, 0, repo);
+ err = got_commit_graph_open(&s->graph, head_id, 0, repo);
if (err)
goto done;
/* The commit queue contains a subset of commits filtered by path. */
- TAILQ_INIT(&state->commits.head);
- state->commits.ncommits = 0;
+ TAILQ_INIT(&s->commits.head);
+ s->commits.ncommits = 0;
/* Populate commit graph with a sufficient number of commits. */
- err = got_commit_graph_fetch_commits_up_to(&nfetched,
- state->graph, start_id, repo);
+ err = got_commit_graph_fetch_commits_up_to(&nfetched, s->graph,
+ start_id, repo);
if (err)
goto done;
* in order to avoid having to re-fetch commits from disk while
* updating the display.
*/
- err = queue_commits(state->graph, &state->commits, start_id,
- view->nlines, 1, repo, state->in_repo_path);
+ err = queue_commits(s->graph, &s->commits, start_id, view->nlines, 1,
+ repo, s->in_repo_path);
if (err) {
if (err->code != GOT_ERR_ITER_COMPLETED)
goto done;
err = NULL;
}
- state->repo = repo;
+ s->repo = repo;
done:
free(head_id);
return err;
static void close_log_view(struct tog_view *view)
{
- struct tog_log_view_state *state = &view->state.log;
+ struct tog_log_view_state *s = &view->state.log;
- if (state->graph)
- got_commit_graph_close(state->graph);
- free_commits(&state->commits);
- free(state->in_repo_path);
+ if (s->graph)
+ got_commit_graph_close(s->graph);
+ free_commits(&s->commits);
+ free(s->in_repo_path);
}
static const struct got_error *
{
const struct got_error *err = NULL;
int ch, done = 0;
- struct tog_log_view_state *state = &view->state.log;
+ struct tog_log_view_state *s = &view->state.log;
view_show(view);
- state->first_displayed_entry =
- TAILQ_FIRST(&state->commits.head);
- state->selected_entry = state->first_displayed_entry;
+ s->first_displayed_entry =
+ TAILQ_FIRST(&s->commits.head);
+ s->selected_entry = s->first_displayed_entry;
while (!done) {
- err = draw_commits(view, &state->last_displayed_entry,
- &state->selected_entry, state->first_displayed_entry,
- &state->commits, state->selected, view->nlines,
- state->graph, state->repo, state->in_repo_path);
+ err = draw_commits(view, &s->last_displayed_entry,
+ &s->selected_entry, s->first_displayed_entry,
+ &s->commits, s->selected, view->nlines, s->graph,
+ s->repo, s->in_repo_path);
if (err)
goto done;
break;
case 'k':
case KEY_UP:
- if (state->selected > 0)
- state->selected--;
- if (state->selected > 0)
+ if (s->selected > 0)
+ s->selected--;
+ if (s->selected > 0)
break;
- scroll_up(&state->first_displayed_entry, 1,
- &state->commits);
+ scroll_up(&s->first_displayed_entry, 1,
+ &s->commits);
break;
case KEY_PPAGE:
- if (TAILQ_FIRST(&state->commits.head) ==
- state->first_displayed_entry) {
- state->selected = 0;
+ if (TAILQ_FIRST(&s->commits.head) ==
+ s->first_displayed_entry) {
+ s->selected = 0;
break;
}
- scroll_up(&state->first_displayed_entry,
- view->nlines, &state->commits);
+ scroll_up(&s->first_displayed_entry,
+ view->nlines, &s->commits);
break;
case 'j':
case KEY_DOWN:
- if (state->selected < MIN(view->nlines - 2,
- state->commits.ncommits - 1)) {
- state->selected++;
+ if (s->selected < MIN(view->nlines - 2,
+ s->commits.ncommits - 1)) {
+ s->selected++;
break;
}
- err = scroll_down(&state->first_displayed_entry,
- 1, state->last_displayed_entry,
- &state->commits, state->graph, state->repo,
- state->in_repo_path);
+ err = scroll_down(&s->first_displayed_entry, 1,
+ s->last_displayed_entry, &s->commits,
+ s->graph, s->repo, s->in_repo_path);
if (err) {
if (err->code != GOT_ERR_ITER_COMPLETED)
goto done;
break;
case KEY_NPAGE: {
struct commit_queue_entry *first;
- first = state->first_displayed_entry;
- err = scroll_down(&state->first_displayed_entry,
- view->nlines, state->last_displayed_entry,
- &state->commits, state->graph, state->repo,
- state->in_repo_path);
+ first = s->first_displayed_entry;
+ err = scroll_down(&s->first_displayed_entry,
+ view->nlines, s->last_displayed_entry,
+ &s->commits, s->graph, s->repo,
+ s->in_repo_path);
if (err == NULL)
break;
if (err->code != GOT_ERR_ITER_COMPLETED)
goto done;
- if (first == state->first_displayed_entry &&
- state->selected < MIN(view->nlines - 2,
- state->commits.ncommits - 1)) {
+ if (first == s->first_displayed_entry &&
+ s->selected < MIN(view->nlines - 2,
+ s->commits.ncommits - 1)) {
/* can't scroll further down */
- state->selected = MIN(view->nlines - 2,
- state->commits.ncommits - 1);
+ s->selected = MIN(view->nlines - 2,
+ s->commits.ncommits - 1);
}
err = NULL;
break;
err = view_resize(view);
if (err)
goto done;
- if (state->selected > view->nlines - 2)
- state->selected = view->nlines - 2;
- if (state->selected >
- state->commits.ncommits - 1)
- state->selected =
- state->commits.ncommits - 1;
+ if (s->selected > view->nlines - 2)
+ s->selected = view->nlines - 2;
+ if (s->selected > s->commits.ncommits - 1)
+ s->selected = s->commits.ncommits - 1;
break;
case KEY_ENTER:
case '\r':
- err = show_commit(view, state->selected_entry,
- state->repo);
+ err = show_commit(view, s->selected_entry,
+ s->repo);
if (err)
goto done;
view_show(view);
break;
case 't':
- err = browse_commit(view, state->selected_entry,
- state->repo);
+ err = browse_commit(view, s->selected_entry,
+ s->repo);
if (err)
goto done;
view_show(view);
const struct got_error *err = NULL;
int ch, done = 0;
int eof, i;
- struct tog_diff_view_state *state = &view->state.diff;
+ struct tog_diff_view_state *s = &view->state.diff;
view_show(view);
while (!done) {
- err = draw_file(view, state->f, &state->first_displayed_line,
- &state->last_displayed_line, &eof, view->nlines);
+ err = draw_file(view, s->f, &s->first_displayed_line,
+ &s->last_displayed_line, &eof, view->nlines);
if (err)
break;
nodelay(stdscr, FALSE);
break;
case 'k':
case KEY_UP:
- if (state->first_displayed_line > 1)
- state->first_displayed_line--;
+ if (s->first_displayed_line > 1)
+ s->first_displayed_line--;
break;
case KEY_PPAGE:
case KEY_BACKSPACE:
i = 0;
while (i++ < view->nlines - 1 &&
- state->first_displayed_line > 1)
- state->first_displayed_line--;
+ s->first_displayed_line > 1)
+ s->first_displayed_line--;
break;
case 'j':
case KEY_DOWN:
if (!eof)
- state->first_displayed_line++;
+ s->first_displayed_line++;
break;
case KEY_NPAGE:
case ' ':
i = 0;
while (!eof && i++ < view->nlines - 1) {
- char *line = parse_next_line(
- state->f, NULL);
- state->first_displayed_line++;
+ char *line;
+ line = parse_next_line(s->f, NULL);
+ s->first_displayed_line++;
if (line == NULL)
break;
}
struct got_object_id *commit_id, struct got_repository *repo)
{
const struct got_error *err = NULL;
- struct tog_blame_view_state *state = &view->state.blame;
+ struct tog_blame_view_state *s = &view->state.blame;
- SIMPLEQ_INIT(&state->blamed_commits);
+ SIMPLEQ_INIT(&s->blamed_commits);
- if (pthread_mutex_init(&state->mutex, NULL) != 0)
+ if (pthread_mutex_init(&s->mutex, NULL) != 0)
return got_error_from_errno();
- err = got_object_qid_alloc(&state->blamed_commit, commit_id);
+ err = got_object_qid_alloc(&s->blamed_commit, commit_id);
if (err)
return err;
- SIMPLEQ_INSERT_HEAD(&state->blamed_commits, state->blamed_commit,
- entry);
- state->first_displayed_line = 1;
- state->last_displayed_line = view->nlines;
- state->selected_line = 1;
- state->blame_complete = 0;
- state->path = path;
- state->repo = repo;
- state->commit_id = commit_id;
+ SIMPLEQ_INSERT_HEAD(&s->blamed_commits, s->blamed_commit, entry);
+ s->first_displayed_line = 1;
+ s->last_displayed_line = view->nlines;
+ s->selected_line = 1;
+ s->blame_complete = 0;
+ s->path = path;
+ s->repo = repo;
+ s->commit_id = commit_id;
return NULL;
}
static void
close_blame_view(struct tog_view *view)
{
- struct tog_blame_view_state *state = &view->state.blame;
+ struct tog_blame_view_state *s = &view->state.blame;
- while (!SIMPLEQ_EMPTY(&state->blamed_commits)) {
+ while (!SIMPLEQ_EMPTY(&s->blamed_commits)) {
struct got_object_qid *blamed_commit;
- blamed_commit = SIMPLEQ_FIRST(&state->blamed_commits);
- SIMPLEQ_REMOVE_HEAD(&state->blamed_commits, entry);
+ blamed_commit = SIMPLEQ_FIRST(&s->blamed_commits);
+ SIMPLEQ_REMOVE_HEAD(&s->blamed_commits, entry);
got_object_qid_free(blamed_commit);
}
}
struct got_object *obj = NULL, *pobj = NULL;
struct tog_blame blame;
struct tog_view *diff_view;
- struct tog_blame_view_state *state = &view->state.blame;
+ struct tog_blame_view_state *s = &view->state.blame;
view_show(view);
memset(&blame, 0, sizeof(blame));
- err = run_blame(&blame, &state->mutex, view, &state->blame_complete,
- &state->first_displayed_line, &state->last_displayed_line,
- &state->selected_line, &done, state->path,
- state->blamed_commit->id, state->repo);
+ err = run_blame(&blame, &s->mutex, view, &s->blame_complete,
+ &s->first_displayed_line, &s->last_displayed_line,
+ &s->selected_line, &done, s->path, s->blamed_commit->id, s->repo);
if (err)
return err;
while (!done) {
- if (pthread_mutex_lock(&state->mutex) != 0) {
+ if (pthread_mutex_lock(&s->mutex) != 0) {
err = got_error_from_errno();
goto done;
}
- err = draw_blame(view, state->blamed_commit->id, blame.f,
- state->path, blame.lines, blame.nlines,
- state->blame_complete, state->selected_line,
- &state->first_displayed_line, &state->last_displayed_line,
- &eof, view->nlines);
- if (pthread_mutex_unlock(&state->mutex) != 0) {
+ err = draw_blame(view, s->blamed_commit->id, blame.f,
+ s->path, blame.lines, blame.nlines, s->blame_complete,
+ s->selected_line, &s->first_displayed_line,
+ &s->last_displayed_line, &eof, view->nlines);
+ if (pthread_mutex_unlock(&s->mutex) != 0) {
err = got_error_from_errno();
goto done;
}
nodelay(stdscr, FALSE);
ch = wgetch(view->window);
nodelay(stdscr, TRUE);
- if (pthread_mutex_lock(&state->mutex) != 0) {
+ if (pthread_mutex_lock(&s->mutex) != 0) {
err = got_error_from_errno();
goto done;
}
break;
case 'k':
case KEY_UP:
- if (state->selected_line > 1)
- state->selected_line--;
- else if (state->selected_line == 1 &&
- state->first_displayed_line > 1)
- state->first_displayed_line--;
+ if (s->selected_line > 1)
+ s->selected_line--;
+ else if (s->selected_line == 1 &&
+ s->first_displayed_line > 1)
+ s->first_displayed_line--;
break;
case KEY_PPAGE:
case KEY_BACKSPACE:
- if (state->first_displayed_line == 1) {
- state->selected_line = 1;
+ if (s->first_displayed_line == 1) {
+ s->selected_line = 1;
break;
}
- if (state->first_displayed_line >
- view->nlines - 2)
- state->first_displayed_line -=
+ if (s->first_displayed_line > view->nlines - 2)
+ s->first_displayed_line -=
(view->nlines - 2);
else
- state->first_displayed_line = 1;
+ s->first_displayed_line = 1;
break;
case 'j':
case KEY_DOWN:
- if (state->selected_line < view->nlines - 2 &&
- state->first_displayed_line +
- state->selected_line <= blame.nlines)
- state->selected_line++;
- else if (state->last_displayed_line <
- blame.nlines)
- state->first_displayed_line++;
+ if (s->selected_line < view->nlines - 2 &&
+ s->first_displayed_line +
+ s->selected_line <= blame.nlines)
+ s->selected_line++;
+ else if (s->last_displayed_line < blame.nlines)
+ s->first_displayed_line++;
break;
case 'b':
case 'p': {
struct got_object_id *id;
id = get_selected_commit_id(blame.lines,
- state->first_displayed_line,
- state->selected_line);
+ s->first_displayed_line, s->selected_line);
if (id == NULL || got_object_id_cmp(id,
- state->blamed_commit->id) == 0)
+ s->blamed_commit->id) == 0)
break;
err = open_selected_commit(&pobj, &obj,
- blame.lines, state->first_displayed_line,
- state->selected_line, state->repo);
+ blame.lines, s->first_displayed_line,
+ s->selected_line, s->repo);
if (err)
break;
if (pobj == NULL && obj == NULL)
if (ch == 'p' && pobj == NULL)
break;
done = 1;
- if (pthread_mutex_unlock(&state->mutex) != 0) {
+ if (pthread_mutex_unlock(&s->mutex) != 0) {
err = got_error_from_errno();
goto done;
}
thread_err = stop_blame(&blame);
done = 0;
- if (pthread_mutex_lock(&state->mutex) != 0) {
+ if (pthread_mutex_lock(&s->mutex) != 0) {
err = got_error_from_errno();
goto done;
}
break;
}
err = got_object_qid_alloc(
- &state->blamed_commit, id);
+ &s->blamed_commit, id);
free(id);
if (err)
goto done;
- SIMPLEQ_INSERT_HEAD(&state->blamed_commits,
- state->blamed_commit, entry);
- err = run_blame(&blame, &state->mutex, view,
- &state->blame_complete,
- &state->first_displayed_line,
- &state->last_displayed_line,
- &state->selected_line, &done, state->path,
- state->blamed_commit->id, state->repo);
+ SIMPLEQ_INSERT_HEAD(&s->blamed_commits,
+ s->blamed_commit, entry);
+ err = run_blame(&blame, &s->mutex, view,
+ &s->blame_complete,
+ &s->first_displayed_line,
+ &s->last_displayed_line,
+ &s->selected_line, &done, s->path,
+ s->blamed_commit->id, s->repo);
if (err)
break;
break;
}
case 'B': {
struct got_object_qid *first;
- first = SIMPLEQ_FIRST(&state->blamed_commits);
- if (!got_object_id_cmp(first->id,
- state->commit_id))
+ first = SIMPLEQ_FIRST(&s->blamed_commits);
+ if (!got_object_id_cmp(first->id, s->commit_id))
break;
done = 1;
- if (pthread_mutex_unlock(&state->mutex) != 0) {
+ if (pthread_mutex_unlock(&s->mutex) != 0) {
err = got_error_from_errno();
goto done;
}
thread_err = stop_blame(&blame);
done = 0;
- if (pthread_mutex_lock(&state->mutex) != 0) {
+ if (pthread_mutex_lock(&s->mutex) != 0) {
err = got_error_from_errno();
goto done;
}
if (thread_err)
break;
- SIMPLEQ_REMOVE_HEAD(&state->blamed_commits,
- entry);
- got_object_qid_free(state->blamed_commit);
- state->blamed_commit =
- SIMPLEQ_FIRST(&state->blamed_commits);
- err = run_blame(&blame, &state->mutex, view,
- &state->blame_complete,
- &state->first_displayed_line,
- &state->last_displayed_line,
- &state->selected_line, &done, state->path,
- state->blamed_commit->id, state->repo);
+ SIMPLEQ_REMOVE_HEAD(&s->blamed_commits, entry);
+ got_object_qid_free(s->blamed_commit);
+ s->blamed_commit =
+ SIMPLEQ_FIRST(&s->blamed_commits);
+ err = run_blame(&blame, &s->mutex, view,
+ &s->blame_complete,
+ &s->first_displayed_line,
+ &s->last_displayed_line,
+ &s->selected_line, &done, s->path,
+ s->blamed_commit->id, s->repo);
if (err)
break;
break;
case KEY_ENTER:
case '\r':
err = open_selected_commit(&pobj, &obj,
- blame.lines, state->first_displayed_line,
- state->selected_line, state->repo);
+ blame.lines, s->first_displayed_line,
+ s->selected_line, s->repo);
if (err)
break;
if (pobj == NULL && obj == NULL)
break;
}
err = open_diff_view(diff_view, pobj, obj,
- state->repo);
+ s->repo);
if (err)
break;
err = show_diff_view(diff_view);
break;
case KEY_NPAGE:
case ' ':
- if (state->last_displayed_line
- >= blame.nlines &&
- state->selected_line < view->nlines - 2) {
- state->selected_line = MIN(blame.nlines,
+ if (s->last_displayed_line >= blame.nlines &&
+ s->selected_line < view->nlines - 2) {
+ s->selected_line = MIN(blame.nlines,
view->nlines - 2);
break;
}
- if (state->last_displayed_line +
- view->nlines - 2 <= blame.nlines)
- state->first_displayed_line +=
+ if (s->last_displayed_line + view->nlines - 2
+ <= blame.nlines)
+ s->first_displayed_line +=
view->nlines - 2;
else
- state->first_displayed_line =
+ s->first_displayed_line =
blame.nlines - (view->nlines - 3);
break;
case KEY_RESIZE:
err = view_resize(view);
if (err)
break;
- if (state->selected_line > view->nlines - 2) {
- state->selected_line = MIN(blame.nlines,
+ if (s->selected_line > view->nlines - 2) {
+ s->selected_line = MIN(blame.nlines,
view->nlines - 2);
}
break;
default:
break;
}
- if (pthread_mutex_unlock(&state->mutex) != 0)
+ if (pthread_mutex_unlock(&s->mutex) != 0)
err = got_error_from_errno();
if (err || thread_err)
break;
{
const struct got_error *err = NULL;
char *commit_id_str = NULL;
- struct tog_tree_view_state *state = &view->state.tree;
+ struct tog_tree_view_state *s = &view->state.tree;
- TAILQ_INIT(&state->parents);
+ TAILQ_INIT(&s->parents);
err = got_object_id_str(&commit_id_str, commit_id);
if (err != NULL)
goto done;
- if (asprintf(&state->tree_label, "commit: %s", commit_id_str) == -1) {
+ if (asprintf(&s->tree_label, "commit: %s", commit_id_str) == -1) {
err = got_error_from_errno();
goto done;
}
- state->root = state->tree = root;
- state->entries = got_object_tree_get_entries(root);
- state->first_displayed_entry = SIMPLEQ_FIRST(&state->entries->head);
- state->commit_id = commit_id;
- state->repo = repo;
+ s->root = s->tree = root;
+ s->entries = got_object_tree_get_entries(root);
+ s->first_displayed_entry = SIMPLEQ_FIRST(&s->entries->head);
+ s->commit_id = commit_id;
+ s->repo = repo;
done:
free(commit_id_str);
if (err)
- free(state->tree_label);
+ free(s->tree_label);
return err;
}
static void
close_tree_view(struct tog_view *view)
{
- struct tog_tree_view_state *state = &view->state.tree;
+ struct tog_tree_view_state *s = &view->state.tree;
- free(state->tree_label);
- while (!TAILQ_EMPTY(&state->parents)) {
+ free(s->tree_label);
+ while (!TAILQ_EMPTY(&s->parents)) {
struct tog_parent_tree *parent;
- parent = TAILQ_FIRST(&state->parents);
- TAILQ_REMOVE(&state->parents, parent, entry);
+ parent = TAILQ_FIRST(&s->parents);
+ TAILQ_REMOVE(&s->parents, parent, entry);
free(parent);
}
- if (state->tree != state->root)
- got_object_tree_close(state->tree);
+ if (s->tree != s->root)
+ got_object_tree_close(s->tree);
}
static const struct got_error *
show_tree_view(struct tog_view *view)
{
const struct got_error *err = NULL;
- struct tog_tree_view_state *state = &view->state.tree;
+ struct tog_tree_view_state *s = &view->state.tree;
int ch, done = 0;
int nentries;
while (!done) {
char *parent_path;
- state->entries = got_object_tree_get_entries(state->tree);
- nentries = state->entries->nentries;
- if (state->tree != state->root)
+ s->entries = got_object_tree_get_entries(s->tree);
+ nentries = s->entries->nentries;
+ if (s->tree != s->root)
nentries++; /* '..' directory */
- err = tree_entry_path(&parent_path, &state->parents, NULL);
+ err = tree_entry_path(&parent_path, &s->parents, NULL);
if (err)
goto done;
- err = draw_tree_entries(view, &state->first_displayed_entry,
- &state->last_displayed_entry, &state->selected_entry,
- &state->ndisplayed, state->tree_label, state->show_ids,
- parent_path, state->entries, state->selected,
- view->nlines, state->tree == state->root);
+ err = draw_tree_entries(view, &s->first_displayed_entry,
+ &s->last_displayed_entry, &s->selected_entry,
+ &s->ndisplayed, s->tree_label, s->show_ids, parent_path,
+ s->entries, s->selected, view->nlines, s->tree == s->root);
free(parent_path);
if (err)
break;
done = 1;
break;
case 'i':
- state->show_ids = !state->show_ids;
+ s->show_ids = !s->show_ids;
break;
case 'l':
- if (state->selected_entry) {
+ if (s->selected_entry) {
struct tog_view *log_view;
log_view = view_open(0, 0, 0, 0, view,
TOG_VIEW_LOG);
goto done;
}
err = log_tree_entry(log_view,
- state->selected_entry,
- &state->parents,
- state->commit_id, state->repo);
+ s->selected_entry, &s->parents,
+ s->commit_id, s->repo);
view_close(log_view);
view_show(view);
if (err)
break;
case 'k':
case KEY_UP:
- if (state->selected > 0)
- state->selected--;
- if (state->selected > 0)
+ if (s->selected > 0)
+ s->selected--;
+ if (s->selected > 0)
break;
- tree_scroll_up(&state->first_displayed_entry, 1,
- state->entries, state->tree == state->root);
+ tree_scroll_up(&s->first_displayed_entry, 1,
+ s->entries, s->tree == s->root);
break;
case KEY_PPAGE:
- if (SIMPLEQ_FIRST(&state->entries->head) ==
- state->first_displayed_entry) {
- if (state->tree != state->root)
- state->first_displayed_entry = NULL;
- state->selected = 0;
+ if (SIMPLEQ_FIRST(&s->entries->head) ==
+ s->first_displayed_entry) {
+ if (s->tree != s->root)
+ s->first_displayed_entry = NULL;
+ s->selected = 0;
break;
}
- tree_scroll_up(&state->first_displayed_entry,
- view->nlines, state->entries,
- state->tree == state->root);
+ tree_scroll_up(&s->first_displayed_entry,
+ view->nlines, s->entries,
+ s->tree == s->root);
break;
case 'j':
case KEY_DOWN:
- if (state->selected < state->ndisplayed - 1) {
- state->selected++;
+ if (s->selected < s->ndisplayed - 1) {
+ s->selected++;
break;
}
- tree_scroll_down(&state->first_displayed_entry, 1,
- state->last_displayed_entry, state->entries);
+ tree_scroll_down(&s->first_displayed_entry, 1,
+ s->last_displayed_entry, s->entries);
break;
case KEY_NPAGE:
- tree_scroll_down(&state->first_displayed_entry,
- view->nlines, state->last_displayed_entry,
- state->entries);
- if (SIMPLEQ_NEXT(state->last_displayed_entry, entry))
+ tree_scroll_down(&s->first_displayed_entry,
+ view->nlines, s->last_displayed_entry,
+ s->entries);
+ if (SIMPLEQ_NEXT(s->last_displayed_entry,
+ entry))
break;
/* can't scroll any further; move cursor down */
- if (state->selected < state->ndisplayed - 1)
- state->selected = state->ndisplayed - 1;
+ if (s->selected < s->ndisplayed - 1)
+ s->selected = s->ndisplayed - 1;
break;
case KEY_ENTER:
case '\r':
- if (state->selected_entry == NULL) {
+ if (s->selected_entry == NULL) {
struct tog_parent_tree *parent;
case KEY_BACKSPACE:
/* user selected '..' */
- if (state->tree == state->root)
+ if (s->tree == s->root)
break;
- parent = TAILQ_FIRST(&state->parents);
- TAILQ_REMOVE(&state->parents, parent, entry);
- got_object_tree_close(state->tree);
- state->tree = parent->tree;
- state->first_displayed_entry =
+ parent = TAILQ_FIRST(&s->parents);
+ TAILQ_REMOVE(&s->parents, parent,
+ entry);
+ got_object_tree_close(s->tree);
+ s->tree = parent->tree;
+ s->first_displayed_entry =
parent->first_displayed_entry;
- state->selected_entry = parent->selected_entry;
- state->selected = parent->selected;
+ s->selected_entry =
+ parent->selected_entry;
+ s->selected = parent->selected;
free(parent);
- } else if (S_ISDIR(state->selected_entry->mode)) {
+ } else if (S_ISDIR(s->selected_entry->mode)) {
struct tog_parent_tree *parent;
struct got_tree_object *child;
- err = got_object_open_as_tree(
- &child, state->repo, state->selected_entry->id);
+ err = got_object_open_as_tree(&child,
+ s->repo, s->selected_entry->id);
if (err)
goto done;
parent = calloc(1, sizeof(*parent));
err = got_error_from_errno();
goto done;
}
- parent->tree = state->tree;
+ parent->tree = s->tree;
parent->first_displayed_entry =
- state->first_displayed_entry;
- parent->selected_entry = state->selected_entry;
- parent->selected = state->selected;
- TAILQ_INSERT_HEAD(&state->parents, parent,
+ s->first_displayed_entry;
+ parent->selected_entry =
+ s->selected_entry;
+ parent->selected = s->selected;
+ TAILQ_INSERT_HEAD(&s->parents, parent,
entry);
- state->tree = child;
- state->selected = 0;
- state->first_displayed_entry = NULL;
- } else if (S_ISREG(state->selected_entry->mode)) {
+ s->tree = child;
+ s->selected = 0;
+ s->first_displayed_entry = NULL;
+ } else if (S_ISREG(s->selected_entry->mode)) {
err = blame_tree_entry(view,
- state->selected_entry, &state->parents,
- state->commit_id, state->repo);
+ s->selected_entry, &s->parents,
+ s->commit_id, s->repo);
if (err)
goto done;
}
err = view_resize(view);
if (err)
goto done;
- if (state->selected > view->nlines)
- state->selected = state->ndisplayed - 1;
+ if (s->selected > view->nlines)
+ s->selected = s->ndisplayed - 1;
break;
default:
break;