Sync OpenBSD patchset 913:

Add three new copy-mode commands - select-line, copy-line,
copy-end-of-line. From Dave Disser and Randy Stauner a while back.
pull/1/head
Tiago Cunha 2011-05-18 20:35:36 +00:00
parent 3cb428bc7e
commit 69e0aabcdf
4 changed files with 34 additions and 6 deletions

View File

@ -1,4 +1,4 @@
/* $Id: mode-key.c,v 1.48 2011-04-06 22:23:30 nicm Exp $ */ /* $Id: mode-key.c,v 1.49 2011-05-18 20:35:36 tcunha Exp $ */
/* /*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@ -82,6 +82,8 @@ const struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
{ MODEKEYCOPY_BOTTOMLINE, "bottom-line" }, { MODEKEYCOPY_BOTTOMLINE, "bottom-line" },
{ MODEKEYCOPY_CANCEL, "cancel" }, { MODEKEYCOPY_CANCEL, "cancel" },
{ MODEKEYCOPY_CLEARSELECTION, "clear-selection" }, { MODEKEYCOPY_CLEARSELECTION, "clear-selection" },
{ MODEKEYCOPY_COPYLINE, "copy-line" },
{ MODEKEYCOPY_COPYENDOFLINE, "copy-end-of-line" },
{ MODEKEYCOPY_COPYSELECTION, "copy-selection" }, { MODEKEYCOPY_COPYSELECTION, "copy-selection" },
{ MODEKEYCOPY_DOWN, "cursor-down" }, { MODEKEYCOPY_DOWN, "cursor-down" },
{ MODEKEYCOPY_ENDOFLINE, "end-of-line" }, { MODEKEYCOPY_ENDOFLINE, "end-of-line" },
@ -110,6 +112,7 @@ const struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
{ MODEKEYCOPY_SEARCHDOWN, "search-forward" }, { MODEKEYCOPY_SEARCHDOWN, "search-forward" },
{ MODEKEYCOPY_SEARCHREVERSE, "search-reverse" }, { MODEKEYCOPY_SEARCHREVERSE, "search-reverse" },
{ MODEKEYCOPY_SEARCHUP, "search-backward" }, { MODEKEYCOPY_SEARCHUP, "search-backward" },
{ MODEKEYCOPY_SELECTLINE, "select-line" },
{ MODEKEYCOPY_STARTNUMBERPREFIX, "start-number-prefix" }, { MODEKEYCOPY_STARTNUMBERPREFIX, "start-number-prefix" },
{ MODEKEYCOPY_STARTOFLINE, "start-of-line" }, { MODEKEYCOPY_STARTOFLINE, "start-of-line" },
{ MODEKEYCOPY_STARTSELECTION, "begin-selection" }, { MODEKEYCOPY_STARTSELECTION, "begin-selection" },
@ -198,6 +201,7 @@ const struct mode_key_entry mode_key_vi_copy[] = {
{ ':', 0, MODEKEYCOPY_GOTOLINE }, { ':', 0, MODEKEYCOPY_GOTOLINE },
{ '?', 0, MODEKEYCOPY_SEARCHUP }, { '?', 0, MODEKEYCOPY_SEARCHUP },
{ 'B', 0, MODEKEYCOPY_PREVIOUSSPACE }, { 'B', 0, MODEKEYCOPY_PREVIOUSSPACE },
{ 'D', 0, MODEKEYCOPY_COPYENDOFLINE },
{ 'E', 0, MODEKEYCOPY_NEXTSPACEEND }, { 'E', 0, MODEKEYCOPY_NEXTSPACEEND },
{ 'F', 0, MODEKEYCOPY_JUMPBACK }, { 'F', 0, MODEKEYCOPY_JUMPBACK },
{ 'G', 0, MODEKEYCOPY_HISTORYBOTTOM }, { 'G', 0, MODEKEYCOPY_HISTORYBOTTOM },
@ -323,6 +327,7 @@ const struct mode_key_entry mode_key_emacs_copy[] = {
{ '\005' /* C-e */, 0, MODEKEYCOPY_ENDOFLINE }, { '\005' /* C-e */, 0, MODEKEYCOPY_ENDOFLINE },
{ '\006' /* C-f */, 0, MODEKEYCOPY_RIGHT }, { '\006' /* C-f */, 0, MODEKEYCOPY_RIGHT },
{ '\007' /* C-g */, 0, MODEKEYCOPY_CLEARSELECTION }, { '\007' /* C-g */, 0, MODEKEYCOPY_CLEARSELECTION },
{ '\013' /* C-k */, 0, MODEKEYCOPY_COPYENDOFLINE },
{ '\016' /* C-n */, 0, MODEKEYCOPY_DOWN }, { '\016' /* C-n */, 0, MODEKEYCOPY_DOWN },
{ '\020' /* C-p */, 0, MODEKEYCOPY_UP }, { '\020' /* C-p */, 0, MODEKEYCOPY_UP },
{ '\022' /* C-r */, 0, MODEKEYCOPY_SEARCHUP }, { '\022' /* C-r */, 0, MODEKEYCOPY_SEARCHUP },

6
tmux.1
View File

@ -1,4 +1,4 @@
.\" $Id: tmux.1,v 1.312 2011-05-18 20:30:14 tcunha Exp $ .\" $Id: tmux.1,v 1.313 2011-05-18 20:35:36 tcunha Exp $
.\" .\"
.\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> .\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
.\" .\"
@ -14,7 +14,7 @@
.\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
.\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\" .\"
.Dd $Mdocdate: May 8 2011 $ .Dd $Mdocdate: May 18 2011 $
.Dt TMUX 1 .Dt TMUX 1
.Os .Os
.Sh NAME .Sh NAME
@ -770,7 +770,7 @@ The following keys are supported as appropriate for the mode:
.It Li "Cursor to top line" Ta "H" Ta "M-R" .It Li "Cursor to top line" Ta "H" Ta "M-R"
.It Li "Cursor up" Ta "k" Ta "Up" .It Li "Cursor up" Ta "k" Ta "Up"
.It Li "Delete entire line" Ta "d" Ta "C-u" .It Li "Delete entire line" Ta "d" Ta "C-u"
.It Li "Delete to end of line" Ta "D" Ta "C-k" .It Li "Delete/Copy to end of line" Ta "D" Ta "C-k"
.It Li "End of line" Ta "$" Ta "C-e" .It Li "End of line" Ta "$" Ta "C-e"
.It Li "Go to line" Ta ":" Ta "g" .It Li "Go to line" Ta ":" Ta "g"
.It Li "Half page down" Ta "C-d" Ta "M-Down" .It Li "Half page down" Ta "C-d" Ta "M-Down"

5
tmux.h
View File

@ -1,4 +1,4 @@
/* $Id: tmux.h,v 1.623 2011-05-18 20:30:14 tcunha Exp $ */ /* $Id: tmux.h,v 1.624 2011-05-18 20:35:36 tcunha Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -457,6 +457,8 @@ enum mode_key_cmd {
MODEKEYCOPY_BOTTOMLINE, MODEKEYCOPY_BOTTOMLINE,
MODEKEYCOPY_CANCEL, MODEKEYCOPY_CANCEL,
MODEKEYCOPY_CLEARSELECTION, MODEKEYCOPY_CLEARSELECTION,
MODEKEYCOPY_COPYLINE,
MODEKEYCOPY_COPYENDOFLINE,
MODEKEYCOPY_COPYSELECTION, MODEKEYCOPY_COPYSELECTION,
MODEKEYCOPY_DOWN, MODEKEYCOPY_DOWN,
MODEKEYCOPY_ENDOFLINE, MODEKEYCOPY_ENDOFLINE,
@ -487,6 +489,7 @@ enum mode_key_cmd {
MODEKEYCOPY_SEARCHDOWN, MODEKEYCOPY_SEARCHDOWN,
MODEKEYCOPY_SEARCHREVERSE, MODEKEYCOPY_SEARCHREVERSE,
MODEKEYCOPY_SEARCHUP, MODEKEYCOPY_SEARCHUP,
MODEKEYCOPY_SELECTLINE,
MODEKEYCOPY_STARTNUMBERPREFIX, MODEKEYCOPY_STARTNUMBERPREFIX,
MODEKEYCOPY_STARTOFLINE, MODEKEYCOPY_STARTOFLINE,
MODEKEYCOPY_STARTSELECTION, MODEKEYCOPY_STARTSELECTION,

View File

@ -1,4 +1,4 @@
/* $Id: window-copy.c,v 1.131 2011-05-18 20:33:24 tcunha Exp $ */ /* $Id: window-copy.c,v 1.132 2011-05-18 20:35:36 tcunha Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -500,6 +500,26 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key)
window_copy_start_selection(wp); window_copy_start_selection(wp);
window_copy_redraw_screen(wp); window_copy_redraw_screen(wp);
break; break;
case MODEKEYCOPY_COPYLINE:
case MODEKEYCOPY_SELECTLINE:
window_copy_cursor_start_of_line(wp);
/* FALLTHROUGH */
case MODEKEYCOPY_COPYENDOFLINE:
window_copy_start_selection(wp);
for (; np > 1; np--)
window_copy_cursor_down(wp, 0);
window_copy_cursor_end_of_line(wp);
window_copy_redraw_screen(wp);
/* If a copy command then copy the selection and exit. */
if (sess != NULL &&
(cmd == MODEKEYCOPY_COPYLINE ||
cmd == MODEKEYCOPY_COPYENDOFLINE)) {
window_copy_copy_selection(wp);
window_pane_reset_mode(wp);
return;
}
break;
case MODEKEYCOPY_CLEARSELECTION: case MODEKEYCOPY_CLEARSELECTION:
window_copy_clear_selection(wp); window_copy_clear_selection(wp);
window_copy_redraw_screen(wp); window_copy_redraw_screen(wp);