version 1.18, 2019/03/28 21:05:15 |
version 1.19, 2019/05/12 08:58:09 |
|
|
#define WINDOW_BUFFER_DEFAULT_FORMAT \ |
#define WINDOW_BUFFER_DEFAULT_FORMAT \ |
"#{buffer_size} bytes (#{t:buffer_created})" |
"#{buffer_size} bytes (#{t:buffer_created})" |
|
|
|
#define WINDOW_BUFFER_MENU \ |
|
"Paste,p,|" \ |
|
"Paste Tagged,P,|" \ |
|
"|" \ |
|
"Tag,t,|" \ |
|
"Tag All,C-t,|" \ |
|
"Tag None,T,|" \ |
|
"|" \ |
|
"Delete,d,|" \ |
|
"Delete Tagged,D,|" \ |
|
"|" \ |
|
"Cancel,q," |
|
|
const struct window_mode window_buffer_mode = { |
const struct window_mode window_buffer_mode = { |
.name = "buffer-mode", |
.name = "buffer-mode", |
.default_format = WINDOW_BUFFER_DEFAULT_FORMAT, |
.default_format = WINDOW_BUFFER_DEFAULT_FORMAT, |
|
|
}; |
}; |
|
|
struct window_buffer_modedata { |
struct window_buffer_modedata { |
|
struct window_pane *wp; |
struct cmd_find_state fs; |
struct cmd_find_state fs; |
|
|
struct mode_tree_data *data; |
struct mode_tree_data *data; |
char *command; |
char *command; |
char *format; |
char *format; |
|
|
return (memmem(bufdata, bufsize, ss, strlen(ss)) != NULL); |
return (memmem(bufdata, bufsize, ss, strlen(ss)) != NULL); |
} |
} |
|
|
|
static void |
|
window_buffer_menu(void *modedata, struct client *c, key_code key) |
|
{ |
|
struct window_buffer_modedata *data = modedata; |
|
struct window_pane *wp = data->wp; |
|
struct window_mode_entry *wme; |
|
|
|
wme = TAILQ_FIRST(&wp->modes); |
|
if (wme == NULL || wme->data != modedata) |
|
return; |
|
window_buffer_key(wme, c, NULL, NULL, key, NULL); |
|
} |
|
|
static struct screen * |
static struct screen * |
window_buffer_init(struct window_mode_entry *wme, struct cmd_find_state *fs, |
window_buffer_init(struct window_mode_entry *wme, struct cmd_find_state *fs, |
struct args *args) |
struct args *args) |
|
|
struct screen *s; |
struct screen *s; |
|
|
wme->data = data = xcalloc(1, sizeof *data); |
wme->data = data = xcalloc(1, sizeof *data); |
|
data->wp = wp; |
cmd_find_copy_state(&data->fs, fs); |
cmd_find_copy_state(&data->fs, fs); |
|
|
if (args == NULL || !args_has(args, 'F')) |
if (args == NULL || !args_has(args, 'F')) |
|
|
data->command = xstrdup(args->argv[0]); |
data->command = xstrdup(args->argv[0]); |
|
|
data->data = mode_tree_start(wp, args, window_buffer_build, |
data->data = mode_tree_start(wp, args, window_buffer_build, |
window_buffer_draw, window_buffer_search, data, |
window_buffer_draw, window_buffer_search, window_buffer_menu, data, |
window_buffer_sort_list, nitems(window_buffer_sort_list), &s); |
WINDOW_BUFFER_MENU, window_buffer_sort_list, |
|
nitems(window_buffer_sort_list), &s); |
mode_tree_zoom(data->data, args); |
mode_tree_zoom(data->data, args); |
|
|
mode_tree_build(data->data); |
mode_tree_build(data->data); |