10.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.