Sync OpenBSD patchset 644:

Add "N" key to search the opposite way from the last search (reverse of "n"),
from Micah Cowan.
pull/1/head
Tiago Cunha 2010-02-18 12:35:16 +00:00
parent 736764b560
commit 66c38d8c5d
4 changed files with 22 additions and 8 deletions

View File

@ -1,4 +1,4 @@
/* $Id: mode-key.c,v 1.43 2010-02-08 18:13:17 tcunha Exp $ */ /* $Id: mode-key.c,v 1.44 2010-02-18 12:35:16 tcunha Exp $ */
/* /*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@ -104,6 +104,7 @@ struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
{ MODEKEYCOPY_SCROLLUP, "scroll-up" }, { MODEKEYCOPY_SCROLLUP, "scroll-up" },
{ MODEKEYCOPY_SEARCHAGAIN, "search-again" }, { MODEKEYCOPY_SEARCHAGAIN, "search-again" },
{ MODEKEYCOPY_SEARCHDOWN, "search-forward" }, { MODEKEYCOPY_SEARCHDOWN, "search-forward" },
{ MODEKEYCOPY_SEARCHREVERSE, "search-reverse" },
{ 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" },
@ -187,6 +188,7 @@ const struct mode_key_entry mode_key_vi_copy[] = {
{ 'K', 0, MODEKEYCOPY_SCROLLUP }, { 'K', 0, MODEKEYCOPY_SCROLLUP },
{ 'L', 0, MODEKEYCOPY_BOTTOMLINE }, { 'L', 0, MODEKEYCOPY_BOTTOMLINE },
{ 'M', 0, MODEKEYCOPY_MIDDLELINE }, { 'M', 0, MODEKEYCOPY_MIDDLELINE },
{ 'N', 0, MODEKEYCOPY_SEARCHREVERSE },
{ 'W', 0, MODEKEYCOPY_NEXTSPACE }, { 'W', 0, MODEKEYCOPY_NEXTSPACE },
{ '\002' /* C-b */, 0, MODEKEYCOPY_PREVIOUSPAGE }, { '\002' /* C-b */, 0, MODEKEYCOPY_PREVIOUSPAGE },
{ '\003' /* C-c */, 0, MODEKEYCOPY_CANCEL }, { '\003' /* C-c */, 0, MODEKEYCOPY_CANCEL },
@ -296,6 +298,7 @@ const struct mode_key_entry mode_key_emacs_copy[] = {
{ '\026' /* C-v */, 0, MODEKEYCOPY_NEXTPAGE }, { '\026' /* C-v */, 0, MODEKEYCOPY_NEXTPAGE },
{ '\027' /* C-w */, 0, MODEKEYCOPY_COPYSELECTION }, { '\027' /* C-w */, 0, MODEKEYCOPY_COPYSELECTION },
{ '\033' /* Escape */, 0, MODEKEYCOPY_CANCEL }, { '\033' /* Escape */, 0, MODEKEYCOPY_CANCEL },
{ 'N', 0, MODEKEYCOPY_SEARCHREVERSE },
{ 'b' | KEYC_ESCAPE, 0, MODEKEYCOPY_PREVIOUSWORD }, { 'b' | KEYC_ESCAPE, 0, MODEKEYCOPY_PREVIOUSWORD },
{ 'f' | KEYC_ESCAPE, 0, MODEKEYCOPY_NEXTWORDEND }, { 'f' | KEYC_ESCAPE, 0, MODEKEYCOPY_NEXTWORDEND },
{ 'g', 0, MODEKEYCOPY_GOTOLINE }, { 'g', 0, MODEKEYCOPY_GOTOLINE },

5
tmux.1
View File

@ -1,4 +1,4 @@
.\" $Id: tmux.1,v 1.233 2010-02-18 12:33:52 tcunha Exp $ .\" $Id: tmux.1,v 1.234 2010-02-18 12:35:16 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: February 10 2010 $ .Dd $Mdocdate: February 11 2010 $
.Dt TMUX 1 .Dt TMUX 1
.Os .Os
.Sh NAME .Sh NAME
@ -572,6 +572,7 @@ The following keys are supported as appropriate for the mode:
.It Li "Scroll down" Ta "C-Down or C-e" Ta "C-Down" .It Li "Scroll down" Ta "C-Down or C-e" Ta "C-Down"
.It Li "Scroll up" Ta "C-Up or C-y" Ta "C-Up" .It Li "Scroll up" Ta "C-Up or C-y" Ta "C-Up"
.It Li "Search again" Ta "n" Ta "n" .It Li "Search again" Ta "n" Ta "n"
.It Li "Search again in reverse" Ta "N" Ta "N"
.It Li "Search backward" Ta "?" Ta "C-r" .It Li "Search backward" Ta "?" Ta "C-r"
.It Li "Search forward" Ta "/" Ta "C-s" .It Li "Search forward" Ta "/" Ta "C-s"
.It Li "Start of line" Ta "0" Ta "C-a" .It Li "Start of line" Ta "0" Ta "C-a"

3
tmux.h
View File

@ -1,4 +1,4 @@
/* $Id: tmux.h,v 1.544 2010-02-08 18:29:32 tcunha Exp $ */ /* $Id: tmux.h,v 1.545 2010-02-18 12:35:16 tcunha Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -474,6 +474,7 @@ enum mode_key_cmd {
MODEKEYCOPY_SCROLLUP, MODEKEYCOPY_SCROLLUP,
MODEKEYCOPY_SEARCHAGAIN, MODEKEYCOPY_SEARCHAGAIN,
MODEKEYCOPY_SEARCHDOWN, MODEKEYCOPY_SEARCHDOWN,
MODEKEYCOPY_SEARCHREVERSE,
MODEKEYCOPY_SEARCHUP, MODEKEYCOPY_SEARCHUP,
MODEKEYCOPY_STARTOFLINE, MODEKEYCOPY_STARTOFLINE,
MODEKEYCOPY_STARTSELECTION, MODEKEYCOPY_STARTSELECTION,

View File

@ -1,4 +1,4 @@
/* $Id: window-copy.c,v 1.101 2010-02-08 18:13:17 tcunha Exp $ */ /* $Id: window-copy.c,v 1.102 2010-02-18 12:35:16 tcunha Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -224,6 +224,7 @@ window_copy_key(struct window_pane *wp, struct client *c, int key)
struct screen *s = &data->screen; struct screen *s = &data->screen;
u_int n; u_int n;
int keys; int keys;
enum mode_key_cmd cmd;
if (data->inputtype != WINDOW_COPY_OFF) { if (data->inputtype != WINDOW_COPY_OFF) {
if (window_copy_key_input(wp, key) != 0) if (window_copy_key_input(wp, key) != 0)
@ -231,7 +232,8 @@ window_copy_key(struct window_pane *wp, struct client *c, int key)
return; return;
} }
switch (mode_key_lookup(&data->mdata, key)) { cmd = mode_key_lookup(&data->mdata, key);
switch (cmd) {
case MODEKEYCOPY_CANCEL: case MODEKEYCOPY_CANCEL:
window_pane_reset_mode(wp); window_pane_reset_mode(wp);
break; break;
@ -367,15 +369,22 @@ window_copy_key(struct window_pane *wp, struct client *c, int key)
data->inputprompt = "Search Down"; data->inputprompt = "Search Down";
goto input_on; goto input_on;
case MODEKEYCOPY_SEARCHAGAIN: case MODEKEYCOPY_SEARCHAGAIN:
case MODEKEYCOPY_SEARCHREVERSE:
switch (data->searchtype) { switch (data->searchtype) {
case WINDOW_COPY_OFF: case WINDOW_COPY_OFF:
case WINDOW_COPY_GOTOLINE: case WINDOW_COPY_GOTOLINE:
break; break;
case WINDOW_COPY_SEARCHUP: case WINDOW_COPY_SEARCHUP:
window_copy_search_up(wp, data->searchstr); if (cmd == MODEKEYCOPY_SEARCHAGAIN)
window_copy_search_up(wp, data->searchstr);
else
window_copy_search_down(wp, data->searchstr);
break; break;
case WINDOW_COPY_SEARCHDOWN: case WINDOW_COPY_SEARCHDOWN:
window_copy_search_down(wp, data->searchstr); if (cmd == MODEKEYCOPY_SEARCHAGAIN)
window_copy_search_down(wp, data->searchstr);
else
window_copy_search_up(wp, data->searchstr);
break; break;
} }
break; break;