aboutsummaryrefslogtreecommitdiff
path: root/tmux.h
diff options
context:
space:
mode:
authornicm <nicm>2020-12-22 09:22:14 +0000
committernicm <nicm>2020-12-22 09:22:14 +0000
commitc43f2dce1b0ca64b43f7614d4da52bc9f2c195fe (patch)
treeba91a24908f134aaebe9b9c14ad720c12eec825d /tmux.h
parent8bd29a30bff4e9d50765e2168a7aad11e163ccde (diff)
downloadrtmux-c43f2dce1b0ca64b43f7614d4da52bc9f2c195fe.tar.gz
rtmux-c43f2dce1b0ca64b43f7614d4da52bc9f2c195fe.tar.bz2
rtmux-c43f2dce1b0ca64b43f7614d4da52bc9f2c195fe.zip
Break cursor movement in grid into a common set of functions that can
handle line wrapping and so on in one place and use them for the obvious copy mode commands. From Anindya Mukherjee.
Diffstat (limited to 'tmux.h')
-rw-r--r--tmux.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/tmux.h b/tmux.h
index 986eed00..0defff34 100644
--- a/tmux.h
+++ b/tmux.h
@@ -726,6 +726,13 @@ struct grid {
struct grid_line *linedata;
};
+/* Virtual cursor in a grid. */
+struct grid_reader {
+ struct grid *gd;
+ u_int cx;
+ u_int cy;
+};
+
/* Style alignment. */
enum style_align {
STYLE_ALIGN_DEFAULT,
@@ -2548,6 +2555,22 @@ void grid_wrap_position(struct grid *, u_int, u_int, u_int *, u_int *);
void grid_unwrap_position(struct grid *, u_int *, u_int *, u_int, u_int);
u_int grid_line_length(struct grid *, u_int);
+/* grid-reader.c */
+void grid_reader_start(struct grid_reader *, struct grid *, u_int, u_int);
+void grid_reader_get_cursor(struct grid_reader *, u_int *, u_int *);
+u_int grid_reader_line_length(struct grid_reader *);
+int grid_reader_in_set(struct grid_reader *, const char *);
+void grid_reader_cursor_right(struct grid_reader *, int, int);
+void grid_reader_cursor_left(struct grid_reader *);
+void grid_reader_cursor_down(struct grid_reader *);
+void grid_reader_cursor_up(struct grid_reader *);
+void grid_reader_cursor_start_of_line(struct grid_reader *, int);
+void grid_reader_cursor_end_of_line(struct grid_reader *, int, int);
+void grid_reader_cursor_next_word(struct grid_reader *, const char *);
+void grid_reader_cursor_next_word_end(struct grid_reader *, const char *);
+void grid_reader_cursor_previous_word(struct grid_reader *, const char *,
+ int);
+
/* grid-view.c */
void grid_view_get_cell(struct grid *, u_int, u_int, struct grid_cell *);
void grid_view_set_cell(struct grid *, u_int, u_int,