Navigation with the Structural SelectionThe structural selection can be moved relative to its current location according to various treewalking regimes; e.g., preorder, reverse preorder, etc. Navigation according to the structure of an object has the benefit of eliminating time-consuming and error-prone visual inspections that are typically needed when navigating with the insertion cursor. For example, if the current structural selection is a list item, the selection can be advanced to the next item in the list using the command forward-phrase. The selection will be positioned correctly according to the structure of the object without your having to scan.
Some commands ignore locations in the object where optional constituents can occur, while other commands insert a placeholder at such optional places and stop there. For example, if the current structural selection is a list item, it can be advanced to a placeholder immediately after the current item using forward-phrase-with-optionals.
If the structural selection is contained within a placeholder for an optional constituent and the structural selection is redirected outside that optional constituent, the placeholder is removed from the object as the structural selection is moved to its new location.
In the window in which the command is invoked, the insertion cursor tracks the left end of the structural selection; i.e., the insertion cursor is repositioned to the left of the leftmost character of the new structural selection and the window is automatically scrolled, if necessary, so that the insertion cursor is visible.
Each buffer has only one structural selection regardless of the number of different windows and views in which it is displayed. The structural selection is updated in all windows displaying the buffer; however, the insertion cursor is only updated in windows of the same auto-scroll set. As a consequence, the structural selection is guaranteed to be visible in all windows of the same auto-scroll set, but is not necessarily visible in other windows.
All commands that move the structural selection are parser-initiating. Text buffers are treated as indivisible phrases for the purpose of repositioning the structural selection.
Structural-selection motion commands are: