SET(MOVE_VERTICAL_CONTEXT) Sets a buffer's target column for MOVE_VERTICAL operations when the COLUMN_MOVE_VERTICAL setting is turned on. The target column, or context, is an attribute specifying the horizontal region in which DECTPU tries to keep the cursor during successive MOVE_VERTICAL operations. DECTPU represents the buffer's context as an encoded integer. Syntax SET (MOVE_VERTICAL_CONTEXT, buffer, integer) Parameters MOVE_VERTICAL_CONTEXT A keyword indicating that the SET built-in is being used to set a buffer's context. The context controls where, in the horizontal dimension, the cursor can move during MOVE_VERTICAL operations. buffer The buffer whose context you want to set. integer An encoded integer representing the context value. To derive the value representing the buffer's context, DECTPU uses two pieces of information. One is the screen column in which DECTPU tries to keep the cursor during MOVE_VERTICAL operations. The other is the status of the cursor at the time the context is set. The algorithm used to encode the integer is not public. Do not attempt to specify an actual integer value as a parameter to SET (MOVE_VERTICAL_CONTEXT). Instead, direct DECTPU to assign the correct integer value to a variable by using the following GET_INFO call: int := GET_INFO (buffer, "move_vertical_context"). You can then use the variable to specify the integer parameter to SET (MOVE_VERTICAL_CONTEXT). Comments Although you can use SET (COLUMN_MOVE_VERTICAL) to keep the editing point and cursor in or near one screen column during MOVE_VERTICAL operations, the POSITION built-in can interfere with the operation of SET (COLUMN_MOVE_VERTICAL). The POSITION built-in has the side effect of resetting the column to which DECTPU tries to position during subsequent MOVE_VERTICAL operations. (The column that DECTPU tries to keep the cursor near is called the context.) Because of this side effect, programmers need a way to save the value of a buffer's context before a POSITION operation and to reset the context to the saved value after the POSITION operation. To save the current context value, use a statement similar to the following: the_context := GET_INFO (CURRENT_BUFFER, "move_vertical_context"); To set the context back to that value after using POSITION, use a statement similar to the following: SET (MOVE_VERTICAL_CONTEXT, CURRENT_BUFFER, the_context); Note that you must use the GET_INFO call shown here to obtain the buffer's context value before you use POSITION. There is no way to obtain or specify the old context value after you use POSITION. Example saved_context := GET_INFO (CURRENT_BUFFER, "move vertical_context"); saved_location := MARK (FREE_CURSOR); POSITION (message_buffer); COPY_TEXT ("Unless you save the context before you use POSITION,"); COPY_TEXT ("you cannot restore the context after POSITION changes it."); POSITION (saved_location); SET (MOVE_VERTICAL_CONTEXT, CURRENT_BUFFER, saved_context); This code fragment saves the value of the current buffer's context before DECTPU positions the editing point to another buffer. After repositioning to the first buffer, the code sets the buffer's context back to its previous value. Related topics CURRENT_COLUMN CURRENT_OFFSET CURSOR_VERTICAL GET_INFO(buffer_variable) GET_INFO(SYSTEM) MOVE_VERTICAL POSITION SET(COLUMN_MOVE_VERTICAL)