Add M-? to apply ROT13
parent
ef916ddaff
commit
0b3d927e03
|
@ -293,6 +293,9 @@ Delete line after cursor.
|
||||||
.It Aq Sy Tab
|
.It Aq Sy Tab
|
||||||
Cycle through completions
|
Cycle through completions
|
||||||
for commands, nicks and channels.
|
for commands, nicks and channels.
|
||||||
|
.
|
||||||
|
.It Sy M-?
|
||||||
|
ROT13-encode line.
|
||||||
.El
|
.El
|
||||||
.
|
.
|
||||||
.Ss IRC Formatting
|
.Ss IRC Formatting
|
||||||
|
|
1
chat.h
1
chat.h
|
@ -162,6 +162,7 @@ enum Edit {
|
||||||
EditKillBackWord,
|
EditKillBackWord,
|
||||||
EditKillForeWord,
|
EditKillForeWord,
|
||||||
EditKillLine,
|
EditKillLine,
|
||||||
|
EditROT13,
|
||||||
EditComplete,
|
EditComplete,
|
||||||
EditEnter,
|
EditEnter,
|
||||||
};
|
};
|
||||||
|
|
11
edit.c
11
edit.c
|
@ -19,6 +19,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sysexits.h>
|
#include <sysexits.h>
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
|
#include <wctype.h>
|
||||||
|
|
||||||
#include "chat.h"
|
#include "chat.h"
|
||||||
|
|
||||||
|
@ -94,6 +95,14 @@ static void killForeWord(void) {
|
||||||
line.ptr = from;
|
line.ptr = from;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void rot13(void) {
|
||||||
|
for (wchar_t *ch = line.buf; ch != line.end; ++ch) {
|
||||||
|
if (!iswascii(*ch)) continue;
|
||||||
|
if (iswupper(*ch)) *ch = L'A' + (*ch - L'A' + 13) % 26;
|
||||||
|
if (iswlower(*ch)) *ch = L'a' + (*ch - L'a' + 13) % 26;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static char *prefix;
|
static char *prefix;
|
||||||
static void complete(struct Tag tag) {
|
static void complete(struct Tag tag) {
|
||||||
if (!line.tab) {
|
if (!line.tab) {
|
||||||
|
@ -175,6 +184,8 @@ void edit(struct Tag tag, enum Edit op, wchar_t ch) {
|
||||||
break; case EditKillForeWord: reject(); killForeWord();
|
break; case EditKillForeWord: reject(); killForeWord();
|
||||||
break; case EditKillLine: reject(); line.end = line.ptr;
|
break; case EditKillLine: reject(); line.end = line.ptr;
|
||||||
|
|
||||||
|
break; case EditROT13: accept(); rot13();
|
||||||
|
|
||||||
break; case EditComplete: complete(tag);
|
break; case EditComplete: complete(tag);
|
||||||
|
|
||||||
break; case EditEnter: accept(); enter(tag);
|
break; case EditEnter: accept(); enter(tag);
|
||||||
|
|
1
ui.c
1
ui.c
|
@ -472,6 +472,7 @@ static void keyChar(wchar_t ch) {
|
||||||
break; case L'f': edit(ui.view->tag, EditForeWord, 0);
|
break; case L'f': edit(ui.view->tag, EditForeWord, 0);
|
||||||
break; case L'\b': edit(ui.view->tag, EditKillBackWord, 0);
|
break; case L'\b': edit(ui.view->tag, EditKillBackWord, 0);
|
||||||
break; case L'd': edit(ui.view->tag, EditKillForeWord, 0);
|
break; case L'd': edit(ui.view->tag, EditKillForeWord, 0);
|
||||||
|
break; case L'?': edit(ui.view->tag, EditROT13, 0);
|
||||||
break; case L'm': uiLog(ui.view->tag, UICold, L"");
|
break; case L'm': uiLog(ui.view->tag, UICold, L"");
|
||||||
break; default: {
|
break; default: {
|
||||||
if (ch >= L'0' && ch <= L'9') uiViewNum(ch - L'0');
|
if (ch >= L'0' && ch <= L'9') uiViewNum(ch - L'0');
|
||||||
|
|
Loading…
Reference in New Issue