# Line Editor The line editor provides a simple interface for allowing the user to edit input without the limitations in the normal `refill` mechanism. It provides both input history and a clipboard that is filled by deleting/cutting text. When enabled, the following keys can be used to control editing: * Backspace: delete/cut the character to the left of the cursor * Delete: delete/cut the character under the cursor * Left / Control-B: move the cursor one character to the left * Right / Control-F: move the cursor one character to the right * Up: switch to the previous line in the history * Down: switch to the next line in the history * Control-A: move the cursor to the start of the input * Control-E: move the cursor to the end of the input * Control-L: reset the terminal * Control-K: delete/cut to the end of the line from the cursor * Control-U: delete/cut to the start of the line from the cursor * Control-W: delete/cut to the start of the preceding word delimited by whitespace from the cursor * Control-Y: paste the current clipboard at the cursor * F1: enter upload mode, where line editing features are turned off * F2: leave upload mode and re-enable line editing features; this must be entered as the first key entered on a line Note that tabs and characters of code points greater than 127 are handled correctly. Also note that it is not compatible with non-terminal operation except when in upload mode, i.e. with loading code automatically via serial or swdcom; before this is done one must be in upload mode or it must be disabled. After a reboot, it is initialized for the main task only, and if, when enabled, `refill` is used for a different task, it needs to have already been initialized for that task. ### `line` The following words are in `line`: ##### `init-line` ( index-ptr count-ptr buffer-ptr buffer-size -- ) Enable the line editor for the current task, with a pointer to the index variable, a poiner to the count variable, a pointer to the input buffer, and a size of the input buffer provided. Note that it allots memory in the current task's dictionary. ### `forth` The following words are in `forth`: ##### `enable-line` ( -- ) Enable the line editor. ##### `disable-line` ( -- ) Disable the line editor. This must be done before loading code automatically.