calc: Changing Selections
11.1.2 Changing Selections
--------------------------
Once you have selected a sub-formula, you can expand it using the ‘j m’
(‘calc-select-more’) command. If ‘a + b’ is selected, pressing ‘j m’
repeatedly works as follows:
3 ... 3 ___ 3 ___
(a + b) . . . (a + b) + V c (a + b) + V c
1* ............... 1* ............... 1* ---------------
. . . . . . . . 2 x + 1
In the last example, the entire formula is selected. This is roughly
the same as having no selection at all, but because there are subtle
differences the ‘*’ character is still there on the line number.
With a numeric prefix argument N, ‘j m’ expands N times (or until the
entire formula is selected). Note that ‘j s’ with argument N is
equivalent to plain ‘j s’ followed by ‘j m’ with argument N. If ‘j m’
is used when there is no current selection, it is equivalent to ‘j s’.
Even though ‘j m’ does not explicitly use the location of the cursor
within the formula, it nevertheless uses the cursor to determine which
stack element to operate on. As usual, ‘j m’ when the cursor is not on
any stack element operates on the top stack element.
The ‘j l’ (‘calc-select-less’) command reduces the current selection
around the cursor position. That is, it selects the immediate
sub-formula of the current selection which contains the cursor, the
opposite of ‘j m’. If the cursor is not inside the current selection,
the command de-selects the formula.
The ‘j 1’ through ‘j 9’ (‘calc-select-part’) commands select the Nth
sub-formula of the current selection. They are like ‘j l’
(‘calc-select-less’) except they use counting rather than the cursor
position to decide which sub-formula to select. For example, if the
current selection is ‘a + b + c’ or ‘f(a, b, c)’ or ‘[a, b, c]’, then ‘j
1’ selects ‘a’, ‘j 2’ selects ‘b’, and ‘j 3’ selects ‘c’; in each of
these cases, ‘j 4’ through ‘j 9’ would be errors.
If there is no current selection, ‘j 1’ through ‘j 9’ select the Nth
top-level sub-formula. (In other words, they act as if the entire stack
entry were selected first.) To select the Nth sub-formula where N is
greater than nine, you must instead invoke ‘j 1’ with N as a numeric
prefix argument.
The ‘j n’ (‘calc-select-next’) and ‘j p’ (‘calc-select-previous’)
commands change the current selection to the next or previous
sub-formula at the same level. For example, if ‘b’ is selected in
‘2 + a*b*c + x’, then ‘j n’ selects ‘c’. Further ‘j n’ commands would
be in error because, even though there is something to the right of ‘c’
(namely, ‘x’), it is not at the same level; in this case, it is not a
term of the same product as ‘b’ and ‘c’. However, ‘j m’ (to select the
whole product ‘a*b*c’ as a term of the sum) followed by ‘j n’ would
successfully select the ‘x’.
Similarly, ‘j p’ moves the selection from the ‘b’ in this sample
formula to the ‘a’. Both commands accept numeric prefix arguments to
move several steps at a time.
It is interesting to compare Calc’s selection commands with the Emacs
Info system’s commands for navigating through hierarchically organized
documentation. Calc’s ‘j n’ command is completely analogous to Info’s
‘n’ command. Likewise, ‘j p’ maps to ‘p’, ‘j 2’ maps to ‘2’, and Info’s
‘u’ is like ‘j m’. (Note that ‘j u’ stands for ‘calc-unselect’, not
“up”.) The Info ‘m’ command is somewhat similar to Calc’s ‘j s’ and ‘j
l’; in each case, you can jump directly to a sub-component of the
hierarchy simply by pointing to it with the cursor.