home/doc/manpages/hooks.asciidoc
2016-02-06 00:01:42 +00:00

124 lines
3.5 KiB
Plaintext

KAKOUNE(1)
==========
NAME
----
hooks - a
Description
-----------
Commands can be registred to be executed when certain events arise. To register a hook use the following command:
----------------------------------------------------------------------
hook [-group <group>] <scope> <hook_name> <filtering_regex> <commands>
----------------------------------------------------------------------
*scope* can be one of *global*, *buffer* or *window*.
*command* is a string containing the commands to execute when the hook is called.
For example to automatically use line numbering with .cc files, use the following command:
----------------------------------------------------
hook global WinCreate .*\.cc %{ addhl number_lines }
----------------------------------------------------
if *group* is given, make this hook part of the named group. Groups are used for removing hooks with the following
command:
-----------------------
rmhooks <scope> <group>
-----------------------
A call to the command above will remove every hooks in *scope* that are part of the given *group*.
Default hooks
-------------
*NormalIdle*::
a certain duration has passed since last key was pressed in normal mode
*NormalBegin*::
entering normal mode
*NormalEnd*::
leaving normal mode
*NormalKey*::
a key is received in normal mode, the key is used for filtering
*InsertIdle*::
a certain duration has passed since last key was pressed in insert mode
*InsertBegin*::
entering insert mode
*InsertEnd*::
leaving insert mode
*InsertKey*::
a key is received in insert mode, the key is used for filtering
*InsertMove*::
the cursor moved (without inserting) in insert mode, the key that triggered the move is used for filtering
*WinCreate*::
a window was created, the filtering text is the buffer name
*WinClose*::
a window was detroyed, the filtering text is the buffer name
*WinDisplay*::
a window was bound a client, the filtering text is the buffer name
*WinSetOption*::
an option was set in a window context, the filtering text is *<option_name>=<new_value>*
*BufSetOption*::
an option was set in a buffer context, the filtering text is *<option_name>=<new_value>*
*BufNew*::
a buffer for a new file has been created, filename is used for filtering
*BufOpen*::
a buffer for an existing file has been created, filename is used for filtering
*BufCreate*::
a buffer has been created, filename is used for filtering
*BufWritePre*::
executed just before a buffer is written, filename is used for filtering
*BufWritePost*::
executed just after a buffer is written, filename is used for filtering
*BufClose*::
executed when a buffer is deleted, while it is still valid
*BufOpenFifo*::
executed when a buffer opens a fifo
*BufReadFifo*::
executed after some data has been red from a fifo and inserted in the buffer
*BufCloseFifo*::
executed when a fifo buffer closes its fifo file descriptor either because the buffer is being deleted,
or because the writing end has been closed
*RuntimeError*::
an error was encountered while executing an user command the error message is used for filtering
*KakBegin*::
kakoune has started, this hook is called just after reading the user configuration files
*KakEnd*::
kakoune is quitting
*FocusIn*::
on supported clients, triggered when the client gets focused. the filtering text is the client name
*FocusOut*::
on supported clients, triggered when the client gets unfocused. the filtering text is the client name
When not specified, the filtering text is an empty string.