heading::Automatic{nbsp}commands[autocommands]

Autocommands are a way to automatically execute code when certain events
happen.

|:au| |:autocmd| +
||:au[tocmd]||
________________________________________________________________________________
Execute commands automatically on events.

[c]:au[tocmd][c] {event} {pat} {cmd}

If the *-javascript* (short name *-js*) option is specified, {cmd} is executed
as JavaScript code, with any supplied arguments available as variables.

Add {cmd} to the list of commands Vimperator will execute on {event} for a URL matching {pat}:

* [c]:autocmd[!][c] {events} {pat}: list/remove autocommands filtered by {events} and {pat}
* [c]:autocmd[!][c] {events}: list/remove autocommands matching {events}
* [c]:autocmd[!][c] * {pat}: list/remove autocommands matching {pat}
* [c]:autocmd[!][c]: list/remove all autocommands

Available {events}:

[frame="topbot",grid="none",cols="1,4"]
|===============================================================================
|*BookmarkAdd*       |Triggered after a page is bookmarked
|*ColorScheme*       |Triggered after a color scheme has been loaded
|*DOMLoad*           |Triggered when a page's DOM content has fully loaded
|*DownloadPost*      |Triggered when a download has completed
|*Fullscreen*        |Triggered when the browser's fullscreen state changes
|*LocationChange*    |Triggered when changing tabs or when navigating to a new location
|*PageLoadPre*       |Triggered after a page load is initiated
|*PageLoad*          |Triggered when a page gets (re)loaded/opened
|*PrivateMode*	     |Triggered when private mode is activated or deactivated
|*Sanitize*	     |Triggered when privata data are sanitized
|*ShellCmdPost*      |Triggered after executing a shell command with [c]:![c]{cmd}
|*VimperatorEnter*   |Triggered after Firefox starts
|*VimperatorLeavePre*|Triggered before exiting Firefox, just before destroying each module
|*VimperatorLeave*   |Triggered before exiting Firefox
|===============================================================================

{pat} is a regular expression, use .* if you want to match all URLs.

Note: This differs from Vim which uses a glob rather than a regex for {pat}.

The following keywords are available where relevant:

[frame="topbot",grid="none",cols="1,4"]
|===============================================================================
|*<url>*    |The URL against which the event was selected.
|*<title>*  |The page, bookmark or download title.
|*<doc>*    |The document for which the event occurred. Only for *DOMLoad*, *PageLoad* and *PageLoadPre*.
|*<tab>*    |The tab in which the event occurred. Only for *DOMLoad*, *PageLoad* and *PageLoadPre*.
|*<tags>*   |The tags applied to <url>. Only for *BookmarkAdd*.
|*<keyword>*|The keywords applied to the bookmark. Only for *BookmarkAdd*.
|*<icon>*   |The icon associated with <url>. Only for *BookmarkAdd*.
|*<size>*   |The size of a downloaded file. Only for *DownloadPost*.
|*<file>*   |The target destination of a download. Only for *DownloadPost*.
|*<state>*  |The new state. Only for *Fullscreen* and *PrivateMode*.
|*<name>*   |The name of the item. Only for *ColorScheme* and *Sanitize*.
|===============================================================================

________________________________________________________________________________


|:doautoa| |:doautoall|
||:doautoa[ll] {event} [a][url][a]|| +
________________________________________________________________________________
Apply the autocommands matching the specified URL to all buffers. If no
[a][url][a] is specified use the current URL.
________________________________________________________________________________


|:do| |:doautocmd|
||:do[autocmd] {event} [a][url][a]|| +
________________________________________________________________________________
Apply the autocommands matching the specified URL to the current buffer. If no
[a][url][a] is specified use the current URL.
________________________________________________________________________________

section::Examples[autocmd-examples]

Enable _passthrough_ mode on all Google sites:

\{nbsp}[c]:autocmd LocationChange .* js modes.passAllKeys = /google\.com/.test(buffer.URL)[c]

Enable _passthrough_ mode on *some* Google sites:

\{nbsp}[c]:autocmd LocationChange .* js modes.passAllKeys = /(www|mail)\.google\.com/.test(buffer.URL)[c]

Set the filetype to mail when editing email at Gmail:

\{nbsp}[c]:autocmd LocationChange .* :set editor=gvim\ -f[c] +
\{nbsp}[c]:autocmd LocationChange mail\.google\.com :set editor="gvim -f -c $$'set ft=mail'$$"[c]

// vim: set filetype=asciidoc:
