Sync OpenBSD patchset 307:

Add a transpose-chars command in edit mode (C-t in emacs mode only). From Kalle
Olavi Niemitalo.
This commit is contained in:
Tiago Cunha 2009-09-02 22:45:17 +00:00
parent afd0bd7cb0
commit 3b944fe7e8
4 changed files with 22 additions and 6 deletions

View File

@ -1,4 +1,4 @@
/* $Id: mode-key.c,v 1.27 2009-08-20 11:22:47 tcunha Exp $ */ /* $Id: mode-key.c,v 1.28 2009-09-02 22:45:17 tcunha Exp $ */
/* /*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@ -57,6 +57,7 @@ struct mode_key_cmdstr mode_key_cmdstr_edit[] = {
{ MODEKEYEDIT_STARTOFLINE, "start-of-line" }, { MODEKEYEDIT_STARTOFLINE, "start-of-line" },
{ MODEKEYEDIT_SWITCHMODE, "switch-mode" }, { MODEKEYEDIT_SWITCHMODE, "switch-mode" },
{ MODEKEYEDIT_SWITCHMODEAPPEND, "switch-mode-append" }, { MODEKEYEDIT_SWITCHMODEAPPEND, "switch-mode-append" },
{ MODEKEYEDIT_TRANSPOSECHARS, "transpose-chars" },
{ 0, NULL } { 0, NULL }
}; };
@ -200,6 +201,7 @@ const struct mode_key_entry mode_key_emacs_edit[] = {
{ '\013' /* C-k */, 0, MODEKEYEDIT_DELETETOENDOFLINE }, { '\013' /* C-k */, 0, MODEKEYEDIT_DELETETOENDOFLINE },
{ '\016' /* C-n */, 0, MODEKEYEDIT_HISTORYDOWN }, { '\016' /* C-n */, 0, MODEKEYEDIT_HISTORYDOWN },
{ '\020' /* C-p */, 0, MODEKEYEDIT_HISTORYUP }, { '\020' /* C-p */, 0, MODEKEYEDIT_HISTORYUP },
{ '\024' /* C-t */, 0, MODEKEYEDIT_TRANSPOSECHARS },
{ '\025' /* C-u */, 0, MODEKEYEDIT_DELETELINE }, { '\025' /* C-u */, 0, MODEKEYEDIT_DELETELINE },
{ '\031' /* C-y */, 0, MODEKEYEDIT_PASTE }, { '\031' /* C-y */, 0, MODEKEYEDIT_PASTE },
{ '\033' /* Escape */, 0, MODEKEYEDIT_CANCEL }, { '\033' /* Escape */, 0, MODEKEYEDIT_CANCEL },

View File

@ -1,4 +1,4 @@
/* $Id: status.c,v 1.114 2009-09-02 00:55:49 tcunha Exp $ */ /* $Id: status.c,v 1.115 2009-09-02 22:45:17 tcunha Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -763,7 +763,7 @@ void
status_prompt_key(struct client *c, int key) status_prompt_key(struct client *c, int key)
{ {
struct paste_buffer *pb; struct paste_buffer *pb;
char *s, *first, *last, word[64]; char *s, *first, *last, word[64], swapc;
size_t size, n, off, idx; size_t size, n, off, idx;
size = strlen(c->prompt_buffer); size = strlen(c->prompt_buffer);
@ -933,6 +933,18 @@ status_prompt_key(struct client *c, int key)
c->flags |= CLIENT_STATUS; c->flags |= CLIENT_STATUS;
break; break;
case MODEKEYEDIT_TRANSPOSECHARS:
idx = c->prompt_index;
if (idx < size)
idx++;
if (idx >= 2) {
swapc = c->prompt_buffer[idx - 2];
c->prompt_buffer[idx - 2] = c->prompt_buffer[idx - 1];
c->prompt_buffer[idx - 1] = swapc;
c->prompt_index = idx;
c->flags |= CLIENT_STATUS;
}
break;
case MODEKEYEDIT_ENTER: case MODEKEYEDIT_ENTER:
if (*c->prompt_buffer != '\0') if (*c->prompt_buffer != '\0')
status_prompt_add_history(c); status_prompt_add_history(c);

5
tmux.1
View File

@ -1,4 +1,4 @@
.\" $Id: tmux.1,v 1.161 2009-09-02 01:02:44 tcunha Exp $ .\" $Id: tmux.1,v 1.162 2009-09-02 22:45:17 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: September 1 2009 $ .Dd $Mdocdate: September 2 2009 $
.Dt TMUX 1 .Dt TMUX 1
.Os .Os
.Sh NAME .Sh NAME
@ -497,6 +497,7 @@ The following keys are supported as appropriate for the mode:
.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"
.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"
.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:

3
tmux.h
View File

@ -1,4 +1,4 @@
/* $Id: tmux.h,v 1.433 2009-09-02 20:16:29 nicm Exp $ */ /* $Id: tmux.h,v 1.434 2009-09-02 22:45:17 tcunha Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -377,6 +377,7 @@ enum mode_key_cmd {
MODEKEYEDIT_STARTOFLINE, MODEKEYEDIT_STARTOFLINE,
MODEKEYEDIT_SWITCHMODE, MODEKEYEDIT_SWITCHMODE,
MODEKEYEDIT_SWITCHMODEAPPEND, MODEKEYEDIT_SWITCHMODEAPPEND,
MODEKEYEDIT_TRANSPOSECHARS,
/* Menu (choice) keys. */ /* Menu (choice) keys. */
MODEKEYCHOICE_CANCEL, MODEKEYCHOICE_CANCEL,