Skip to content

Latest commit

 

History

History
199 lines (140 loc) · 5.82 KB

expansions.asciidoc

File metadata and controls

199 lines (140 loc) · 5.82 KB

Expansions

Strings

\'strings'

uninterpreted strings, use a backslash (\') to escape the separator

"strings"

expanded strings, % strings (c.f. next section) contained are expended, use a backslash (\\%) to escape the separator

%{strings}

these strings are very useful when entering commands

  • the '{' and '}' delimiters are configurable, any non alphanumeric character can be used

e.g. %[string], %<string>, %(string), %~string~, %!string!
  • if the character following '%' is one of '{[(<', then the closing one is the matching '}])>' and the delimiters are not escapable but are nestable

e.g. %{ roger {}; } is a valid string, %{ marcel \} as well

Typed expansions

%{strings} can have an expansion type between the % and the opening character. They will be written %<type>\{<content>\}. They will be expanded according to the given <type> using <content> as its parameter:

sh

shell expansion, similar to posix shell '$(…​)' construct (c.f. next section)

reg

register expansion, will expand to the strings stored in the register named by <content>. See :doc registers

opt

option expansion, will expand to the value of the option named by <content>. See :doc options

val

value expansion, will expand to the value of the environment variables available to shell expansion. <content> shall be the name of that variable without the kak_ prefix.

arg

argument expansion, expand to the arguments of the current command, <content> can be a number, or @ for all arguments

Shell expansions

The '%sh{…​}' expansion replaces its content with the output of the shell commands in it. The following environment variables are used to pass informations about Kakoune’s state:

kak_selection

content of the main selection

kak_selections

quoted list of the contents of the selections.

kak_selection_desc

range of the main selection, represented as anchor,cursor; anchor and cursor are in this format: line.column

kak_selections_desc

unquoted list range of the selections.

kak_bufname

name of the current buffer

kak_buffile

full path of the file or same as kak_bufname when there’s no associated file

kak_buflist

quoted list of the currently opened buffer names

kak_buf_line_count

the current buffer line count

kak_timestamp

timestamp of the current buffer, the timestamp is an integer value which is incremented each time the buffer is modified

kak_history_id

history id of the current buffer, the history id is an integer value which is used to reference a specific buffer version in the undo tree

kak_runtime

directory containing the kak support files, determined from kakoune’s binary location.

kak_config

directory containing the user configuration

kak_version

version of the current Kakoune server (git hash or release name)

kak_count

count parameter passed to the command, defaults to 0 if no count given

kak_register

register parameter passed to the command

kak_opt_<name>

value of option name

kak_reg_<r>

quoted list of value of register r

kak_main_reg_<r>

content of register r associated with the main selection.

kak_session

name of the current session

kak_client

name of the current client

kak_client_pid

process id of the current client

kak_client_list

unquoted list of the names of clients connected to the current session

kak_source

path of the file currently getting executed (through the source command)

kak_modified

buffer has modifications not saved

kak_cursor_line

line of the end of the main selection

kak_cursor_column

column of the end of the main selection (in byte)

kak_cursor_char_value

unicode value of the codepoint under the cursor

kak_cursor_char_column

column of the end of the main selection (in character)

kak_cursor_byte_offset

Offset of the main selection from the beginning of the buffer (in bytes).

kak_window_width

width of the current kakoune window

kak_window_height

height of the current kakoune window

kak_hook_param

filtering text passed to the currently executing hook

kak_hook_param_capture_N

text captured by the hook filter regex capture N

kak_text

the text entered by the user at a prompt command, not available in other contexts

kak_client_env_<name>

value of the name variable in the client environment (e.g. $kak_client_env_SHELL is the SHELL variable)

kak_user_modes

unquoted list of user modes.

Quoted lists are separated by spaces, and each element is surrounded by ' with contained ' doubled. Unquoted lists are simply separated by spaces and is used for values that will not contain whitespaces.

Note that in order for Kakoune to pass a value in the environment, the variable has to be spelled out within the body of the expansion.

Those environment variables are available in every context where Kakoune use a shell command, such as the |, ! or $ normal mode commands (See :doc keys).

Markup strings

In certain contexts, Kakoune can take a markup string, which is a string containing formatting informations. In these strings, the {facename} syntax will enable the face facename until another face gets activated, or the end of the string is reached.

Literal '{' characters shall be written '\{', and a literal backslash ('\') that precedes a '{' character shall be escaped as well ('\\').