summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--OPS3
-rw-r--r--enter.c54
-rw-r--r--functions.h3
3 files changed, 60 insertions, 0 deletions
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" },