From 0a1771d4dc71fc9f197ff6d5a5d13ead116f5956 Mon Sep 17 00:00:00 2001 From: Thomas Roessler Date: Fri, 27 Oct 2000 10:35:04 +0000 Subject: [PATCH] Add capitalize-word, upcase-word, downcase-word functions to the editor. Bindings follow the Emacs conventions (i.e., M-c, M-u, M-d). --- OPS | 3 +++ enter.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ functions.h | 3 +++ 3 files changed, 60 insertions(+) diff --git a/OPS b/OPS index 046ef608..b4d39a5b 100644 --- a/OPS +++ b/OPS @@ -73,6 +73,9 @@ OP_EDITOR_KILL_LINE "delete all chars on the line" OP_EDITOR_KILL_WORD "delete the word in front of the cursor" OP_EDITOR_QUOTE_CHAR "quote the next typed key" OP_EDITOR_TRANSPOSE_CHARS "transpose character under cursor with previous" +OP_EDITOR_CAPITALIZE_WORD "capitalize the word" +OP_EDITOR_DOWNCASE_WORD "convert the word to lower case" +OP_EDITOR_UPCASE_WORD "convert the word to upper case" OP_ENTER_COMMAND "enter a muttrc command" OP_ENTER_MASK "enter a file mask" OP_EXIT "exit this menu" diff --git a/enter.c b/enter.c index a9307223..6795ddc7 100644 --- a/enter.c +++ b/enter.c @@ -331,6 +331,60 @@ int _mutt_enter_string (unsigned char *buf, size_t buflen, int y, int x, } break; + case OP_EDITOR_CAPITALIZE_WORD: + if (curpos == lastchar) + { + BEEP (); + break; + } + while (curpos < lastchar && ISSPACE (buf[curpos])) + curpos++; + if (curpos < lastchar) + { + buf[curpos] = toupper (buf[curpos]); + curpos++; + } + if (curpos == lastchar || ISSPACE (buf[curpos])) + { + if (!pass) + { + if (curpos >= begin + width) + begin = curpos - width / 2; + else + move (y, x + curpos - begin); + redraw = M_REDRAW_LINE; + } + break; + } + + /* fall through */ + case OP_EDITOR_UPCASE_WORD: + case OP_EDITOR_DOWNCASE_WORD: + if (curpos == lastchar) + { + BEEP(); + break; + } + while (curpos < lastchar && ISSPACE (buf[curpos])) + curpos++; + while (curpos < lastchar && !ISSPACE(buf[curpos])) + { + if (ch == OP_EDITOR_UPCASE_WORD) + buf[curpos] = toupper (buf[curpos]); + else /* DOWNCASE_WORD, CAPITALIZE_WORD */ + buf[curpos] = tolower (buf[curpos]); + curpos++; + } + if (!pass) + { + if (curpos >= begin + width) + begin = curpos - width / 2; + else + move (y, x + curpos - begin); + redraw = M_REDRAW_LINE; + } + break; + case OP_EDITOR_DELETE_CHAR: if (curpos != lastchar) { diff --git a/functions.h b/functions.h index 04993ae5..3d57238b 100644 --- a/functions.h +++ b/functions.h @@ -351,6 +351,9 @@ struct binding_t OpEditor[] = { { "bol", OP_EDITOR_BOL, "\001" }, { "backward-char", OP_EDITOR_BACKWARD_CHAR, "\002" }, { "backward-word", OP_EDITOR_BACKWARD_WORD, "\033b"}, + { "capitalize-word", OP_EDITOR_CAPITALIZE_WORD, "\033c"}, + { "downcase-word", OP_EDITOR_DOWNCASE_WORD, "\033l"}, + { "upcase-word", OP_EDITOR_UPCASE_WORD, "\033u"}, { "delete-char", OP_EDITOR_DELETE_CHAR, "\004" }, { "eol", OP_EDITOR_EOL, "\005" }, { "forward-char", OP_EDITOR_FORWARD_CHAR, "\006" }, -- 2.40.0