mirror of
https://github.com/tmux/tmux.git
synced 2024-12-24 01:58:46 +00:00
Add a copy mode key binding to copy to a named buffer. From J Raynor.
This commit is contained in:
parent
3dbacbb62b
commit
b1a06ef22e
@ -141,6 +141,7 @@ const struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
|
||||
{ MODEKEYCOPY_SEARCHREVERSE, "search-reverse" },
|
||||
{ MODEKEYCOPY_SEARCHUP, "search-backward" },
|
||||
{ MODEKEYCOPY_SELECTLINE, "select-line" },
|
||||
{ MODEKEYCOPY_STARTNAMEDBUFFER, "start-named-buffer" },
|
||||
{ MODEKEYCOPY_STARTNUMBERPREFIX, "start-number-prefix" },
|
||||
{ MODEKEYCOPY_STARTOFLINE, "start-of-line" },
|
||||
{ MODEKEYCOPY_STARTSELECTION, "begin-selection" },
|
||||
@ -257,6 +258,7 @@ struct mode_key_tree mode_key_tree_vi_choice;
|
||||
/* vi copy mode keys. */
|
||||
const struct mode_key_entry mode_key_vi_copy[] = {
|
||||
{ ' ', 0, MODEKEYCOPY_STARTSELECTION },
|
||||
{ '"', 0, MODEKEYCOPY_STARTNAMEDBUFFER },
|
||||
{ '$', 0, MODEKEYCOPY_ENDOFLINE },
|
||||
{ ',', 0, MODEKEYCOPY_JUMPREVERSE },
|
||||
{ ';', 0, MODEKEYCOPY_JUMPAGAIN },
|
||||
|
1
tmux.1
1
tmux.1
@ -849,6 +849,7 @@ The following keys are supported as appropriate for the mode:
|
||||
.It Sy "Function" Ta Sy "vi" Ta Sy "emacs"
|
||||
.It Li "Append selection" Ta "A" Ta ""
|
||||
.It Li "Back to indentation" Ta "^" Ta "M-m"
|
||||
.It Li "Copy to named buffer" Ta \&" Ta ""
|
||||
.It Li "Bottom of history" Ta "G" Ta "M-<"
|
||||
.It Li "Clear selection" Ta "Escape" Ta "C-g"
|
||||
.It Li "Copy selection" Ta "Enter" Ta "M-w"
|
||||
|
1
tmux.h
1
tmux.h
@ -583,6 +583,7 @@ enum mode_key_cmd {
|
||||
MODEKEYCOPY_SEARCHREVERSE,
|
||||
MODEKEYCOPY_SEARCHUP,
|
||||
MODEKEYCOPY_SELECTLINE,
|
||||
MODEKEYCOPY_STARTNAMEDBUFFER,
|
||||
MODEKEYCOPY_STARTNUMBERPREFIX,
|
||||
MODEKEYCOPY_STARTOFLINE,
|
||||
MODEKEYCOPY_STARTSELECTION,
|
||||
|
@ -61,8 +61,8 @@ void window_copy_copy_pipe(struct window_pane *, struct session *,
|
||||
void window_copy_copy_selection(struct window_pane *, const char *);
|
||||
void window_copy_append_selection(struct window_pane *, const char *);
|
||||
void window_copy_clear_selection(struct window_pane *);
|
||||
void window_copy_copy_line(
|
||||
struct window_pane *, char **, size_t *, u_int, u_int, u_int);
|
||||
void window_copy_copy_line(struct window_pane *, char **, size_t *, u_int,
|
||||
u_int, u_int);
|
||||
int window_copy_in_set(struct window_pane *, u_int, u_int, const char *);
|
||||
u_int window_copy_find_length(struct window_pane *, u_int);
|
||||
void window_copy_cursor_start_of_line(struct window_pane *);
|
||||
@ -95,6 +95,7 @@ const struct window_mode window_copy_mode = {
|
||||
|
||||
enum window_copy_input_type {
|
||||
WINDOW_COPY_OFF,
|
||||
WINDOW_COPY_NAMEDBUFFER,
|
||||
WINDOW_COPY_NUMERICPREFIX,
|
||||
WINDOW_COPY_SEARCHUP,
|
||||
WINDOW_COPY_SEARCHDOWN,
|
||||
@ -677,6 +678,7 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key)
|
||||
case WINDOW_COPY_JUMPBACK:
|
||||
case WINDOW_COPY_JUMPTOFORWARD:
|
||||
case WINDOW_COPY_JUMPTOBACK:
|
||||
case WINDOW_COPY_NAMEDBUFFER:
|
||||
case WINDOW_COPY_NUMERICPREFIX:
|
||||
break;
|
||||
case WINDOW_COPY_SEARCHUP:
|
||||
@ -712,6 +714,11 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key)
|
||||
data->inputprompt = "Goto Line";
|
||||
*data->inputstr = '\0';
|
||||
goto input_on;
|
||||
case MODEKEYCOPY_STARTNAMEDBUFFER:
|
||||
data->inputtype = WINDOW_COPY_NAMEDBUFFER;
|
||||
data->inputprompt = "Buffer";
|
||||
*data->inputstr = '\0';
|
||||
goto input_on;
|
||||
case MODEKEYCOPY_STARTNUMBERPREFIX:
|
||||
key &= KEYC_MASK_KEY;
|
||||
if (key >= '0' && key <= '9') {
|
||||
@ -815,6 +822,11 @@ window_copy_key_input(struct window_pane *wp, int key)
|
||||
data->searchtype = data->inputtype;
|
||||
data->searchstr = xstrdup(data->inputstr);
|
||||
break;
|
||||
case WINDOW_COPY_NAMEDBUFFER:
|
||||
window_copy_copy_selection(wp, data->inputstr);
|
||||
*data->inputstr = '\0';
|
||||
window_pane_reset_mode(wp);
|
||||
return (0);
|
||||
case WINDOW_COPY_GOTOLINE:
|
||||
window_copy_goto_line(wp, data->inputstr);
|
||||
*data->inputstr = '\0';
|
||||
|
Loading…
Reference in New Issue
Block a user