Skip to content

Commit

Permalink
vis: specify window in mark related API
Browse files Browse the repository at this point in the history
This should also fix coverity issue 157024.
  • Loading branch information
martanne committed Jul 17, 2017
1 parent 75c7c61 commit 5a20ed9
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 16 deletions.
18 changes: 12 additions & 6 deletions main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1658,29 +1658,32 @@ static void selections_set(Vis *vis, View *view, Array *sel) {
}

static const char *selections_save(Vis *vis, const char *keys, const Arg *arg) {
Win *win = vis_window(vis);
View *view = vis_view(vis);
enum VisMark mark = vis_mark_used(vis);
Array sel = view_selections_get_all(view);
vis_mark_set(vis, mark, &sel);
vis_mark_set(win, mark, &sel);
array_release(&sel);
vis_cancel(vis);
return keys;
}

static const char *selections_restore(Vis *vis, const char *keys, const Arg *arg) {
Win *win = vis_window(vis);
View *view = vis_view(vis);
enum VisMark mark = vis_mark_used(vis);
Array sel = vis_mark_get(vis, mark);
Array sel = vis_mark_get(win, mark);
selections_set(vis, view, &sel);
array_release(&sel);
vis_cancel(vis);
return keys;
}

static const char *selections_union(Vis *vis, const char *keys, const Arg *arg) {
Win *win = vis_window(vis);
View *view = vis_view(vis);
enum VisMark mark = vis_mark_used(vis);
Array a = vis_mark_get(vis, mark);
Array a = vis_mark_get(win, mark);
Array b = view_selections_get_all(view);
Array sel;
array_init_from(&sel, &a);
Expand Down Expand Up @@ -1744,9 +1747,10 @@ static void intersect(Array *ret, Array *a, Array *b) {
}

static const char *selections_intersect(Vis *vis, const char *keys, const Arg *arg) {
Win *win = vis_window(vis);
View *view = vis_view(vis);
enum VisMark mark = vis_mark_used(vis);
Array a = vis_mark_get(vis, mark);
Array a = vis_mark_get(win, mark);
Array b = view_selections_get_all(view);
Array sel;
array_init_from(&sel, &a);
Expand Down Expand Up @@ -1796,10 +1800,11 @@ static const char *selections_complement(Vis *vis, const char *keys, const Arg *

static const char *selections_minus(Vis *vis, const char *keys, const Arg *arg) {
Text *txt = vis_text(vis);
Win *win = vis_window(vis);
View *view = vis_view(vis);
enum VisMark mark = vis_mark_used(vis);
Array a = view_selections_get_all(view);
Array b = vis_mark_get(vis, mark);
Array b = vis_mark_get(win, mark);
Array sel;
array_init_from(&sel, &a);
Array b_complement;
Expand Down Expand Up @@ -1871,10 +1876,11 @@ static Filerange combine_rightmost(const Filerange *r1, const Filerange *r2) {
}

static const char *selections_combine(Vis *vis, const char *keys, const Arg *arg) {
Win *win = vis_window(vis);
View *view = vis_view(vis);
enum VisMark mark = vis_mark_used(vis);
Array a = view_selections_get_all(view);
Array b = vis_mark_get(vis, mark);
Array b = vis_mark_get(win, mark);
Array sel;
array_init_from(&sel, &a);

Expand Down
4 changes: 2 additions & 2 deletions vis-lua.c
Original file line number Diff line number Diff line change
Expand Up @@ -2300,7 +2300,7 @@ static int file_marks_index(lua_State *L) {
if (mark == VIS_MARK_INVALID)
return 1;

Array arr = vis_mark_get(vis, mark);
Array arr = vis_mark_get(vis->win, mark);
for (size_t i = 0, len = array_length(&arr); i < len; i++) {
Filerange *range = array_get(&arr, i);
lua_pushunsigned(L, i+1);
Expand Down Expand Up @@ -2336,7 +2336,7 @@ static int file_marks_newindex(lua_State *L) {
}
}

vis_mark_set(vis, mark, &ranges);
vis_mark_set(vis->win, mark, &ranges);
array_release(&ranges);
return 0;
}
Expand Down
12 changes: 7 additions & 5 deletions vis-marks.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@ void mark_release(Array *arr) {
}

static Array *mark_from(Vis *vis, enum VisMark id) {
if (id == VIS_MARK_SELECTION && vis->win)
if (!vis->win)
return NULL;
if (id == VIS_MARK_SELECTION)
return &vis->win->saved_selections;
File *file = vis->win->file;
if (id < LENGTH(file->marks))
Expand Down Expand Up @@ -83,8 +85,8 @@ static Array mark_get(Win *win, Array *mark) {
return sel;
}

Array vis_mark_get(Vis *vis, enum VisMark id) {
return mark_get(vis->win, mark_from(vis, id));
Array vis_mark_get(Win *win, enum VisMark id) {
return mark_get(win, mark_from(win->vis, id));
}

static void mark_set(Win *win, Array *mark, Array *sel) {
Expand All @@ -100,8 +102,8 @@ static void mark_set(Win *win, Array *mark, Array *sel) {
}
}

void vis_mark_set(Vis *vis, enum VisMark id, Array *sel) {
mark_set(vis->win, mark_from(vis, id), sel);
void vis_mark_set(Win *win, enum VisMark id, Array *sel) {
mark_set(win, mark_from(win->vis, id), sel);
}

void marklist_init(MarkList *list, size_t max) {
Expand Down
2 changes: 1 addition & 1 deletion vis.c
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ void window_selection_save(Win *win) {
Vis *vis = win->vis;
View *view = win->view;
Array sel = view_selections_get_all(view);
vis_mark_set(vis, VIS_MARK_SELECTION, &sel);
vis_mark_set(win, VIS_MARK_SELECTION, &sel);
array_release(&sel);
vis_jumplist_save(vis);
}
Expand Down
4 changes: 2 additions & 2 deletions vis.h
Original file line number Diff line number Diff line change
Expand Up @@ -695,7 +695,7 @@ enum VisMark vis_mark_used(Vis*);
* @param id The register to use.
* @param sel The array containing the file ranges.
*/
void vis_mark_set(Vis*, enum VisMark id, Array *sel);
void vis_mark_set(Win*, enum VisMark id, Array *sel);
/**
* Get an array of file ranges stored in the mark.
*
Expand All @@ -704,7 +704,7 @@ void vis_mark_set(Vis*, enum VisMark id, Array *sel);
* ``array_release``.
* @endrst
*/
Array vis_mark_get(Vis*, enum VisMark id);
Array vis_mark_get(Win*, enum VisMark id);
/**
* Normalize an Array of Fileranges.
*
Expand Down

0 comments on commit 5a20ed9

Please sign in to comment.