The selection operation introduced earlier is actually just a special case of a more general select-and-operate operation, whose generality was pared from the keystroke encoding in order to reduce the complexity of the chords that must be struck. Select-And-Operate is parameterized in three dimensions. Through different combinations of parameters, a lot of useful operations can be achieved (e.g., CaretOnly; delete/move forward/backward one character, word, subword, line; MakePendingDelete; MakeNotPendingDelete). The operation is
"Here" means where the caret was before the operation was invoked. When the first argument is "from here to end of", the operation moves the caret to the end of the indicated range of characters. Similarly for "from here to begin of". Branch, node, word, character, and current selection are all as in Tioga. A "line" is a (possibly empty) sequence of characters between nodebreaks or newlines. The "subword" concept is meant to deal with our naming convention for compound names --- it picks out the component names. The selection will always be a point or range of characters, as far as Tioga is concerned (as opposed to, say, words, nodes or branches).
Some of the combinations are interpreted with some creativity, in order that this operation be more intuitive and useful. Here are some of the more creative interpretations (see if you can get by without reading them):
When the second argument is "current selection", the affected range of characters is always the current selection (regardless of whether you think the first argument says otherwise).
When the caret is between words, the interpretation of "for enclosing word" is somewhat open: does it mean the preceeding word or the following word? The actual interpretation depends on the rest of the selection (assuming it's more than a point selection): it means the following word if the selection includes the following one, and the preceeding word if the selection includes the preceeding one. Similarly for the other levels of selection.
For levels that cannot consist of empty sequences of characters (i.e., word, subword, and character), the strict interpretation of "from here to end of", when invoked with the caret a few nodebreaks away from the first character, means to include those nodebreaks. The actual interpretation does not include them. Similarly for "from here to begin of".
For levels that can consist of empty sequences of characters (i.e., branch, node, and line), the strict interpretation of "from here to end of", when invoked with the caret at the end of such a level, means the empty range of characters at the end. The actual interpretation is "from the beginning of the next to the end of the next". Similarly for "from here to begin of".
The strict interpretation of "line delete" would not delete the trailing carriage return, if any. The actual interpretation deletes it.
This operation is invoked by a sequence of three Tioga ATOMs. The first two give the first two parameters, and the last gives the final parameter and activates the operation. The ATOMs used are:
KbdBegin from here to begin of
KbdEnd from here to end of
KbdAll for enclosing
KbdBranch branch
KbdNode node
KbdLine line
KbdWord word
KbdSubWord subword
KbdChar character
KbdCurSel current selection
KbdToPoint caretOnly
KbdSelect select
KbdSelectPendingDelete select pending delete
KbdDelete delete