diff options
| author | C. McEnroe | 2020-02-09 04:20:07 -0500 | 
|---|---|---|
| committer | C. McEnroe | 2020-02-09 04:20:07 -0500 | 
| commit | b08c2d03efa08bd319a0665d12bef34df08ab283 (patch) | |
| tree | b880a35e71127ad3165159df2b53888b2273fc6e | |
| parent | d7c96fc81b71b77b30511d6526fe3acaa84c39ee (diff) | |
Add M-b and M-f
| -rw-r--r-- | catgirl.1 | 4 | ||||
| -rw-r--r-- | chat.h | 2 | ||||
| -rw-r--r-- | edit.c | 8 | ||||
| -rw-r--r-- | ui.c | 4 | 
4 files changed, 18 insertions, 0 deletions
@@ -211,6 +211,10 @@ Move right.  Delete to end of line.  .It Ic C-u  Delete to beginning of line. +.It Ic M-b +Move to previous word. +.It Ic M-f +Move to next word.  .El  .  .Ss Window Keys @@ -149,6 +149,8 @@ enum Edit {  	EditTail,  	EditPrev,  	EditNext, +	EditPrevWord, +	EditNextWord,  	EditKillPrev,  	EditKillNext,  	EditDeletePrev, @@ -137,6 +137,14 @@ void edit(size_t id, enum Edit op, wchar_t ch) {  		break; case EditTail: pos = len;  		break; case EditPrev: if (pos) pos--;  		break; case EditNext: if (pos < len) pos++; +		break; case EditPrevWord: { +			if (pos) pos--; +			while (pos && buf[pos - 1] != L' ') pos--; +		} +		break; case EditNextWord: { +			if (pos < len) pos++; +			while (pos < len && buf[pos] != L' ') pos++; +		}  		break; case EditDeletePrev: if (pos) delete(--pos, 1);  		break; case EditDeleteNext: delete(pos, 1); @@ -192,6 +192,8 @@ static void errExit(void) {  	X(KeyMeta7, "\0337") \  	X(KeyMeta8, "\0338") \  	X(KeyMeta9, "\0339") \ +	X(KeyMetaB, "\033b") \ +	X(KeyMetaF, "\033f") \  	X(KeyMetaM, "\33m") \  	X(KeyFocusIn, "\33[I") \  	X(KeyFocusOut, "\33[O") \ @@ -622,6 +624,8 @@ static void keyCode(int code) {  		break; case KeyPasteOn:; // TODO  		break; case KeyPasteOff:; // TODO +		break; case KeyMetaB: edit(id, EditPrevWord, 0); +		break; case KeyMetaF: edit(id, EditNextWord, 0);  		break; case KeyMetaM: waddch(windows.active->pad, '\n');  		break; case KEY_BACKSPACE: edit(id, EditDeletePrev, 0);  | 
