calc: Keep Arguments
6.4 Keep Arguments
==================
The ‘K’ (‘calc-keep-args’) command acts like a prefix for the following
command. It prevents that command from removing its arguments from the
stack. For example, after ‘2 <RET> 3 +’, the stack contains the sole
number 5, but after ‘2 <RET> 3 K +’, the stack contains the arguments
and the result: ‘2 3 5’.
With the exception of keyboard macros, this works for all commands
that take arguments off the stack. (To avoid potentially unpleasant
behavior, a ‘K’ prefix before a keyboard macro will be ignored. A ‘K’
prefix called _within_ the keyboard macro will still take effect.) As
another example, ‘K a s’ simplifies a formula, pushing the simplified
version of the formula onto the stack after the original formula (rather
than replacing the original formula). Note that you could get the same
effect by typing ‘<RET> a s’, copying the formula and then simplifying
the copy. One difference is that for a very large formula the time
taken to format the intermediate copy in ‘<RET> a s’ could be
noticeable; ‘K a s’ would avoid this extra work.
Even stack manipulation commands are affected. <TAB> works by
popping two values and pushing them back in the opposite order, so ‘2
<RET> 3 K <TAB>’ produces ‘2 3 3 2’.
A few Calc commands provide other ways of doing the same thing. For
example, ‘' sin($)’ replaces the number on the stack with its sine using
algebraic entry; to push the sine and keep the original argument you
could use either ‘' sin($1)’ or ‘K ' sin($)’. Algebraic Entry.
Also, the ‘s s’ command is effectively the same as ‘K s t’.
Storing Variables.
If you execute a command and then decide you really wanted to keep
the argument, you can press ‘M-<RET>’ (‘calc-last-args’). This command
pushes the last arguments that were popped by any command onto the
stack. Note that the order of things on the stack will be different
than with ‘K’: ‘2 <RET> 3 + M-<RET>’ leaves ‘5 2 3’ on the stack instead
of ‘2 3 5’. Undo.