diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Functions/Zle/edit-command-line | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 7679d4ed8..38d64d458 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-07-13 Daniel Shahaf <d.s@daniel.shahaf.name> + + * 35769: Functions/Zle/edit-command-line: edit-command-line: + Go to the right byte offset + 2015-07-13 Oliver Kiddle <opk@zsh.org> * 35737: (tweaked c.f. Peter: 35759): Src/Zle/zle_utils.c, diff --git a/Functions/Zle/edit-command-line b/Functions/Zle/edit-command-line index 100af9601..2ad4825b7 100644 --- a/Functions/Zle/edit-command-line +++ b/Functions/Zle/edit-command-line @@ -8,7 +8,17 @@ () { exec </dev/tty - ${=${VISUAL:-${EDITOR:-vi}}} $1 + + # Open the editor, placing the cursor at the right place if we know how. + local editor=${${VISUAL:-${EDITOR:-vi}}} + integer byteoffset=$(( $#PREBUFFER + $#LBUFFER + 1 )) + case $editor in + (*vim*) ${=editor} -c "normal! ${byteoffset}go" -- $1;; + (*emacs*) ${=editor} $1 -eval "(goto-char ${byteoffset})";; + (*) ${=editor} $1;; + esac + + # Replace the buffer with the editor output. print -Rz - "$(<$1)" } =(<<<"$PREBUFFER$BUFFER") |