about summary refs log tree commit diff
path: root/Functions
diff options
context:
space:
mode:
Diffstat (limited to 'Functions')
-rw-r--r--Functions/Zle/replace-string23
1 files changed, 23 insertions, 0 deletions
diff --git a/Functions/Zle/replace-string b/Functions/Zle/replace-string
new file mode 100644
index 000000000..31a7567db
--- /dev/null
+++ b/Functions/Zle/replace-string
@@ -0,0 +1,23 @@
+emulate -L zsh
+setopt extendedglob
+
+autoload -U read-from-minibuffer replace-string-again
+
+local p1="Replace: " p2="   with: "
+# Saving curwidget is necessary to avoid the widget name being overwritten.
+local REPLY previous curwidget=$WIDGET
+
+if (( ${+NUMERIC} )); then
+  (( $NUMERIC > 0 )) && previous=1
+else
+  zstyle -t ":zle:$WIDGET" edit-previous && previous=1
+fi
+
+read-from-minibuffer $p1 ${previous:+$_replace_string_src} || return 1
+_replace_string_src=$REPLY
+
+read-from-minibuffer "$p1$_replace_string_src$p2" \
+  ${previous:+$_replace_string_rep} || return 1
+_replace_string_rep=$REPLY
+
+replace-string-again $curwidget