mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Sync OpenBSD patchset 407:
Add mode keys to move the cursor to the top, middle and bottom of the screen. H/M/L in vi mode and M-R/M-r in emacs (bottom of screen not bound in emacs).
This commit is contained in:
		
							
								
								
									
										10
									
								
								mode-key.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								mode-key.c
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: mode-key.c,v 1.33 2009-10-07 17:13:59 tcunha Exp $ */
 | 
					/* $Id: mode-key.c,v 1.34 2009-10-15 01:52:47 tcunha Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -77,6 +77,7 @@ struct mode_key_cmdstr mode_key_cmdstr_choice[] = {
 | 
				
			|||||||
/* Copy keys command strings. */
 | 
					/* Copy keys command strings. */
 | 
				
			||||||
struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
 | 
					struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
 | 
				
			||||||
	{ MODEKEYCOPY_BACKTOINDENTATION, "back-to-indentation" },
 | 
						{ MODEKEYCOPY_BACKTOINDENTATION, "back-to-indentation" },
 | 
				
			||||||
 | 
						{ MODEKEYCOPY_BOTTOMLINE, "bottom-line" },
 | 
				
			||||||
	{ MODEKEYCOPY_CANCEL, "cancel" },
 | 
						{ MODEKEYCOPY_CANCEL, "cancel" },
 | 
				
			||||||
	{ MODEKEYCOPY_CLEARSELECTION, "clear-selection" },
 | 
						{ MODEKEYCOPY_CLEARSELECTION, "clear-selection" },
 | 
				
			||||||
	{ MODEKEYCOPY_COPYSELECTION, "copy-selection" },
 | 
						{ MODEKEYCOPY_COPYSELECTION, "copy-selection" },
 | 
				
			||||||
@@ -84,6 +85,7 @@ struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
 | 
				
			|||||||
	{ MODEKEYCOPY_ENDOFLINE, "end-of-line" },
 | 
						{ MODEKEYCOPY_ENDOFLINE, "end-of-line" },
 | 
				
			||||||
	{ MODEKEYCOPY_GOTOLINE, "goto-line" },
 | 
						{ MODEKEYCOPY_GOTOLINE, "goto-line" },
 | 
				
			||||||
	{ MODEKEYCOPY_LEFT, "cursor-left" },
 | 
						{ MODEKEYCOPY_LEFT, "cursor-left" },
 | 
				
			||||||
 | 
						{ MODEKEYCOPY_MIDDLELINE, "middle-line" },
 | 
				
			||||||
	{ MODEKEYCOPY_NEXTPAGE, "page-down" },
 | 
						{ MODEKEYCOPY_NEXTPAGE, "page-down" },
 | 
				
			||||||
	{ MODEKEYCOPY_NEXTWORD, "next-word" },
 | 
						{ MODEKEYCOPY_NEXTWORD, "next-word" },
 | 
				
			||||||
	{ MODEKEYCOPY_PREVIOUSPAGE, "page-up" },
 | 
						{ MODEKEYCOPY_PREVIOUSPAGE, "page-up" },
 | 
				
			||||||
@@ -96,6 +98,7 @@ struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
 | 
				
			|||||||
	{ MODEKEYCOPY_SEARCHUP, "search-backward" },
 | 
						{ MODEKEYCOPY_SEARCHUP, "search-backward" },
 | 
				
			||||||
	{ MODEKEYCOPY_STARTOFLINE, "start-of-line" },
 | 
						{ MODEKEYCOPY_STARTOFLINE, "start-of-line" },
 | 
				
			||||||
	{ MODEKEYCOPY_STARTSELECTION, "begin-selection" },
 | 
						{ MODEKEYCOPY_STARTSELECTION, "begin-selection" },
 | 
				
			||||||
 | 
						{ MODEKEYCOPY_TOPLINE, "top-line" },
 | 
				
			||||||
	{ MODEKEYCOPY_UP, "cursor-up" },
 | 
						{ MODEKEYCOPY_UP, "cursor-up" },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	{ 0, NULL }
 | 
						{ 0, NULL }
 | 
				
			||||||
@@ -161,8 +164,11 @@ const struct mode_key_entry mode_key_vi_copy[] = {
 | 
				
			|||||||
	{ '0',			0, MODEKEYCOPY_STARTOFLINE },
 | 
						{ '0',			0, MODEKEYCOPY_STARTOFLINE },
 | 
				
			||||||
	{ ':',			0, MODEKEYCOPY_GOTOLINE },
 | 
						{ ':',			0, MODEKEYCOPY_GOTOLINE },
 | 
				
			||||||
	{ '?',			0, MODEKEYCOPY_SEARCHUP },
 | 
						{ '?',			0, MODEKEYCOPY_SEARCHUP },
 | 
				
			||||||
 | 
						{ 'H',			0, MODEKEYCOPY_TOPLINE },
 | 
				
			||||||
	{ 'J',			0, MODEKEYCOPY_SCROLLDOWN },
 | 
						{ 'J',			0, MODEKEYCOPY_SCROLLDOWN },
 | 
				
			||||||
	{ 'K',			0, MODEKEYCOPY_SCROLLUP },
 | 
						{ 'K',			0, MODEKEYCOPY_SCROLLUP },
 | 
				
			||||||
 | 
						{ 'L',			0, MODEKEYCOPY_BOTTOMLINE },
 | 
				
			||||||
 | 
						{ 'M',			0, MODEKEYCOPY_MIDDLELINE },
 | 
				
			||||||
	{ '\002' /* C-b */,	0, MODEKEYCOPY_PREVIOUSPAGE },
 | 
						{ '\002' /* C-b */,	0, MODEKEYCOPY_PREVIOUSPAGE },
 | 
				
			||||||
	{ '\003' /* C-c */,	0, MODEKEYCOPY_CANCEL },
 | 
						{ '\003' /* C-c */,	0, MODEKEYCOPY_CANCEL },
 | 
				
			||||||
	{ '\004' /* C-d */,	0, MODEKEYCOPY_HALFPAGEDOWN },
 | 
						{ '\004' /* C-d */,	0, MODEKEYCOPY_HALFPAGEDOWN },
 | 
				
			||||||
@@ -266,6 +272,8 @@ const struct mode_key_entry mode_key_emacs_copy[] = {
 | 
				
			|||||||
	{ 'm' | KEYC_ESCAPE,	0, MODEKEYCOPY_BACKTOINDENTATION },
 | 
						{ 'm' | KEYC_ESCAPE,	0, MODEKEYCOPY_BACKTOINDENTATION },
 | 
				
			||||||
	{ 'n',			0, MODEKEYCOPY_SEARCHAGAIN },
 | 
						{ 'n',			0, MODEKEYCOPY_SEARCHAGAIN },
 | 
				
			||||||
	{ 'q',			0, MODEKEYCOPY_CANCEL },
 | 
						{ 'q',			0, MODEKEYCOPY_CANCEL },
 | 
				
			||||||
 | 
						{ 'r' | KEYC_ESCAPE,	0, MODEKEYCOPY_MIDDLELINE },
 | 
				
			||||||
 | 
						{ 'R' | KEYC_ESCAPE,	0, MODEKEYCOPY_TOPLINE },
 | 
				
			||||||
	{ 'v' | KEYC_ESCAPE,	0, MODEKEYCOPY_PREVIOUSPAGE },
 | 
						{ 'v' | KEYC_ESCAPE,	0, MODEKEYCOPY_PREVIOUSPAGE },
 | 
				
			||||||
	{ 'w' | KEYC_ESCAPE,	0, MODEKEYCOPY_COPYSELECTION },
 | 
						{ 'w' | KEYC_ESCAPE,	0, MODEKEYCOPY_COPYSELECTION },
 | 
				
			||||||
	{ KEYC_DOWN | KEYC_CTRL,0, MODEKEYCOPY_SCROLLDOWN },
 | 
						{ KEYC_DOWN | KEYC_CTRL,0, MODEKEYCOPY_SCROLLDOWN },
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										7
									
								
								tmux.1
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								tmux.1
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
.\" $Id: tmux.1,v 1.191 2009-10-15 01:31:38 tcunha Exp $
 | 
					.\" $Id: tmux.1,v 1.192 2009-10-15 01:52:47 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: October 12 2009 $
 | 
					.Dd $Mdocdate: October 13 2009 $
 | 
				
			||||||
.Dt TMUX 1
 | 
					.Dt TMUX 1
 | 
				
			||||||
.Os
 | 
					.Os
 | 
				
			||||||
.Sh NAME
 | 
					.Sh NAME
 | 
				
			||||||
@@ -538,6 +538,9 @@ The following keys are supported as appropriate for the mode:
 | 
				
			|||||||
.It Li "Start of line" Ta "0" Ta "C-a"
 | 
					.It Li "Start of line" Ta "0" Ta "C-a"
 | 
				
			||||||
.It Li "Start selection" Ta "Space" Ta "C-Space"
 | 
					.It Li "Start selection" Ta "Space" Ta "C-Space"
 | 
				
			||||||
.It Li "Transpose chars" Ta "" Ta "C-t"
 | 
					.It Li "Transpose chars" Ta "" Ta "C-t"
 | 
				
			||||||
 | 
					.It Li "Cursor to top line" Ta "H" Ta "M-R"
 | 
				
			||||||
 | 
					.It Li "Cursor to middle line" Ta "M" Ta "M-r"
 | 
				
			||||||
 | 
					.It Li "Cursor to bottom line" Ta "L" Ta ""
 | 
				
			||||||
.El
 | 
					.El
 | 
				
			||||||
.Pp
 | 
					.Pp
 | 
				
			||||||
These key bindings are defined in a set of named tables:
 | 
					These key bindings are defined in a set of named tables:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								tmux.h
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: tmux.h,v 1.475 2009-10-15 01:41:14 tcunha Exp $ */
 | 
					/* $Id: tmux.h,v 1.476 2009-10-15 01:52:47 tcunha Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -395,6 +395,7 @@ enum mode_key_cmd {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Copy keys. */
 | 
						/* Copy keys. */
 | 
				
			||||||
	MODEKEYCOPY_BACKTOINDENTATION,
 | 
						MODEKEYCOPY_BACKTOINDENTATION,
 | 
				
			||||||
 | 
						MODEKEYCOPY_BOTTOMLINE,
 | 
				
			||||||
	MODEKEYCOPY_CANCEL,
 | 
						MODEKEYCOPY_CANCEL,
 | 
				
			||||||
	MODEKEYCOPY_CLEARSELECTION,
 | 
						MODEKEYCOPY_CLEARSELECTION,
 | 
				
			||||||
	MODEKEYCOPY_COPYSELECTION,
 | 
						MODEKEYCOPY_COPYSELECTION,
 | 
				
			||||||
@@ -404,6 +405,7 @@ enum mode_key_cmd {
 | 
				
			|||||||
	MODEKEYCOPY_HALFPAGEDOWN,
 | 
						MODEKEYCOPY_HALFPAGEDOWN,
 | 
				
			||||||
	MODEKEYCOPY_HALFPAGEUP,
 | 
						MODEKEYCOPY_HALFPAGEUP,
 | 
				
			||||||
	MODEKEYCOPY_LEFT,
 | 
						MODEKEYCOPY_LEFT,
 | 
				
			||||||
 | 
						MODEKEYCOPY_MIDDLELINE,
 | 
				
			||||||
	MODEKEYCOPY_NEXTPAGE,
 | 
						MODEKEYCOPY_NEXTPAGE,
 | 
				
			||||||
	MODEKEYCOPY_NEXTWORD,
 | 
						MODEKEYCOPY_NEXTWORD,
 | 
				
			||||||
	MODEKEYCOPY_PREVIOUSPAGE,
 | 
						MODEKEYCOPY_PREVIOUSPAGE,
 | 
				
			||||||
@@ -416,6 +418,7 @@ enum mode_key_cmd {
 | 
				
			|||||||
	MODEKEYCOPY_SEARCHUP,
 | 
						MODEKEYCOPY_SEARCHUP,
 | 
				
			||||||
	MODEKEYCOPY_STARTOFLINE,
 | 
						MODEKEYCOPY_STARTOFLINE,
 | 
				
			||||||
	MODEKEYCOPY_STARTSELECTION,
 | 
						MODEKEYCOPY_STARTSELECTION,
 | 
				
			||||||
 | 
						MODEKEYCOPY_TOPLINE,
 | 
				
			||||||
	MODEKEYCOPY_UP,
 | 
						MODEKEYCOPY_UP,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: window-copy.c,v 1.88 2009-10-12 00:18:19 tcunha Exp $ */
 | 
					/* $Id: window-copy.c,v 1.89 2009-10-15 01:52:47 tcunha Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -278,6 +278,24 @@ window_copy_key(struct window_pane *wp, struct client *c, int key)
 | 
				
			|||||||
		window_copy_update_selection(wp);
 | 
							window_copy_update_selection(wp);
 | 
				
			||||||
		window_copy_redraw_screen(wp);
 | 
							window_copy_redraw_screen(wp);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
 | 
						case MODEKEYCOPY_TOPLINE:
 | 
				
			||||||
 | 
							data->cx = 0;
 | 
				
			||||||
 | 
							data->cy = 0;
 | 
				
			||||||
 | 
							window_copy_update_selection(wp);
 | 
				
			||||||
 | 
							window_copy_redraw_screen(wp);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case MODEKEYCOPY_MIDDLELINE:
 | 
				
			||||||
 | 
							data->cx = 0;
 | 
				
			||||||
 | 
							data->cy = (screen_size_y(s) - 1) / 2;
 | 
				
			||||||
 | 
							window_copy_update_selection(wp);
 | 
				
			||||||
 | 
							window_copy_redraw_screen(wp);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case MODEKEYCOPY_BOTTOMLINE:
 | 
				
			||||||
 | 
							data->cx = 0;
 | 
				
			||||||
 | 
							data->cy = screen_size_y(s) - 1;
 | 
				
			||||||
 | 
							window_copy_update_selection(wp);
 | 
				
			||||||
 | 
							window_copy_redraw_screen(wp);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
	case MODEKEYCOPY_STARTSELECTION:
 | 
						case MODEKEYCOPY_STARTSELECTION:
 | 
				
			||||||
 		window_copy_start_selection(wp);
 | 
					 		window_copy_start_selection(wp);
 | 
				
			||||||
		window_copy_redraw_screen(wp);
 | 
							window_copy_redraw_screen(wp);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user