diff options
author | Christian Rishøj <christian@rishoj.net> | 2013-09-09 18:46:16 +0200 |
---|---|---|
committer | Christian Rishøj <christian@rishoj.net> | 2013-09-09 18:46:16 +0200 |
commit | cd1c2f74d3bcc9a1d3c5eaad007788e950e27c74 (patch) | |
tree | 3a97cce87848bcb2019f113d00de2560052d1e16 /reader.cpp | |
parent | a1020b3e6129ddeee8709a757f3275c19a81a0f5 (diff) |
add support for downcase-word, upcase-word and capitalise-word
Diffstat (limited to 'reader.cpp')
-rw-r--r-- | reader.cpp | 38 |
1 files changed, 37 insertions, 1 deletions
@@ -3790,7 +3790,43 @@ const wchar_t *reader_readline(void) } break; } - + + case R_UPCASE_WORD: + { + size_t pos = data->buff_pos; + move_word(MOVE_DIR_RIGHT, false, move_word_style_punctuation, false); + for (; pos < data->buff_pos; pos++) + data->command_line.at(pos) = towupper(data->command_line.at(pos)); + reader_repaint(); + break; + } + + case R_DOWNCASE_WORD: + { + size_t pos = data->buff_pos; + move_word(MOVE_DIR_RIGHT, false, move_word_style_punctuation, false); + for (; pos < data->buff_pos; pos++) + data->command_line.at(pos) = towlower(data->command_line.at(pos)); + reader_repaint(); + break; + } + + case R_CAPITALIZE_WORD: + { + size_t pos = data->buff_pos; + bool capitalized_first = false; + move_word(MOVE_DIR_RIGHT, false, move_word_style_punctuation, false); + for (; pos < data->buff_pos; pos++) { + if (iswalnum(data->command_line.at(pos)) && !capitalized_first) { + data->command_line.at(pos) = towupper(data->command_line.at(pos)); + capitalized_first = true; + } else + data->command_line.at(pos) = towlower(data->command_line.at(pos)); + } + reader_repaint(); + break; + } + /* Other, if a normal character, we add it to the command */ default: { |