diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | Doc/Zsh/contrib.yo | 7 | ||||
-rw-r--r-- | Functions/Misc/zcalc | 12 |
3 files changed, 23 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 06751df8b..4a56f1503 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-03-15 Peter Stephenson <p.w.stephenson@ntlworld.com> + + * 31154: Doc/Zsh/contrib.yo, Functions/Misc/zcalc: make zcalc + understand continuation lines using backslash. + 2013-03-14 Peter Stephenson <p.w.stephenson@ntlworld.com> * 31151: Pavol Juhas: complete (C etc) tags better @@ -603,5 +608,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.5821 $ +* $Revision: 1.5822 $ ***************************************************** diff --git a/Doc/Zsh/contrib.yo b/Doc/Zsh/contrib.yo index 227914105..f13aa79cf 100644 --- a/Doc/Zsh/contrib.yo +++ b/Doc/Zsh/contrib.yo @@ -3144,7 +3144,12 @@ line preceded by `tt(4> )' is available as tt($4). The last value calculated is available as tt(ans). Full command line editing, including the history of previous calculations, is available; the history is saved in the file tt(~/.zcalc_history). To exit, enter a blank line or type `tt(:q)' -on its own (`tt(q)' is allowed for historical compatibility). +on its own (`tt(q)' is allowed for historical compatibility). A +line ending with a single backslash is treated in the same fashion +as it is in command line editing: the backslash is removed, the +function prompts for more input (the prompt is preceded by `tt(...)' +to indicate this), and the lines are combined into one to get the final +result. If arguments are given to tt(zcalc) on start up, they are used to prime the first few positional parameters. A visual indication of this is given when diff --git a/Functions/Misc/zcalc b/Functions/Misc/zcalc index 3d44f20db..d78c35ed2 100644 --- a/Functions/Misc/zcalc +++ b/Functions/Misc/zcalc @@ -155,7 +155,17 @@ for (( num = 1; num <= $#; num++ )); do done psvar[1]=$num -while vared -cehp "${ZCALCPROMPT}" line; do +local prev_line cont_prompt +while vared -cehp "${cont_prompt}${ZCALCPROMPT}" line; do + if [[ $line = (|*[^\\])('\\')#'\' ]]; then + prev_line+=$line[1,-2] + cont_prompt="..." + line= + continue + fi + line="$prev_line$line" + prev_line= + cont_prompt= [[ -z $line ]] && break # special cases # Set default base if `[#16]' or `[##16]' etc. on its own. |