diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2007-04-19 14:16:22 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2007-04-19 14:16:22 +0000 |
commit | c6dfb2999d51be6e71176358a2e14360fe6e6ee6 (patch) | |
tree | e781f3f174a3a2c7978d3b2ad89589e8439aec3e /Src/Zle/zle_misc.c | |
parent | 0d101890d0faeaefa863099042e3510f5021fbc3 (diff) | |
download | zsh-c6dfb2999d51be6e71176358a2e14360fe6e6ee6.tar.gz zsh-c6dfb2999d51be6e71176358a2e14360fe6e6ee6.tar.xz zsh-c6dfb2999d51be6e71176358a2e14360fe6e6ee6.zip |
users/11419: zle copy-region-as-kill <string>
adds text to the kill ring
Diffstat (limited to 'Src/Zle/zle_misc.c')
-rw-r--r-- | Src/Zle/zle_misc.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/Src/Zle/zle_misc.c b/Src/Zle/zle_misc.c index 30fa0cc5b..48739e531 100644 --- a/Src/Zle/zle_misc.c +++ b/Src/Zle/zle_misc.c @@ -337,14 +337,21 @@ killregion(UNUSED(char **args)) /**/ int -copyregionaskill(UNUSED(char **args)) +copyregionaskill(char **args) { - if (mark > zlell) - mark = zlell; - if (mark > zlecs) - cut(zlecs, mark - zlecs, 0); - else - cut(mark, zlecs - mark, 1); + if (*args) { + int len; + ZLE_STRING_T line = stringaszleline(*args, 0, &len, NULL, NULL); + cuttext(line, len, -1); + free(line); + } else { + if (mark > zlell) + mark = zlell; + if (mark > zlecs) + cut(zlecs, mark - zlecs, 0); + else + cut(mark, zlecs - mark, 1); + } return 0; } |