summaryrefslogtreecommitdiff
path: root/Functions/Zle/history-search-end
diff options
context:
space:
mode:
Diffstat (limited to 'Functions/Zle/history-search-end')
-rw-r--r--Functions/Zle/history-search-end28
1 files changed, 28 insertions, 0 deletions
diff --git a/Functions/Zle/history-search-end b/Functions/Zle/history-search-end
new file mode 100644
index 000000000..24e7a0a87
--- /dev/null
+++ b/Functions/Zle/history-search-end
@@ -0,0 +1,28 @@
+# function history-search-end {
+#
+# This implements functions like history-beginning-search-{back,for}ward,
+# but takes the cursor to the end of the line after moving in the
+# history, like history-search-{back,for}ward. To use them:
+# zle -N history-beginning-search-backward-end history-search-end
+# zle -N history-beginning-search-forward-end history-search-end
+# bindkey '...' history-beginning-search-backward-end
+# bindkey '...' history-beginning-search-forward-end
+
+integer ocursor=$CURSOR
+
+if [[ $LASTWIDGET = history-beginning-search-*-end ]]; then
+ # Last widget called set $hbs_pos.
+ CURSOR=$hbs_pos
+else
+ hbs_pos=$CURSOR
+fi
+
+if zle .${WIDGET%-end}; then
+ # success, go to end of line
+ zle .end-of-line
+else
+ # failure, restore position
+ CURSOR=$ocursor
+ return 1
+fi
+# }