about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBart Schaefer <barts@users.sourceforge.net>2011-06-01 15:30:20 +0000
committerBart Schaefer <barts@users.sourceforge.net>2011-06-01 15:30:20 +0000
commit0cc65dba531a792db26592a4e9c1efe5f9f667bd (patch)
tree1ad820c23975f5ce55662bd6c27caee46fdb750b
parentf1667d2c62ebd47b0e8bd48b2c64912b733066eb (diff)
downloadzsh-0cc65dba531a792db26592a4e9c1efe5f9f667bd.tar.gz
zsh-0cc65dba531a792db26592a4e9c1efe5f9f667bd.tar.xz
zsh-0cc65dba531a792db26592a4e9c1efe5f9f667bd.zip
users/16064: example widget for line motion inside multiline buffers
without navigating history
-rw-r--r--ChangeLog5
-rw-r--r--Functions/Zle/move-line-in-buffer16
2 files changed, 20 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index e938d66cd..eb64cd4cc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2011-06-01  Barton E. Schaefer  <schaefer@zsh.org>
 
+	* users/16064: Functions/Zle/move-line-in-buffer: example widget
+	for moving in multiline buffers without navigating history
+
 	* 29416 (plus typo fixes): Doc/Zsh/contrib.yo: Fix (mis-)uses of
 	var() in vcs_info documentation.
 
@@ -14909,5 +14912,5 @@
 
 *****************************************************
 * This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.5351 $
+* $Revision: 1.5352 $
 *****************************************************
diff --git a/Functions/Zle/move-line-in-buffer b/Functions/Zle/move-line-in-buffer
new file mode 100644
index 000000000..1a0efd9ca
--- /dev/null
+++ b/Functions/Zle/move-line-in-buffer
@@ -0,0 +1,16 @@
+#autoload
+
+# Line motions that do not leave the current history entry,
+# for editing in multi-line buffers.
+
+# To use:
+#  autoload -Uz move-line-in-buffer
+#  zle -N up-line-in-buffer move-line-in-buffer
+#  zle -N down-line-in-buffer move-line-in-buffer
+#
+# then bindkey as you prefer
+
+local hno=$HISTNO curs=$CURSOR
+zle .${WIDGET:s/in-buffer/or-history} "$@" &&
+    (( HISTNO != hno && (HISTNO=hno, CURSOR=curs) ))
+return 0