Search documentation of stdlib

# edlin (stdlib v7.3)

Copy Markdown View Source

Line and input interpretter for the erlang shell.

This module reads input, handles any escape sequences that have been configured via edlin_key and outputs action requests. The action requests are handled either by modules `group` or the `user_drv`.

## Key configuration

You can setup a custom key configuration that overrides the default key configuration. This is done by setting the stdlib application parameter `shell_keymap` before Erlang is started. If you want to have the same keymap in all Erlang shells you can do so by putting a config file in your user's home directory and then set ERL_FLAGS to load it at startup. For example:

    $ cat $HOME/.erlang_keymap.config
    [{stdlib,
      [{shell_keymap,
        #{ normal => #{ "\^[A" => clear } }
      }]
    }].
    $ ERL_FLAGS="-config $HOME/.erlang_keymap" erl

The current keymap configuration can be fetched through edlin:keymap(). If a custom keymap or keymap file is specified, then it will be merged with the default keymap.

The keymap is a map of maps where the keys in the parent map corresponds to different editing modes in the shell. The valid modes currently supported are `normal` and `search`.

The keys in the child maps are the escape sequences that are sent from the terminal when a key is pressed and each value is a valid action as seen below.

The default atom is used to specify that an action should happen when a key is pressed that does not have any mapping. Typically used to exit a mode.

See tty - A Command-Line Interface for more information about the default keymap.

## Actions

The commands below are the built-in action requests for switching input modes on the normal shell or navigating, or manipulating the line feed. The line feed supports multiple lines.

- `auto_blink` - Automatically close the closest matching opening parenthesis.

- `backward_char` - Move backward one character.

- `backward_delete_char` - Delete the character behind the cursor.

- `backward_delete_word` - Delete the word behind the cursor.

- `backward_kill_line` - Delete all characters from the cursor to the beginning of the line and save them in the kill buffer.

- `backward_kill_word` - Delete the word behind the cursor and save it in the kill buffer.

- `backward_line` - Move backward one line.

- `backward_word` - Move backward one word.

- `beginning_of_expression` - Move to the beginning of the expression.

- `beginning_of_line` - Move to the beginning of the line.

- `clear` - Clear the screen.

- `clear_line` - Clear the current expression.

- `end_of_expression` - Move to the end of the expression.

- `end_of_line` - Move to the end of the line.

- `forward_char` - Move forward one character.

- `forward_delete_char` - Delete the character under the cursor.

- `forward_line` - Move forward one line.

- `forward_word` - Move forward one word.

- `help` - Display help for the module or function closest on the left of the cursor.

- `help_full` - Display the whole help text for the module or function closest on the left of the cursor.

- `history_down` - Move to the next item in the history.

- `history_up` - Move to the previous item in the history.

- `kill_line` - Delete all characters from the cursor to the end of the line and save them in the kill buffer.

- `kill_word` - Delete the word under the cursor and save it in the kill buffer.

- `move_expand_down` - Move down one line in the expand area e.g. help or tab completion pager.

- `move_expand_up` - Move up one line in the expand area e.g. help or tab completion pager.

- `new_line_finish` - Add a newline at the end of the line and try to evaluate the current expression.

- `newline` - Add a newline at the cursor position.

- `open_editor` - Open the current line in an editor e.g. EDITOR="code -w" opens a buffer in vs code. Note that you need to pass a flag to the editor so that it signals the shell when you close the buffer.

- `redraw_line` - Redraw the current line.

- `scroll_expand_down` - Scroll down five lines in the expand area e.g. help or tab completion pager.

- `scroll_expand_up` - Scroll up five lines in the expand area e.g. help or tab completion pager.

- `search_cancel` - Cancel the current search.

- `search_found` - Accept the current search result and submit it.

- `search_quit` - Accept the current search result, but edit it before submitting.

- `search` - Enter search mode, search the history.

- `skip_down` - Skip to the next line in the history that matches the current search expression.

- `skip_up` - Skip to the previous line in the history that matches the current search expression.

- `tab_expand_full` - Output all possible tab completions.

- `tab_expand_quit` - Go back to normal mode.

- `tab_expand` - Autocomplete the current word, or show 5 lines of possible completions.

- `transpose_char` - Swap the character behind the cursor with the one in front of it.

- `transpose_word` - Swap the word behind the cursor with the one in front of it.

- `yank` - Insert the contents of the kill buffer at the cursor position.

## Summary

### Types

keymap()

A map of maps for each shell mode containing key, action pairs.

### Functions

keymap()

Get the current keymap used in the shell. Each key in the parent map represents a shell mode e.g. `normal` or `search`. Each map associated with the shell modes contains key sequences represented as strings, paired with an action, which is one of the valid actions mentioned above.

## Types

# keymap()

(not exported) (since OTP 26.1)

    -type keymap() :: #{atom() => #{string() | default => atom()}}.

A map of maps for each shell mode containing key, action pairs.

## Functions

# keymap()

(since OTP 26.1)

    -spec keymap() -> keymap().

Get the current keymap used in the shell. Each key in the parent map represents a shell mode e.g. `normal` or `search`. Each map associated with the shell modes contains key sequences represented as strings, paired with an action, which is one of the valid actions mentioned above.