From b7bdbbdc505879450494bc75b706e2997e25120f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= <flashcode@flashtux.org>
Date: Sun, 15 May 2016 08:52:19 +0200
Subject: core: rename .asciidoc files to .adoc (issue #722)

---
 doc/en/weechat_user.en.asciidoc | 3487 ---------------------------------------
 1 file changed, 3487 deletions(-)
 delete mode 100644 doc/en/weechat_user.en.asciidoc

(limited to 'doc/en/weechat_user.en.asciidoc')

diff --git a/doc/en/weechat_user.en.asciidoc b/doc/en/weechat_user.en.asciidoc
deleted file mode 100644
index 49e297aae..000000000
--- a/doc/en/weechat_user.en.asciidoc
+++ /dev/null
@@ -1,3487 +0,0 @@
-= WeeChat user's guide
-:author: Sébastien Helleu
-:email: flashcode@flashtux.org
-:lang: en
-:toc: left
-:toclevels: 4
-:sectnums:
-:sectnumlevels: 3
-:docinfo1:
-
-
-This manual documents WeeChat chat client, it is part of WeeChat.
-
-Latest version of this document can be found on this page:
-https://weechat.org/doc
-
-
-[[introduction]]
-== Introduction
-
-WeeChat (Wee Enhanced Environment for Chat) is a free chat client, fast and
-light, designed for many operating systems.
-
-[[features]]
-=== Features
-
-Main features are:
-
-* multi-protocols: IRC and Jabber (with script jabber.py or bitlbee/minbif)
-* multi-servers connection (with SSL, IPv6, proxy)
-* small, fast and light
-* customizable and extensible with plugins and scripts
-* compliant with IRC RFCs http://tools.ietf.org/html/rfc1459[1459],
-  http://tools.ietf.org/html/rfc2810[2810],
-  http://tools.ietf.org/html/rfc2811[2811],
-  http://tools.ietf.org/html/rfc2812[2812] and
-  http://tools.ietf.org/html/rfc2813[2813]
-* IRC proxy and relay for remote interfaces
-* multi-platform (GNU/Linux, *BSD, MacOS X, Windows and other)
-* 100% GPL, free software
-
-WeeChat homepage is here: https://weechat.org/
-
-[[prerequisites]]
-=== Prerequisites
-
-In order to install WeeChat, you need:
-
-* a running GNU/Linux system (with compiler tools for source
-  package), or a compatible OS
-* _root_ privileges (to install WeeChat in a system directory)
-* some libraries (see <<dependencies,dependencies>>).
-
-[[install]]
-== Installation
-
-[[binary_packages]]
-=== Binary packages
-
-Binary packages are available for many distributions, including:
-
-* Arch Linux: `pacman -S weechat`
-* Cygwin (Windows): select WeeChat packages in setup.exe
-* Debian (or any Debian compatible distribution):
-  `apt-get install weechat-curses`
-* Fedora Core: `dnf install weechat`
-* Gentoo: `emerge weechat`
-* Mandriva/RedHat (or any RPM compatible distribution):
-  `rpm -i /path/to/weechat-x.y.z-1.i386.rpm`
-* openSUSE: `zypper in weechat`
-* Sourcemage: `cast weechat`
-
-Some additional packages may be useful, like weechat-plugins.
-
-For other distributions, please look at your manual for installation
-instructions.
-
-[[source_package]]
-=== Source package
-
-WeeChat can be compiled with cmake or autotools (cmake is recommended way).
-
-[NOTE]
-On OS X, you can use http://brew.sh/[Homebrew]:
-`brew install weechat --with-python --with-perl`
-(for help: `brew info weechat`).
-
-[[dependencies]]
-==== Dependencies
-
-Following table shows list of packages that are required or optional to
-compile WeeChat.
-
-[width="100%",cols="5,^3,^3,.^13",options="header"]
-|===
-| Package ^(1)^          | Version       | Required | Feature
-| cmake                  |               | *yes*    | Build (autotools still possible, but cmake is recommended)
-| pkg-config             |               | *yes*    | Detect installed libraries
-| libncursesw5-dev ^(2)^ |               | *yes*    | Ncurses interface
-| libcurl4-gnutls-dev    |               | *yes*    | URL transfer
-| zlib1g-dev             |               | *yes*    | Compression of packets in relay plugin (weechat protocol), script plugin
-| libgcrypt20-dev        |               | *yes*    | Secured data, IRC SASL authentication (DH-BLOWFISH/DH-AES), script plugin
-| libgnutls28-dev        | ≥ 2.2.0 ^(3)^ |          | SSL connection to IRC server, support of SSL in relay plugin, IRC SASL authentication (ECDSA-NIST256P-CHALLENGE)
-| gettext                |               |          | Internationalization (translation of messages; base language is English)
-| ca-certificates        |               |          | Certificates for SSL connections
-| libaspell-dev
-  ∥ libenchant-dev       |               |          | Aspell plugin
-| python-dev             | ≥ 2.5 ^(4)^   |          | Python plugin
-| libperl-dev            |               |          | Perl plugin
-| ruby2.3-dev            | ≥ 1.8         |          | Ruby plugin
-| liblua5.3-dev          |               |          | Lua plugin
-| tcl-dev                | ≥ 8.5         |          | Tcl plugin
-| guile-2.0-dev          | ≥ 2.0         |          | Guile (scheme) plugin
-| libv8-dev              | ≤ 3.24.3      |          | Javascript plugin
-| asciidoctor            | ≥ 1.5.4       |          | Build man page and documentation
-| libcpputest-dev        | ≥ 3.4         |          | Run tests
-| C++ compiler           |               |          | Run tests, javascript plugin
-|===
-
-[NOTE]
-^(1)^ Name comes from the Debian GNU/Linux distribution, versions and package
-names may be different in different distributions and versions. +
-^(2)^ WeeChat can compile with libncurses5-dev, but it is *NOT* recommended (you
-will have display bugs with wide chars). +
-^(3)^ Gnutls ≥ 3.0.21 is required for IRC SASL authentication with mechanism
-ECDSA-NIST256P-CHALLENGE. +
-^(4)^ Recommended Python version is 2.7 (all scripts run fine with version 2.7,
-but not with versions ≤ 2.6 or ≥ 3.0).
-
-[[compile_with_cmake]]
-==== Compile with cmake
-
-* Installation in system directories (requires _root_ privileges):
-
-----
-$ mkdir build
-$ cd build
-$ cmake ..
-$ make
-% make install    (as root)
-----
-
-* Installation in custom directory:
-
-----
-$ mkdir build
-$ cd build
-$ cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/directory
-$ make
-$ make install
-----
-
-Options can be used for cmake, with format: "-DOPTION=VALUE".
-
-List of commonly used options:
-
-[width="100%",cols="2m,2,5m,12",options="header"]
-|===
-| Option | Values | Default value | Description
-
-| CMAKE_BUILD_TYPE | `Debug`, `Release`, `RelWithDebInfo`, `MinSizeRel` | |
-  The type of build: `Debug` (or `RelWithDebInfo`) is recommended if you are
-  running development version of WeeChat.
-
-| CMAKE_INSTALL_PREFIX | directory | /usr/local |
-  The directory where WeeChat will be installed.
-
-| WEECHAT_HOME | directory | ~/.weechat |
-  The default home directory when running WeeChat.
-
-| CA_FILE | file | /etc/ssl/certs/ca-certificates.crt |
-  File containing the certificate authorities.
-  This is the default value of option
-  <<option_weechat.network.gnutls_ca_file,weechat.network.gnutls_ca_file>>.
-
-| ENABLE_ALIAS | `ON`, `OFF` | ON |
-  Compile <<alias_plugin,Alias plugin>>.
-
-| ENABLE_ASPELL | `ON`, `OFF` | ON |
-  Compile <<aspell_plugin,Aspell plugin>>.
-
-| ENABLE_CHARSET | `ON`, `OFF` | ON |
-  Compile <<charset_plugin,Charset plugin>>.
-
-| ENABLE_MAN | `ON`, `OFF` | OFF |
-  Compile man page.
-
-| ENABLE_DOC | `ON`, `OFF` | OFF |
-  Compile documentation (it takes a long time, recommended only if you build
-  a binary package embedding documentation or if you can't browse documentation
-  online).
-
-| ENABLE_ENCHANT | `ON`, `OFF` | OFF |
-  Compile <<aspell_plugin,Aspell plugin>> with Enchant.
-
-| ENABLE_EXEC | `ON`, `OFF` | ON |
-  Compile <<exec_plugin,Exec plugin>>.
-
-| ENABLE_FIFO | `ON`, `OFF` | ON |
-  Compile <<fifo_plugin,Fifo plugin>>.
-
-| ENABLE_GNUTLS | `ON`, `OFF` | ON |
-  Enable Gnutls (for SSL).
-
-| ENABLE_GUILE | `ON`, `OFF` | ON |
-  Compile <<scripts_plugins,Guile plugin>> (Scheme).
-
-| ENABLE_IRC | `ON`, `OFF` | ON |
-  Compile <<irc_plugin,IRC plugin>>.
-
-| ENABLE_JAVASCRIPT | `ON`, `OFF` | ON |
-  Compile <<scripts_plugins,Javascript plugin>>.
-
-| ENABLE_LARGEFILE | `ON`, `OFF` | ON |
-  Support of large files.
-
-| ENABLE_LOGGER | `ON`, `OFF` | ON |
-  Compile <<logger_plugin,Logger plugin>>.
-
-| ENABLE_LUA | `ON`, `OFF` | ON |
-  Compile <<scripts_plugins,Lua plugin>>.
-
-| ENABLE_NCURSES | `ON`, `OFF` | ON |
-  Compile Ncurses interface.
-
-| ENABLE_NLS | `ON`, `OFF` | ON |
-  Enable NLS (translations).
-
-| ENABLE_PERL | `ON`, `OFF` | ON |
-  Compile <<scripts_plugins,Perl plugin>>.
-
-| ENABLE_PYTHON | `ON`, `OFF` | ON |
-  Compile <<scripts_plugins,Python plugin>>.
-
-| ENABLE_PYTHON3 | `ON`, `OFF` | OFF |
-  Compile <<scripts_plugins,Python plugin>> using Python 3 (*NOT* recommended
-  because many scripts are not compatible with Python 3).
-
-| ENABLE_RELAY | `ON`, `OFF` | ON |
-  Compile <<relay_plugin,Relay plugin>>.
-
-| ENABLE_RUBY | `ON`, `OFF` | ON |
-  Compile <<scripts_plugins,Ruby plugin>>.
-
-| ENABLE_SCRIPT | `ON`, `OFF` | ON |
-  Compile <<scripts_plugins,Script plugin>>.
-
-| ENABLE_SCRIPTS | `ON`, `OFF` | ON |
-  Compile <<scripts_plugins,script plugins>> (Python, Perl, Ruby, Lua, Tcl,
-  Guile, Javascript).
-
-| ENABLE_TCL | `ON`, `OFF` | ON |
-  Compile <<scripts_plugins,Tcl plugin>>.
-
-| ENABLE_TRIGGER | `ON`, `OFF` | ON |
-  Compile <<trigger_plugin,Trigger plugin>>.
-
-| ENABLE_XFER | `ON`, `OFF` | ON |
-  Compile <<xfer_plugin,Xfer plugin>>.
-
-| ENABLE_TESTS | `ON`, `OFF` | OFF |
-  Compile tests.
-|===
-
-The other options can be displayed with this command:
-
-----
-$ cmake -LA
-----
-
-Or with Curses interface:
-
-----
-$ ccmake ..
-----
-
-[[compile_with_autotools]]
-==== Compile with autotools
-
-[WARNING]
-Only cmake is officially supported to build WeeChat. You should use autotools
-only if you are not able to use cmake. +
-Build with autotools requires more dependencies and is slower than with cmake.
-
-* Installation in system directories (requires _root_ privileges):
-
-----
-$ ./autogen.sh
-$ mkdir build
-$ cd build
-$ ../configure
-$ make
-% make install    (as root)
-----
-
-* Installation in custom directory:
-
-----
-$ ./autogen.sh
-$ mkdir build
-$ cd build
-$ ../configure --prefix=/path/to/directory
-$ make
-$ make install
-----
-
-Options can be used for _configure_ script, they can be displayed with this
-command:
-
-----
-$ ./configure --help
-----
-
-[[git_sources]]
-=== Git sources
-
-Warning: git sources are for advanced users: it may not compile or not be
-stable. You're warned!
-
-To get git sources, issue this command:
-
-----
-$ git clone https://github.com/weechat/weechat.git
-----
-
-Then follow instructions for source package (see
-<<source_package,source package>>).
-
-[[report_crashes]]
-=== Report crashes
-
-If you experienced crashes, or if you want to report any future WeeChat crash,
-you have to:
-
-* compile it with debug info (or install binary package with debug info)
-* enable _core_ files on your system
-* install gdb
-
-[[debug_info]]
-==== Debug info
-
-If you're compiling with cmake:
-
-----
-$ cmake .. -DCMAKE_BUILD_TYPE=Debug
-----
-
-If you're compiling with autotools, debug is default (`--with-debug=1`).
-
-If you installed a binary package, then install package _weechat-dbg_.
-
-[[core_files]]
-==== Core files
-
-To enable _core_ files, you can use option
-<<option_weechat.startup.sys_rlimit,weechat.startup.sys_rlimit>>:
-
-----
-/set weechat.startup.sys_rlimit "core:-1"
-----
-
-For WeeChat ≤ 0.3.8 or if you want to enable core files even before WeeChat
-starts, you can use `ulimit` command.
-
-For example under Linux with _bash_ shell, add this line to your `~/.bashrc`:
-
-----
-ulimit -c unlimited
-----
-
-Or max size:
-
-----
-ulimit -c 200000
-----
-
-[[gdb_backtrace]]
-==== Get backtrace with gdb
-
-When WeeChat crashes, your system will create a file _core_ or _core.12345_
-(_12345_ is process id).
-This file is created in directory where you have run WeeChat (this is *not*
-directory where WeeChat is installed!).
-
-For example if _weechat_ is installed in _/usr/bin/_ and _core_ file is
-in _/home/xxx/_, then run gdb with this command:
-
-----
-gdb /usr/bin/weechat /home/xxx/core
-----
-
-Then under gdb, use command `bt full` to display backtrace.
-You will see something like that:
-
-----
-(gdb) set logging file /tmp/crash.txt
-(gdb) set logging on
-Copying output to /tmp/crash.txt.
-(gdb) bt full
-#0  0x00007f9dfb04a465 in raise () from /lib/libc.so.6
-#1  0x00007f9dfb04b8e6 in abort () from /lib/libc.so.6
-#2  0x0000000000437f66 in weechat_shutdown (return_code=1, crash=1)
-    at /some_path/src/core/weechat.c:351
-#3  <signal handler called>
-#4  0x000000000044cb24 in hook_process_timer_cb (arg_hook_process=0x254eb90,
-    remaining_calls=<value optimized out>) at /some_path/src/core/wee-hook.c:1364
-        hook_process = 0x254eb90
-        status = <value optimized out>
-#5  0x000000000044cc7d in hook_timer_exec ()
-    at /some_path/src/core/wee-hook.c:1025
-        tv_time = {tv_sec = 1272693881, tv_usec = 212665}
-        ptr_hook = 0x2811f40
-        next_hook = 0x0
-#6  0x000000000041b5b0 in gui_main_loop ()
-    at /some_path/src/gui/curses/gui-curses-main.c:319
-        hook_fd_keyboard = 0x173b600
-        tv_timeout = {tv_sec = 0, tv_usec = 0}
-        read_fds = {fds_bits = {0 <repeats 16 times>}}
-        write_fds = {fds_bits = {0 <repeats 16 times>}}
-        except_fds = {fds_bits = {0 <repeats 16 times>}}
-        max_fd = <value optimized out>
-----
-
-You must report this trace to developers, and tell them what action caused this
-crash.
-
-Thank you for your help!
-
-[[debug_running_weechat]]
-==== Debug a running WeeChat
-
-To debug a running WeeChat (for example if WeeChat seems blocked), you can use
-gdb with process id (replace _12345_ with PID of weechat process):
-
-----
-gdb /usr/bin/weechat 12345
-----
-
-Then like for a crash, use command `bt full`:
-
-----
-(gdb) bt full
-----
-
-[[usage]]
-== Usage
-
-[[running_weechat]]
-=== Running WeeChat
-
-Command line arguments:
-
-include::cmdline_options.en.asciidoc[]
-
-To start WeeChat, issue this command:
-
-----
-$ weechat
-----
-
-When you run WeeChat for the first time, a default configuration file is
-created, with default options. The default configuration file is:
-_~/.weechat/weechat.conf_.
-
-You can edit this file at your convenience to configure WeeChat or you can set
-parameters with `/set` command in WeeChat (see
-<<weechat_commands,WeeChat commands>>).
-
-[[screen_layout]]
-=== Screen layout
-
-Example of terminal with WeeChat:
-
-....
- ▼ bar "title"
-┌───────────────────────────────────────────────────────────────────────────┐
-│Welcome to #test, this is a test channel                                   │
-│12:52:27   --> | Flashy (flashcode@weechat.org) has joined #test   │@Flashy│
-│12:52:27    -- | Nicks #test: [@Flashy @joe +weebot peter]         │@joe   │
-│12:52:27    -- | Channel #test: 4 nicks (2 ops, 1 voice, 1 normal) │+weebot│
-│12:52:27    -- | Channel created on Tue Jan 27 06:30:17 2009       │peter  │
-│12:54:15 peter | hey!                                              │       │
-│12:55:01  @joe | hello                                             │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│[12:55] [6] [irc/freenode] 3:#test(+n){4}* [H: 4:#abc(2,5), 6]             │
-│[@Flashy(i)] hi peter!█                                                    │
-└───────────────────────────────────────────────────────────────────────────┘
- ▲ bars "status" and "input"                               bar "nicklist" ▲
-....
-
-Screen is composed by following areas:
-
-* chat area (middle of screen) with chat lines, and for each line:
-** time
-** prefix (before "|")
-** message (after "|")
-* bars around chat area, default bars are:
-** _title_ bar, above chat area
-** _status_ bar, below chat area
-** _input_ bar, below status bar
-** _nicklist_ bar, on the right
-
-Bar _status_ has following default items:
-
-[width="100%",cols="^3,^4,10",options="header"]
-|===
-| Item                  | Example               | Description
-| time                  | `[12:55]`             | Time
-| buffer_last_number    | `[6]`                 | Number of last buffer in list
-| buffer_plugin         | `[irc/freenode]`      | Plugin of current buffer (irc plugin can add IRC server name used by buffer)
-| buffer_number         | `3`                   | Current buffer number
-| buffer_name           | `#test`               | Current buffer name
-| buffer_modes          | `+n`                  | IRC channel modes
-| buffer_nicklist_count | `{4}`                 | Number of nicks in nicklist
-| buffer_zoom           | !                     | `!` means the merged buffer is zoomed (only this one is displayed), empty value means all merged buffers are displayed
-| buffer_filter         | `+*+`                 | Filtering indicator: `+*+` means some lines are filtered (hidden), empty value means all lines are displayed
-| scroll                | `-MORE(50)-`          | Scroll indicator, with number of lines below last line displayed
-| lag                   | `[Lag: 2.5]`          | Lag indicator, in seconds (hidden if lag is low)
-| hotlist               | `[H: 4:#abc(2,5), 6]` | List of buffers with activity (unread messages) (in example, 2 highlights and 5 unread messages on _#abc_, one unread message on buffer #6)
-| completion            | `abc(2) def(5)`       | List of words for completion, with number of possible completions for each word
-|===
-
-Bar _input_ has following default items:
-
-[width="100%",cols="^3,^4,10",options="header"]
-|===
-| Item         | Example                                      | Description
-| input_prompt | `[@Flashy(i)]`                               | Input prompt, for irc: nick and modes (mode "+i" means invisible on freenode)
-| away         | `(away)`                                     | Away indicator
-| input_search | `[Search (~ str,msg)]`                       | Search indicator ("`~`": case insensitive, "`==`": case sensitive, "`str`": search string, "`regex`": search regular expression, "`msg`": search in messages, "`pre`": search in prefixes, "`pre\|msg`": search in prefixes and messages)
-| input_paste  | `[Paste 7 lines ? [ctrl-Y] Yes [ctrl-N] No]` | Question to user for pasting lines
-| input_text   | `hi peter!`                                  | Input text
-|===
-
-Other items available (not used in bars by default):
-
-[width="100%",cols="^3,^4,10",options="header"]
-|===
-| Item              | Example             | Description
-| aspell_dict       | `fr,en`             | Spelling dictionaries used on current buffer
-| aspell_suggest    | `print,prone,prune` | Spelling suggestions for word under cursor (if misspelled)
-| buffer_count      | `10`                | Total number of buffers opened
-| buffer_short_name | `#test`             | Current buffer short name
-| irc_channel       | `#test`             | Current IRC channel name
-| irc_nick_modes    | `@`                 | IRC modes for self nick
-| mouse_status      | `M`                 | Mouse status (empty if mouse is disabled)
-| window_number     | `2`                 | Current window number
-|===
-
-[[buffers_and_windows]]
-=== Buffers and windows
-
-A _buffer_ is composed by a number, a name, lines displayed (and some other
-data).
-
-Examples of buffers:
-
-* core buffer (created by WeeChat on startup, can not be closed)
-* irc server (displays messages from server)
-* irc channel
-* irc private
-
-A _window_ is a screen area which displays a buffer. It is possible to split
-your screen into many windows.
-
-Each window displays one buffer. A buffer can be hidden (not displayed by a
-window) or displayed by one or more windows.
-
-Example of horizontal split (`/window splith`):
-
-....
-                          ▼ window #2 (buffer #4)
-┌───────────────────────────────────────────────────────────────────────────┐
-│Welcome to #abc                                                            │
-│12:55:12     Max | hi                                              │@Flashy│
-│12:55:20 @Flashy | hi Max!                                         │Max    │
-│12:55:32     Max | how are you?                                    │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│[12:55] [6] [irc/freenode] 4:#abc(+n){2}                                   │
-│[@Flashy]                                                                  │
-│───────────────────────────────────────────────────────────────────────────│
-│Welcome to #test                                                           │
-│12:54:15 peter | hey!                                              │@Flashy│
-│12:55:01  @joe | hello                                             │@joe   │
-│                                                                   │+weebot│
-│                                                                   │peter  │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│[12:55] [6] [irc/freenode] 3:#test(+n){4}                                  │
-│[@Flashy] hi peter!█                                                       │
-└───────────────────────────────────────────────────────────────────────────┘
-                          ▲ window #1 (buffer #3)
-....
-
-Example of vertical split (`/window splitv`):
-
-....
-┌───────────────────────────────────────────────────────────────────────────┐
-│Welcome to #test                     │Welcome to #abc                      │
-│12:54:15 peter | hey!        │@Flashy│12:55:12     Max | hi        │@Flashy│
-│12:55:01  @joe | hello       │@joe   │12:55:20 @Flashy | hi Max!   │Max    │
-│                             │+weebot│                             │       │
-│                             │peter  │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│[12:55] [irc/oftc] 3:#test(+n){4}    │[12:55] [irc/oftc] 4:#abc(+n){2}     │
-│[@Flashy] hi peter!█                 │[@Flashy]                            │
-└───────────────────────────────────────────────────────────────────────────┘
-      ▲ window #1 (buffer #3)               ▲ window #2 (buffer #4)
-....
-
-Example of vertical + horizontal splits:
-
-....
-                                            ▼ window #3 (buffer #5)
-┌───────────────────────────────────────────────────────────────────────────┐
-│Welcome to #test                     │Welcome to #def                      │
-│12:54:15 peter | hey!        │@Flashy│12:55:42 @Flashy | hi        │@Flashy│
-│12:55:01  @joe | hello       │@joe   │12:55:56    alex | hi Flashy │alex   │
-│                             │+weebot│                             │       │
-│                             │peter  │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │[12:55] [irc/oftc] 5:#def(+n){2}     │
-│                             │       │[@Flashy]                            │
-│                             │       │─────────────────────────────────────│
-│                             │       │Welcome to #abc                      │
-│                             │       │12:55:12     Max | hi        │@Flashy│
-│                             │       │12:55:20 @Flashy | hi Max!   │Max    │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│                             │       │                             │       │
-│[12:55] [irc/oftc] 3:#test(+n){4}    │[12:55] [irc/oftc] 4:#abc(+n){2}     │
-│[@Flashy] hi peter!█                 │[@Flashy]                            │
-└───────────────────────────────────────────────────────────────────────────┘
-      ▲ window #1 (buffer #3)               ▲ window #2 (buffer #4)
-....
-
-[[bars]]
-=== Bars
-
-A _bar_ is an area beside the chat that can contain any type of text.
-
-The bar options can be set with options `weechat.bar.name.option` where `name`
-is the name of the bar and `option` the option for this bar.
-
-List of bar options:
-
-[width="100%",cols="2m,2,10",options="header"]
-|===
-| Option | Values | Description
-
-| type | `root`, `window` |
-  A bar with type `root` is displayed exactly one time on screen, outside all
-  windows. There is no root bar by default, but an example is the bar _buffers_
-  created by script _buffers.pl_ (sidebar with list of buffers). +
-  A bar with type `window` is displayed in each window, for example if you
-  split one time the screen (with `/window splith` or `/window splitv`), you
-  will have one bar in each window. The four default bars (_title_, _status_,
-  _input_, _nicklist_) have type `window`.
-
-| position | `top`, `bottom`, `left`, `right` |
-  Position of the bar: above/below chat, on the left/right.
-
-| priority | integer ≥ 0 |
-  Priority for display of bar: this is used for ordering the bars on screen when
-  many bars have same type and position. +
-  The bars are displayed from the edge of the screen to the center. A higher
-  priority will display bar at the beginning, so closer to the edge. +
-  Example: _input_ bar has priority 1000, so it is displayed before the _status_
-  bar, which has priority 500.
-
-| size | integer ≥ 0 |
-  The size of the bar: number of columns for position left/right, number
-  of lines for position top/bottom. A size of `0` means automatic, so the size
-  will be computed according to content displayed in bar.
-
-| size_max | integer ≥ 0 |
-  The maximum size for a bar, `0` = no limit (this option is used only if
-  `size` = `0`).
-
-| color_bg | color |
-  The default background color for the bar.
-
-| color_fg | color |
-  The default text color for the bar.
-
-| color_delim | color |
-  The color for delimiters in bar.
-
-| hidden | `on`, `off` |
-  When option is `on`, the bar is hidden. +
-  Note: instead of changing this option, the command `/bar` is preferred, for
-  example: `/bar toggle nicklist` (see command <<command_weechat_bar,/bar>>).
-
-| separator | `on`, `off` |
-  When option is `on`, a separator (line) is displayed between this bar and
-  other bars (or chat).
-
-| items | string |
-  A list of _items_ (see <<bar_items,items>> for more info).
-
-| filling_left_right | `horizontal`, `vertical`, `columns_horizontal`, `columns_vertical` |
-  Type of filling for a bar which has position `left` or `right` (see
-  <<bar_filling,filling>> for more info).
-
-| filling_top_bottom | `horizontal`, `vertical`, `columns_horizontal`, `columns_vertical` |
-  Type of filling for a bar which has position `top` or `bottom` (see
-  <<bar_filling,filling>> for more info).
-
-| conditions | string |
-  The conditions to display the bar (see <<bar_conditions,conditions>> for more
-  info).
-|===
-
-[[bar_items]]
-==== Items
-
-The option _items_ is a string with a list of bar items, separated by a comma
-(space between items on screen) or "+" (glued items).
-
-The list of bar items is displayed with command `/bar listitems`.
-
-Before or after item name, you can use chars (that are not alphanumeric, "-" or
-"_"). They will be displayed before/after item with the delimiters color
-defined in bar (option _color_delim_).
-
-Example of bar with items "[time],buffer_number+:+buffer_plugin+.+buffer_name":
-
-....
-┌───────────────────────────────────────────────────────────────────────────┐
-│[12:55] 3:irc/freenode.#weechat                                            │
-└───────────────────────────────────────────────────────────────────────────┘
-....
-
-A special syntax can be used to force the buffer used when displaying the bar
-item: "@buffer:item" (where "buffer" is the full name of buffer and "item" is
-the name of a bar item).
-
-This is useful in root bars, to display item for a specific buffer which is
-not displayed in the current window (or even not displayed at all).
-
-Example: nicklist of bitlbee in a root bar (if the bar is called
-_bitlist_ and if bitlbee server is called _bitlbee_):
-
-----
-/set weechat.bar.bitlist.items "@irc.bitlbee.&bitlbee:buffer_nicklist"
-----
-
-[[bar_filling]]
-==== Filling
-
-There are four types of filling:
-
-* `horizontal`: the items are displayed horizontally, from left to right. If
-  there are new lines in items, a space is used to separate lines.
-* `vertical`: the items are displayed from top to bottom. If there are new
-  lines in items, a new line is used to separate lines.
-* `columns_horizontal`: items are displayed using columns, where text is
-  aligned on the left. The first item is on top left, the second is on same
-  line, on the right.
-* `columns_vertical`: items are displayed using columns, where text is aligned
-  on the left. The first item is on top left, the second is one line below.
-
-Default bars _title_, _status_ and _input_ have _horizontal_ filling, and
-default bar _nicklist_ has _vertical_ filling.
-
-Some examples of filling for bar _nicklist_:
-
-....
-┌───────────────────────────────────────────────────────────────────────┐
-│Welcome to #test, this is a test channel                               │
-│12:54:15 peter | hey!                                         │@carl   │
-│12:55:01  +Max | hello                                        │@jessika│
-│                                                              │@maddy  │
-│                                                              │%Diego  │
-│                                                              │%Melody │
-│                                                              │+Max    │
-│                                                              │ celia  │
-│                                                              │ Eva    │
-│                                                              │ freddy │
-│                                                              │ Harold^│
-│                                                              │ henry4 │
-│                                                              │ jimmy17│
-│                                                              │ jodie ▼│
-│[12:55] [6] [irc/freenode] 3:#test(+n){24}                             │
-│[@carl] █                                                              │
-└───────────────────────────────────────────────────────────────────────┘
-                                     filling_left_right = vertical ▲
-
-┌───────────────────────────────────────────────────────────────────────┐
-│Welcome to #test, this is a test channel                               │
-│12:54:15 peter | hey!                                │@carl     lee    │
-│12:55:01  +Max | hello                               │@jessika  louise │
-│                                                     │@maddy    mario  │
-│                                                     │%Diego    mark   │
-│                                                     │%Melody   peter  │
-│                                                     │+Max      Rachel │
-│                                                     │ celia    richard│
-│                                                     │ Eva      sheryl │
-│                                                     │ freddy   Vince  │
-│                                                     │ Harold^  warren │
-│                                                     │ henry4   zack   │
-│                                                     │ jimmy17         │
-│                                                     │ jodie           │
-│[12:55] [6] [irc/freenode] 3:#test(+n){24}                             │
-│[@carl] █                                                              │
-└───────────────────────────────────────────────────────────────────────┘
-                             filling_left_right = columns_vertical ▲
-
-┌───────────────────────────────────────────────────────────────────────┐
-│@carl    %Diego    celia    Harold^  jodie    mario    Rachel   Vince  │
-│@jessika %Melody   Eva      henry4   lee      mark     richard  warren │
-│@maddy   +Max      freddy   jimmy17  louise   peter    sheryl   zack   │
-│───────────────────────────────────────────────────────────────────────│
-│                                                                       │
-        filling_top_bottom = columns_vertical ▲
-
-┌───────────────────────────────────────────────────────────────────────┐
-│@carl    @jessika @maddy   %Diego   %Melody  +Max      celia    Eva    │
-│ freddy   Harold^  henry4   jimmy17  jodie    lee      louise   mario  │
-│ mark     peter    Rachel   richard  sheryl   Vince    warren   zack   │
-│───────────────────────────────────────────────────────────────────────│
-│                                                                       │
-      filling_top_bottom = columns_horizontal ▲
-....
-
-[[bar_conditions]]
-==== Conditions
-
-The option _conditions_ is a string which is evaluated to know if the bar
-must be displayed or not.
-
-The string can be:
-
-* _active_: the window must be active
-* _inactive_: the window must be inactive
-* _nicklist_: the buffer displayed in window must have a nicklist
-* an expression: it is evaluated as boolean (see command
-  <<command_weechat_eval,/eval>>)
-
-For the expression, following variables are available:
-
-* `${active}`: true if window is active
-* `${inactive}`: true if window is inactive
-* `${nicklist}`: true if buffer displayed in window has a nicklist
-
-Following pointers are available:
-
-* `${window}`: the window where condition is evaluated
-* `${buffer}`: the buffer of window where condition is evaluated
-
-Example to display nicklist bar in all buffers with a nicklist, and only if
-width of window is > 100 :
-
-----
-/set weechat.bar.nicklist.conditions "${nicklist} && ${window.win_width} > 100"
-----
-
-Same condition, but always display nicklist on buffer _&bitlbee_ (even if window
-is small):
-
-----
-/set weechat.bar.nicklist.conditions "${nicklist} && (${window.win_width} > 100 || ${buffer.full_name} == irc.bitlbee.&bitlbee)"
-----
-
-[[bare_display]]
-=== Bare display
-
-A special display, called "bare display" can be used for easy click on long URLs
-and selection of text (using the mouse).
-
-The bare display has following features:
-
-* it displays only the content of current buffer: no window split neither bars
-  (no title, nicklist, status, input, ...)
-* the WeeChat mouse support is disabled (if it was enabled): you can use your
-  mouse like you do in the terminal to click on URLs and select text
-* ncurses is not used, therefore URLs are not cut at the end of lines.
-
-The default key to enabled bare display is kbd:[Alt+l], and same key to exit (or
-by default anything changing the input will exit the bare display, see option
-<<option_weechat.look.bare_display_exit_on_input,weechat.look.bare_display_exit_on_input>>).
-
-The time format can be customized with the option
-<<option_weechat.look.bare_display_time_format,weechat.look.bare_display_time_format>>.
-
-The bare display can be enabled for a specific delay using the command
-<<command_weechat_window,/window>>.
-
-If WeeChat looks like that:
-
-....
-┌───────────────────────────────────────────────────────────────────────────┐
-│Welcome to #test, this is a test channel                                   │
-│12:52:27   --> | Flashy (flashcode@weechat.org) has joined #test   │@Flashy│
-│12:52:27    -- | Nicks #test: [@Flashy @joe +weebot peter]         │@joe   │
-│12:52:27    -- | Channel #test: 4 nicks (2 ops, 1 voice, 1 normal) │+weebot│
-│12:52:27    -- | Channel created on Tue Jan 27 06:30:17 2009       │peter  │
-│12:54:15 peter | hey!                                              │       │
-│12:55:01  @joe | peter: hook_process: https://weechat.org/files/do │       │
-│               | c/devel/weechat_plugin_api.en.html#_weechat_hook_ │       │
-│               | process                                           │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│                                                                   │       │
-│[12:55] [6] [irc/freenode] 3:#test(+n){4}* [H: 4:#abc(2,5), 6]             │
-│[@Flashy(i)] hi peter!█                                                    │
-└───────────────────────────────────────────────────────────────────────────┘
-....
-
-The screen will look like that in bare display:
-
-....
-┌───────────────────────────────────────────────────────────────────────────┐
-│                                                                           │
-│                                                                           │
-│                                                                           │
-│                                                                           │
-│                                                                           │
-│                                                                           │
-│                                                                           │
-│                                                                           │
-│                                                                           │
-│                                                                           │
-│                                                                           │
-│                                                                           │
-│                                                                           │
-│12:52 --> Flashy (flashcode@weechat.org) has joined #test                  │
-│12:52 -- Nicks #test: [@Flashy @joe +weebot peter]                         │
-│12:52 -- Channel #test: 4 nicks (2 ops, 1 voice, 1 normal)                 │
-│12:52 -- Channel created on Tue Jan 27 06:30:17 2009                       │
-│12:54 <peter> hey!                                                         │
-│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/devel/weech│
-│at_plugin_api.en.html#_weechat_hook_process                                │
-└───────────────────────────────────────────────────────────────────────────┘
-....
-
-So you can click the URL from _joe_ without any problem in your terminal (of
-course this supposes that your terminal supports click on URLs).
-
-[[notify_levels]]
-=== Notify levels
-
-Four levels are possible in messages displayed in buffers, from lower to higher:
-
-* _low_: message with low importance (for example irc join/part/quit)
-* _message_: message from a user
-* _private_: message in a private buffer
-* _highlight_: message with highlight
-
-Each buffer has a notify level, which is used to decide what messages will add
-buffer in hotlist.
-
-The default notify level can be set using option
-<<option_weechat.look.buffer_notify_default,weechat.look.buffer_notify_default>>,
-default is _all_.
-
-[width="50%",cols="3m,10",options="header"]
-|===
-| Notify level | Level of messages added to hotlist
-| none         | (none)
-| highlight    | _highlight_ + _private_
-| message      | _highlight_ + _private_ + _message_
-| all          | _highlight_ + _private_ + _message_ + _low_
-|===
-
-Notify level can be defined for a set of buffers, for example all buffers of
-irc server "freenode":
-
-----
-/set weechat.notify.irc.freenode message
-----
-
-Set notify level _highlight_ on channel "#weechat" only:
-
-----
-/set weechat.notify.irc.freenode.#weechat highlight
-----
-
-The notify level for a buffer can be set with command `/buffer`:
-
-----
-/buffer notify highlight
-----
-
-[[key_bindings]]
-=== Default key bindings
-
-[[key_bindings_command_line]]
-==== Keys for command line
-
-[width="100%",cols="^.^3,.^8,.^5",options="header"]
-|===
-| Key             | Description | Command
-| kbd:[←] +
-  kbd:[Ctrl+b]    | Go to previous char in command line | `/input move_previous_char`
-| kbd:[→] +
-  kbd:[Ctrl+f]    | Go to next char in command line | `/input move_next_char`
-| kbd:[Ctrl+←] +
-  kbd:[Alt+b]     | Go to previous word in command line | `/input move_previous_word`
-| kbd:[Ctrl+→] +
-  kbd:[Alt+f]     | Go to next word in command line | `/input move_next_word`
-| kbd:[Home] +
-  kbd:[Ctrl+a]    | Go to the beginning of command line | `/input move_beginning_of_line`
-| kbd:[End] +
-  kbd:[Ctrl+e]    | Go to the end of command line | `/input move_end_of_line`
-| kbd:[Ctrl+c],
-  kbd:[b]         | Insert code for bold text | `/input insert \x02`
-| kbd:[Ctrl+c],
-  kbd:[c]         | Insert code for colored text | `/input insert \x03`
-| kbd:[Ctrl+c],
-  kbd:[i]         | Insert code for italic text | `/input insert \x1D`
-| kbd:[Ctrl+c],
-  kbd:[o]         | Insert code for color reset | `/input insert \x0F`
-| kbd:[Ctrl+c],
-  kbd:[v]         | Insert code for reverse color | `/input insert \x16`
-| kbd:[Ctrl+c],
-  kbd:[_]         | Insert code for underlined text | `/input insert \x1F`
-| kbd:[Del] +
-  kbd:[Ctrl+d]    | Delete next char in command line | `/input delete_next_char`
-| kbd:[Backsp.] +
-  kbd:[Ctrl+h]    | Delete previous char in command line | `/input delete_previous_char`
-| kbd:[Ctrl+k]    | Delete from cursor until end of command line (deleted string is copied to clipboard) | `/input delete_end_of_line`
-| kbd:[Ctrl+r]    | Search for text in buffer history (see <<key_bindings_search_context,keys for search context>>) | `/input search_text_here`
-| kbd:[Ctrl+t]    | Transpose chars | `/input transpose_chars`
-| kbd:[Ctrl+u]    | Delete from cursor until beginning of command line (deleted string is copied to clipboard) | `/input delete_beginning_of_line`
-| kbd:[Ctrl+w]    | Delete previous word of command line (deleted string is copied to clipboard) | `/input delete_previous_word`
-| kbd:[Ctrl+y]    | Paste clipboard content | `/input clipboard_paste`
-| kbd:[Ctrl+_]    | Undo last action on command line | `/input undo`
-| kbd:[Alt+_]     | Redo last action on command line | `/input redo`
-| kbd:[Tab]       | Complete command or nick (kbd:[Tab] again: find next completion) | `/input complete_next`
-| kbd:[Shift+Tab] | Without completion: do a partial completion, with pending completion: complete with previous completion | `/input complete_previous`
-| kbd:[Enter] +
-  kbd:[Ctrl+j] +
-  kbd:[Ctrl+m]    | Execute command or send message (in search mode: stop search) | `/input return`
-| kbd:[↑]         | Call previous command/message (in search mode: search up) | `/input history_previous`
-| kbd:[↓]         | Call next command/message (in search mode: search down) | `/input history_next`
-| kbd:[Ctrl+↑]    | Call previous command/message in global history (common for all buffers) | `/input history_global_previous`
-| kbd:[Ctrl+↓]    | Call next command/message in global history (common for all buffers) | `/input history_global_next`
-| kbd:[Alt+d]     | Delete next word in command line (deleted string is copied to clipboard) | `/input delete_next_word`
-| kbd:[Alt+k]     |  Grab a key and insert its code (and command bound if key exists) in command line | `/input grab_key_command`
-| kbd:[Alt+r]     | Delete entire command line | `/input delete_line`
-| kbd:[Alt+s]     | Toggle aspell | `/mute aspell toggle`
-|===
-
-[[key_bindings_buffers_windows]]
-==== Keys for buffers / windows
-
-[width="100%",cols="^.^3,.^8,.^5",options="header"]
-|===
-| Key             | Description | Command
-| kbd:[Ctrl+l]    | Redraw whole window | `/window refresh`
-| kbd:[Ctrl+s],
-  kbd:[Ctrl+u]    | Set unread marker on all buffers | `/input set_unread`
-| kbd:[Ctrl+x]    | Switch current buffer if buffers are attached with same number | `/input switch_active_buffer`
-| kbd:[Alt+x]     | Zoom on merged buffer (kbd:[Alt+x] again: display all merged buffers) | `/input zoom_merged_buffer`
-| kbd:[PgUp]      | Scroll up one page in buffer history | `/window page_up`
-| kbd:[PgDn]      | Scroll down one page in buffer history | `/window page_down`
-| kbd:[Alt+PgUp]  | Scroll up a few lines in buffer history | `/window scroll_up`
-| kbd:[Alt+PgDn]  | Scroll down a few lines in buffer history | `/window scroll_down`
-| kbd:[Alt+Home]  | Scroll to top of buffer | `/window scroll_top`
-| kbd:[Alt+End]   | Scroll to bottom of buffer | `/window scroll_bottom`
-| kbd:[Alt+←] +
-  kbd:[Alt+↑] +
-  kbd:[Ctrl+p] +
-  kbd:[F5]        | Switch to previous buffer | `/buffer -1`
-| kbd:[Alt+→] +
-  kbd:[Alt+↓] +
-  kbd:[Ctrl+n] +
-  kbd:[F6]        | Switch to next buffer | `/buffer +1`
-| kbd:[F7]        | Switch to previous window | `/window -1`
-| kbd:[F8]        | Switch to next window | `/window +1`
-| kbd:[F9]        | Scroll buffer's title on the left | `+/bar scroll title * -30%+`
-| kbd:[F10]       | Scroll buffer's title on the right | `+/bar scroll title * +30%+`
-| kbd:[F11]       | Scroll up one page in nicklist | `/bar scroll nicklist * -100%`
-| kbd:[F12]       | Scroll down one page in nicklist | `/bar scroll nicklist * +100%`
-| kbd:[Alt+F11]   | Go to the beginning of nicklist | `/bar scroll nicklist * b`
-| kbd:[Alt+F12]   | Go to the end of nicklist | `/bar scroll nicklist * e`
-| kbd:[Alt+a]     | Switch to next buffer with activity (with priority: highlight, message, other) | `/input jump_smart`
-| kbd:[Alt+h]     | Clear hotlist (activity notification on other buffers) | `/input hotlist_clear`
-| kbd:[Alt+j],
-  kbd:[Alt+f]     | Switch to first buffer | `/buffer -`
-| kbd:[Alt+j],
-  kbd:[Alt+l]     | Switch to last buffer | `/buffer +`
-| kbd:[Alt+j],
-  kbd:[Alt+r]     | Switch to IRC raw buffer | `/server raw`
-| kbd:[Alt+j],
-  kbd:[Alt+s]     | Switch to IRC server buffer | `/server jump`
-| kbd:[Alt+0...9] | Switch to buffer by number (0 = 10) | `/buffer *N`
-| kbd:[Alt+j],
-  kbd:[01...99]   | Switch to buffer by number | `/buffer *NN`
-| kbd:[Alt+l]     | Toggle bare display on/off | `/window bare`
-| kbd:[Alt+m]     | Toggle mouse | `/mouse toggle`
-| kbd:[Alt+n]     | Scroll to next highlight | `/window scroll_next_highlight`
-| kbd:[Alt+p]     | Scroll to previous highlight | `/window scroll_previous_highlight`
-| kbd:[Alt+u]     | Scroll to first unread line in buffer | `/window scroll_unread`
-| kbd:[Alt+w],
-  kbd:[Alt+↑]     | Switch to window above | `/window up`
-| kbd:[Alt+w],
-  kbd:[Alt+↓]     | Switch to window below | `/window down`
-| kbd:[Alt+w],
-  kbd:[Alt+←]     | Switch to window on the left | `/window left`
-| kbd:[Alt+w],
-  kbd:[Alt+→]     | Switch to window on the right | `/window right`
-| kbd:[Alt+w],
-  kbd:[Alt+b]     | Balance the sizes of all windows | `/window balance`
-| kbd:[Alt+w],
-  kbd:[Alt+s]     | Swap buffers of two windows | `/window swap`
-| kbd:[Alt+z]     | Zoom on current window (kbd:[Alt+z] again: restore initial windows state, before zoom) | `/window zoom`
-| kbd:[Alt+<]     | Switch to previous buffer in list of visited buffers | `/input jump_previously_visited_buffer`
-| kbd:[Alt+>]     | Switch to next buffer in list of visited buffers | `/input jump_next_visited_buffer`
-| kbd:[Alt+/]     | Switch to last buffer displayed (before last jump to a buffer) | `/input jump_last_buffer_displayed`
-| kbd:[Alt+=]     | Toggle filters on/off | `/filter toggle`
-| kbd:[Alt+-]     | Toggle filters on/off in current buffer | `/filter toggle @`
-|===
-
-[[key_bindings_search_context]]
-==== Keys for "search" context
-
-These keys are used in context "search" (when kbd:[Ctrl+r] is pressed to search
-text in buffer).
-
-[width="100%",cols="^.^3,.^8,.^5",options="header"]
-|===
-| Key            | Description | Command
-| kbd:[Ctrl+r]   | Switch search type: string (default), regular expression | `/input search_switch_regex`
-| kbd:[Alt+c]    | Switch exact case for search | `/input search_switch_case`
-| kbd:[Tab]      | Switch search in: messages (default), prefixes, prefixes + messages | `/input search_switch_where`
-| kbd:[↑]        | Search previous line | `/input search_previous`
-| kbd:[↓]        | Search next line | `/input search_next`
-| kbd:[Enter] +
-  kbd:[Ctrl+j] +
-  kbd:[Ctrl+m]   | Stop search at current position | `/input search_stop_here`
-| kbd:[Ctrl+q]   | Stop search and scroll to bottom of buffer | `/input search_stop`
-|===
-
-[[key_bindings_cursor_context]]
-==== Keys for "cursor" context
-
-These keys are used in context "cursor" (free movement of cursor on screen).
-
-[width="100%",cols="^.^3,^.^2,.^7,.^7",options="header"]
-|===
-| Key            | Area     | Description | Command
-| kbd:[↑]        | -        | Move cursor one line up | `/cursor move up`
-| kbd:[↓]        | -        | Move cursor one line down | `/cursor move down`
-| kbd:[←]        | -        | Move cursor one column left | `/cursor move left`
-| kbd:[→]        | -        | Move cursor one column right | `/cursor move right`
-| kbd:[Alt+↑]    | -        | Move cursor one area up | `/cursor move area_up`
-| kbd:[Alt+↓]    | -        | Move cursor one area down | `/cursor move area_down`
-| kbd:[Alt+←]    | -        | Move cursor one area left | `/cursor move area_left`
-| kbd:[Alt+→]    | -        | Move cursor one area right | `/cursor move area_right`
-| kbd:[m]        | chat     | Quote message | `hsignal:chat_quote_message;/cursor stop`
-| kbd:[q]        | chat     | Quote prefix + message | `hsignal:chat_quote_prefix_message;/cursor stop`
-| kbd:[Q]        | chat     | Quote time + prefix + message | `hsignal:chat_quote_time_prefix_message;/cursor stop`
-| kbd:[b]        | nicklist | Ban nick | `/window ${_window_number};/ban ${nick}`
-| kbd:[k]        | nicklist | Kick nick | `/window ${_window_number};/kick ${nick}`
-| kbd:[K]        | nicklist | Kick and ban nick | `/window ${_window_number};/kickban ${nick}`
-| kbd:[q]        | nicklist | Open query with nick | `/window ${_window_number};/query ${nick};/cursor stop`
-| kbd:[w]        | nicklist | Do a whois on nick | `/window ${_window_number};/whois ${nick}`
-| kbd:[Enter] +
-  kbd:[Ctrl+j] +
-  kbd:[Ctrl+m]   | -        | Stop cursor mode | `/cursor stop`
-|===
-
-[[key_bindings_mouse_context]]
-==== Keys for "mouse" context
-
-These keys are used in context "mouse", namely when a mouse event occurs.
-
-[width="100%",cols="^.^3,^.^3,^.^3,.^8,.^8",options="header"]
-|===
-| Button ^(1)^ | Gesture      | Area                 | Description | Command
-| ◾◽◽          | -            | chat                 | Switch to window | `/window ${_window_number}`
-| ◾◽◽          | left         | chat                 | Switch to previous buffer | `/window ${_window_number};/buffer +1`
-| ◾◽◽          | right        | chat                 | Switch to next buffer | `/window ${_window_number};/buffer +1`
-| ◾◽◽          | left (long)  | chat                 | Switch to first buffer | `/window ${_window_number};/buffer 1`
-| ◾◽◽          | right (long) | chat                 | Switch to last buffer | `/window ${_window_number};/input jump_last_buffer`
-| ◾◽◽          | -            | chat (script buffer) | Select line in script buffer | `/script go ${_chat_line_y}`
-| ◽◽◾          | -            | chat (script buffer) | Install/remove script | `/script go ${_chat_line_y};/script installremove -q ${script_name_with_extension}`
-| ⇑            | -            | chat                 | Scroll up a few lines in buffer history | `/window scroll_up -window ${_window_number}`
-| ⇓            | -            | chat                 | Scroll down a few lines in buffer history | `/window scroll_down -window ${_window_number}`
-| ⇑            | -            | chat (script buffer) | Move 5 lines up in script buffer | `/script up 5`
-| ⇓            | -            | chat (script buffer) | Move 5 lines down in script buffer | `/script down 5`
-| kbd:[Ctrl+⇑] | -            | chat                 | Scroll horizontally to the left | `/window scroll_horiz -window ${_window_number} -10%`
-| kbd:[Ctrl+⇓] | -            | chat                 | Scroll horizontally to the right | `/window scroll_horiz -window ${_window_number} +10%`
-| ◾◽◽          | up           | nicklist             | Scroll up one page in nicklist | `/bar scroll nicklist ${_window_number} -100%`
-| ◾◽◽          | down         | nicklist             | Scroll down one page in nicklist | `/bar scroll nicklist ${_window_number} +100%`
-| ◾◽◽          | up (long)    | nicklist             | Go to the beginning of nicklist | `/bar scroll nicklist ${_window_number} b`
-| ◾◽◽          | down (long)  | nicklist             | Go to the end of nicklist | `/bar scroll nicklist ${_window_number} e`
-| ◾◽◽          | -            | nicklist             | Open query with nick | `/window ${_window_number};/query ${nick}`
-| ◽◽◾          | -            | nicklist             | Do a whois on nick | `/window ${_window_number};/whois ${nick}`
-| ◾◽◽          | left         | nicklist             | Kick nick | `/window ${_window_number};/kick ${nick}`
-| ◾◽◽          | left (long)  | nicklist             | Kick and ban nick | `/window ${_window_number};/kickban ${nick}`
-| ◽◽◾          | left         | nicklist             | Ban nick | `/window ${_window_number};/ban ${nick}`
-| ◽◽◾          | -            | input                | Grab a mouse event and insert its code in command line | `/input grab_mouse_area`
-| ⇑            | -            | any bar              | Scroll bar by -20% | `/bar scroll ${_bar_name} ${_window_number} -20%`
-| ⇓            | -            | any bar              | Scroll bar by +20% | `/bar scroll ${_bar_name} ${_window_number} +20%`
-| ◽◾◽          | -            | anywhere             | Start cursor mode at this point | `/cursor go ${_x},${_y}`
-|===
-
-[NOTE]
-^(1)^ "⇑" and "⇓" are wheel up and down.
-
-[[mouse]]
-=== Mouse support
-
-WeeChat supports mouse clicks and gestures. It is working with local terminal,
-and remotely via ssh connection with or without screen/tmux.
-
-[[mouse_enable]]
-==== Enable mouse
-
-To enable mouse at startup:
-
-----
-/set weechat.look.mouse on
-----
-
-To enable mouse now, press kbd:[Alt+m] or do following command:
-
-----
-/mouse enable
-----
-
-It is possible to temporarily disable mouse, and bind that on a key. For example
-key kbd:[Alt+%] to disable mouse for 10 seconds:
-
-----
-/key bind meta-% /mouse toggle 10
-----
-
-[IMPORTANT]
-When mouse is enabled in WeeChat, all mouse events are caught by WeeChat, so
-actions such as copy/paste or clicks on URLs are not sent to the terminal. +
-Using kbd:[Shift] key causes the events to be sent directly to the terminal,
-as if the mouse was disabled (on some terminals like iTerm, you have to use
-kbd:[Alt] instead of kbd:[Shift]).
-
-[NOTE]
-For any problem with mouse, please look at _WeeChat FAQ_.
-
-[[mouse_bind_events]]
-==== Bind mouse events to commands
-
-Many default mouse events are already defined by WeeChat (see
-<<key_bindings_mouse_context,keys for "mouse" context>>).
-
-You can change or add bindings with the command `/key` using context "mouse"
-(for syntax, see command <<command_weechat_key,/key>>).
-
-Event name consists of a modifier (optional), a button/wheel name and a gesture
-(optional). Different elements are separated by "-".
-
-List of modifiers:
-
-[width="50%",cols="3m,4",options="header"]
-|===
-| Modifier | Description
-| ctrl     | Key kbd:[Ctrl]
-| alt      | Key kbd:[Alt]
-| ctrl-alt | Keys kbd:[Ctrl] + kbd:[Alt]
-|===
-
-List of buttons/wheel:
-
-[width="50%",cols="3m,4",options="header"]
-|===
-| Button/wheel        | Description
-| button1             | Click on left button
-| button2             | Click on right button
-| button3             | Click on middle button (often click on wheel)
-| button4 ... button9 | Click on extra buttons
-| wheelup             | Wheel (up)
-| wheeldown           | Wheel (down)
-|===
-
-List of gestures (only for buttons, not wheel):
-
-[width="50%",cols="3m,4",options="header"]
-|===
-| Gesture            | Distance
-| gesture-up         | 3 ... 19
-| gesture-up-long    | ≥ 20
-| gesture-down       | 3 ... 19
-| gesture-down-long  | ≥ 20
-| gesture-left       | 3 ... 39
-| gesture-left-long  | ≥ 40
-| gesture-right      | 3 ... 39
-| gesture-right-long | ≥ 40
-|===
-
-List of incomplete events (only for buttons, useful for plugins/scripts):
-
-[width="50%",cols="3m,4",options="header"]
-|===
-| Event      | Description
-| event-down | Button was pressed but not released yet
-| event-drag | Mouse was moved with button pressed down
-|===
-
-Example of events:
-
-* `button1`
-* `ctrl-button1`
-* `button1-gesture-right`
-* `button1-event-down`
-* `button1-event-drag`
-* `alt-button2-gesture-down-long`
-* `wheelup`
-* `ctrl-alt-wheeldown`
-* ...
-
-[TIP]
-When binding a key in context "mouse", it's possible to match many events using
-`+*+` at beginning or end of name, for example `+button1-gesture-*+` will match
-any gesture made using left button.
-
-[TIP]
-You can find an event name with command `/input grab_mouse` then doing event
-with mouse. This will insert event name on command line.
-
-[[command_line]]
-=== Command line
-
-WeeChat command line (at the bottom of window) lets you execute commands or
-send text to buffer.
-
-[[command_line_syntax]]
-==== Syntax
-
-Commands begin with "/" char, followed by name of command. For example, to see
-list of all options:
-
-----
-/set
-----
-
-Text sent to a buffer is any text that does not begin with "/" char.
-For example, to send text _hello_ on current buffer:
-
-----
-hello
-----
-
-However, it is possible to start with "/" char, by adding another.
-For example, to send text `/set` on current buffer:
-
-----
-//set
-----
-
-[[command_line_colors]]
-==== Color codes
-
-For some plugins like IRC, you can use color codes and attributes, as
-follow (press kbd:[Ctrl+c] then following letter, with optional value):
-
-[width="60%",cols="3,5",options="header"]
-|===
-| Key                    | Description
-| kbd:[Ctrl+c], kbd:[b]  | bold text
-| kbd:[Ctrl+c], kbd:[c],
-  kbd:[xx]               | text color `xx` (see list of colors below)
-| kbd:[Ctrl+c], kbd:[c],
-  kbd:[xx], kbd:[,],
-  kbd:[yy]               | text color `xx` and background `yy` (see list of colors below)
-| kbd:[Ctrl+c], kbd:[i]  | italic text
-| kbd:[Ctrl+c], kbd:[o]  | disable color and attributes
-| kbd:[Ctrl+c], kbd:[v]  | reverse video (revert text color with background)
-| kbd:[Ctrl+c], kbd:[_]  | underlined text
-|===
-
-[NOTE]
-The same code (without number for kbd:[Ctrl+c], kbd:[c]) can be used to stop the
-attribute.
-
-Color codes for kbd:[Ctrl+c], kbd:[c] are:
-
-include::autogen/user/irc_colors.asciidoc[]
-
-[NOTE]
-To show all available colors in your terminal, you can do `/color` then
-kbd:[Alt+c] in WeeChat or run this command in terminal: `weechat --colors`.
-
-Example: display of "hello everybody!" with "hello" in light blue bold and
-"everybody" in light red underlined:
-
-----
-^Cc12^Cbhello ^Cb^Cc04^C_everybody^C_^Cc!
-----
-
-[NOTE]
-In irc plugin, you can remap these colors using option
-<<option_irc.color.mirc_remap,irc.color.mirc_remap>>.
-
-[[colors]]
-=== Colors
-
-WeeChat can use up to 256 color pairs to display text in bars and chat area
-(your terminal must support 256 colors to use them in WeeChat).
-
-According to value of _TERM_ environment variable, you may have following limits
-for colors in WeeChat:
-
-[width="50%",cols="8,>2,>2",options="header"]
-|===
-| $TERM                                  | Colors | Pairs
-| "rxvt-unicode", "xterm", ...           |     88 |   256
-| "rxvt-256color", "xterm-256color", ... |    256 |   256
-| "screen"                               |      8 |    64
-| "screen-256color"                      |    256 |   256
-| "tmux"                                 |      8 |    64
-| "tmux-256color"                        |    256 |   256
-|===
-
-You can run `weechat --colors` or use command `/color` in WeeChat to
-display limits for your environment.
-
-Some recommended values for _TERM_ if you want 256 colors:
-
-* under screen: _screen-256color_
-* under tmux: _screen-256color_ or _tmux-256color_
-* outside screen/tmux: _xterm-256color_, _rxvt-256color_, _putty-256color_, ...
-
-[NOTE]
-You may have to install package "ncurses-term" to use these values in _TERM_
-variable.
-
-If you are using screen, you can add this line to your _~/.screenrc_:
-
-----
-term screen-256color
-----
-
-If your _TERM_ variable has wrong value and that WeeChat is already running,
-you can change it with these two commands:
-
-----
-/set env TERM screen-256color
-/upgrade
-----
-
-[[colors_basic]]
-==== Basic colors
-
-Basic colors in WeeChat are:
-
-[width="50%",cols="^3m,8",options="header"]
-|===
-| Name         | Color
-| default      | Default terminal color (transparent for background)
-| black        | Black
-| darkgray     | Dark gray
-| red          | Dark red
-| lightred     | Light red
-| green        | Dark green
-| lightgreen   | Light green
-| brown        | Brown
-| yellow       | Yellow
-| blue         | Dark blue
-| lightblue    | Light blue
-| magenta      | Dark magenta
-| lightmagenta | Light magenta
-| cyan         | Dark cyan
-| lightcyan    | Light cyan
-| gray         | Gray
-| white        | White
-|===
-
-[[colors_extended]]
-==== Extended colors
-
-WeeChat dynamically allocates color pairs when colors are used on screen (to
-display buffers and bars).
-
-In addition to basic colors, you can use a color number between 1 and the limit
-of your terminal.
-
-Use command `/color` to see current colors and limits. With kbd:[Alt+c] you can
-temporarily switch to terminal colors to choose a color.
-
-For example if you want to display time in orange in buffer, do:
-
-----
-/set weechat.color.chat_time 214
-----
-
-Or if you want a very dark green background for status bar:
-
-----
-/set weechat.bar.status.color_bg 22
-----
-
-[[colors_aliases]]
-==== Aliases
-
-You can add color aliases with command `/color alias` and then use this alias
-in any color option.
-
-For example:
-
-----
-/color alias 214 orange
-/set weechat.color.chat_delimiters orange
-----
-
-[[colors_attributes]]
-==== Attributes
-
-It is possible to use some attributes for colors. One or more attributes can be
-added before color name or number:
-
-* `+*+` : bold text
-* `+!+` : reverse video
-* `+/+` : italic
-* `+_+` : underlined text
-* `+|+` : keep attributes: do not reset bold/reverse/italic/underlined when
-  changing color
-
-For example if you want self nick as white underlined, do:
-
-----
-/set weechat.color.chat_nick_self _white
-----
-
-Or if you want time in status bar as orange underlined with bold:
-
-----
-/set weechat.color.status_time *_214
-----
-
-To use an attribute with default terminal color (-1), you must use a number
-greater than last terminal color, for example max color in WeeChat: 99999.
-
-Example of bold with terminal foreground color:
-
-----
-/set weechat.color.status_time *99999
-----
-
-[[secured_data]]
-=== Secured data
-
-[[secured_data_storage]]
-==== Storage
-
-WeeChat can encrypt passwords or private data using secured data, stored in file
-_sec.conf_.
-
-This configuration file is read before any other file, and the values stored
-inside can be used in various WeeChat or plugins/scripts options.
-
-You can set a passphrase to encrypt data in _sec.conf_. This is not mandatory
-but highly recommended, otherwise data is stored as plain text in file.
-
-----
-/secure passphrase this is my passphrase
-----
-
-When a passphrase is set, WeeChat will ask you to enter it on startup (but not
-on `/upgrade`).
-
-You can change this behavior and use a file with the passphrase (see option
-<<option_sec.crypt.passphrase_file,sec.crypt.passphrase_file>>).
-
-[[secured_data_encryption]]
-===== Encryption
-
-The encryption of data is made in 3 steps:
-
-. Derive a key from the passphrase (with optional salt).
-. Compute hash of data to encrypt.
-. Encrypt the hash + data (output is: salt + encrypted hash/data).
-
-[NOTE]
-The cipher block mode is _CFB_.
-
-The result is put as hexadecimal string in file _sec.conf_, for example:
-
-----
-[data]
-__passphrase__ = on
-freenode = "53B1C86FCDA28FC122A95B0456ABD79B5AB74654F21C3D099A6CCA8173239EEA59533A1D83011251F96778AC3F5166A394"
-----
-
-[[secured_data_decryption]]
-===== Decryption
-
-The decryption of data is made in 3 steps:
-
-. Derive a key using salt and passphrase.
-. Decrypt hash + data.
-. Check that decrypted hash == hash of data.
-
-[[secured_data_manage]]
-==== Manage secured data
-
-To add secured data, use `/secure set`, for example a password for _freenode_
-IRC server:
-
-----
-/secure set freenode mypassword
-----
-
-For comfort, secured data can be displayed in a dedicated buffer (kbd:[Alt+v] on
-buffer to see values), just do:
-
-----
-/secure
-----
-
-Secured data can be used in some options that can contain private data like
-password, using this format: "${sec.data.xxx}" where "xxx" is the name of
-secured data (used with `/secure set xxx ...`). +
-For a complete list of supported options, see `/help secure`.
-
-To use the _freenode_ password, for example with
-<<irc_sasl_authentication,SASL authentication>>:
-
-----
-/set irc.server.freenode.sasl_password "${sec.data.freenode}"
-----
-
-[[options_and_commands]]
-=== Options and commands
-
-[[sec_options]]
-==== Secured data options (sec.conf)
-
-Sections:
-
-[width="100%",cols="3m,6m,16",options="header"]
-|===
-| Section | Control command                    | Description
-| crypt   | /set sec.crypt.*                   | Options for encryption
-| data    | <<command_weechat_secure,/secure>> | Secured data
-|===
-
-Options:
-
-include::autogen/user/sec_options.asciidoc[]
-
-[[weechat_options]]
-==== WeeChat options (weechat.conf)
-
-Sections:
-
-[width="100%",cols="3m,6m,16",options="header"]
-|===
-| Section    | Control command                           | Description
-| debug      | <<command_weechat_debug,/debug set>>      +
-               /set weechat.debug.*                      | Debug level, for core and plugins (options can be added/removed in section)
-| startup    | /set weechat.startup.*                    | Startup options
-| look       | /set weechat.look.*                       | Look and feel
-| palette    | <<command_weechat_color,/color alias>>    +
-               /set weechat.palette.*                    | Color aliases (options can be added/removed in section)
-| color      | /set weechat.color.*                      | Colors
-| completion | /set weechat.completion.*                 | Completion options
-| history    | /set weechat.history.*                    | History options (commands and buffers)
-| proxy      | <<command_weechat_proxy,/proxy>>          +
-               /set weechat.proxy.*                      | Proxy options
-| network    | /set weechat.network.*                    | Network/SSL options
-| bar        | <<command_weechat_bar,/bar>>              +
-               /set weechat.bar.*                        | Bar options
-| layout     | <<command_weechat_layout,/layout>>        | Layouts
-| notify     | <<command_weechat_buffer,/buffer notify>> | Notify levels for buffers (options can be added/removed in section)
-| filter     | <<command_weechat_filter,/filter>>        | Filters
-| key        | <<command_weechat_key,/key>>              | Keys in default context
-| key_search | <<command_weechat_key,/key>>              | Keys in search context
-| key_cursor | <<command_weechat_key,/key>>              | Keys in cursor context
-| key_mouse  | <<command_weechat_key,/key>>              | Keys in mouse context
-|===
-
-Options:
-
-include::autogen/user/weechat_options.asciidoc[]
-
-[[weechat_commands]]
-==== WeeChat commands
-
-include::autogen/user/weechat_commands.asciidoc[]
-
-[[plugins]]
-== Plugins
-
-A plugin is a dynamic library, written in C and compiled, which is loaded by
-WeeChat.
-Under GNU/Linux, the file has ".so" extension, ".dll" under Windows.
-
-Plugins found are automatically loaded when WeeChat is starting, and it is
-possible to load or unload plugins while WeeChat is running.
-
-It's important to make difference between a _plugin_ and a _script_: a
-_plugin_ is a binary file compiled and loaded with command `/plugin`, whereas
-a _script_ is a text file loaded with a plugin like _python_ with command
-`/python`.
-
-You can use command `/plugin` to load/unload a plugin, or list all loaded
-plugins.
-When a plugin is unloaded, all buffers created by this plugin are
-automatically closed.
-
-Examples to load, unload or list plugins:
-
-----
-/plugin load irc
-/plugin unload irc
-/plugin list
-----
-
-Default plugins are:
-
-[width="100%",cols="^1,5",options="header"]
-|===
-| Plugin     | Description
-| alias      | Define alias for commands
-| aspell     | Spell checking for command line
-| charset    | Charset decoding/encoding for buffers
-| exec       | Execution of external commands in WeeChat
-| fifo       | FIFO pipe used to remotely send commands to WeeChat
-| irc        | IRC chat protocol
-| logger     | Log buffers to files
-| relay      | Relay data via network
-| script     | Scripts manager
-| python     | Python scripting API
-| perl       | Perl scripting API
-| ruby       | Ruby scripting API
-| lua        | Lua scripting API
-| tcl        | Tcl scripting API
-| guile      | Guile (scheme) scripting API
-| javascript | Javascript scripting API
-| trigger    | Text replacement and command execution on events triggered by WeeChat/plugins
-| xfer       | File transfer and direct chat
-|===
-
-To learn more about plugin or script development (through API), please read
-_WeeChat Plugin API Reference_ or _WeeChat Scripting Guide_.
-
-[[alias_plugin]]
-=== Alias plugin
-
-Alias plugin lets you create alias for commands (from WeeChat or other
-plugins).
-
-[[alias_commands]]
-==== Commands
-
-include::autogen/user/alias_commands.asciidoc[]
-
-[[aspell_plugin]]
-=== Aspell plugin
-
-Aspell plugin lets you check spelling in command line. It is possible to use
-many languages by buffer.
-
-[[aspell_options]]
-==== Options (aspell.conf)
-
-Sections:
-
-[width="100%",cols="3m,6m,16",options="header"]
-|===
-| Section    | Control command                           | Description
-| color      | /set aspell.color.*                       | Colors
-| check      | /set aspell.check.*                       | Options to control spell checking
-| dict       | <<command_aspell_aspell,/aspell setdict>> +
-               /set aspell.dict.*                        | Dictionaries used by buffer (options can be added/removed in section)
-| option     | /set aspell.option.*                      | <<aspell_speller_options,Speller options>> (options can be added/removed in section)
-|===
-
-Options:
-
-include::autogen/user/aspell_options.asciidoc[]
-
-[[aspell_commands]]
-==== Commands
-
-include::autogen/user/aspell_commands.asciidoc[]
-
-[[aspell_speller_options]]
-==== Speller options
-
-Speller options can be defined by adding options in section "option" of aspell
-configuration.
-
-The option name is an aspell configuration option. List of options can be found
-in a shell with following command:
-
-----
-$ aspell config
-----
-
-For example, to enable option "ignore-case":
-
-----
-/set aspell.option.ignore-case "true"
-----
-
-[[aspell_suggestions]]
-==== Suggestions
-
-Suggestions are displayed in a bar item called "aspell_suggest". The number of
-suggestions is set in option _aspell.check.suggestions_.
-
-To enable suggestions you must set option _aspell.check.suggestions_ to an
-integer ≥ 0 and add the bar item "aspell_suggest" to a bar, like _status_.
-
-Example of suggestions with English dictionary (`en`):
-
-....
-│[12:55] [6] [irc/freenode] 3:#test(+n){4} [print,prone,prune]                    │
-│[@Flashy] prinr █                                                                │
-└─────────────────────────────────────────────────────────────────────────────────┘
-....
-
-Example of suggestions with English and French dictionaries (`en,fr`):
-
-....
-│[12:55] [6] [irc/freenode] 3:#test(+n){4} [print,prone,prune/prime,primer,primé] │
-│[@Flashy] prinr █                                                                │
-└─────────────────────────────────────────────────────────────────────────────────┘
-....
-
-[[charset_plugin]]
-=== Charset plugin
-
-Charset plugin lets you decode or encode data using charsets.
-
-There is default charset for decode/encode, and specific charsets for buffers
-(or group of buffers).
-
-This plugin is optional, but recommended: if it's not loaded, WeeChat
-can only read/write UTF-8 data.
-
-Charset plugin should be autoloaded by WeeChat. To be sure plugin is loaded,
-try:
-
-----
-/charset
-----
-
-If command is not found, then load plugin with command:
-
-----
-/plugin load charset
-----
-
-If plugin is not found, then you should compile again WeeChat with
-plugins and Charset support.
-
-When Charset plugin starts, it displays terminal and internal charsets.
-Terminal charset depends on your locale, and internal is UTF-8.
-
-For example:
-
-....
-charset: terminal: ISO-8859-15, internal: UTF-8
-....
-
-[[charset_options]]
-==== Options (charset.conf)
-
-Sections:
-
-[width="100%",cols="3m,6m,16",options="header"]
-|===
-| Section | Control command                             | Description
-| default | /set charset.default.*                      | Default decoding/encoding charset
-| decode  | <<command_charset_charset,/charset decode>> +
-            /set charset.decode.*                       | Decoding charset by buffer (options can be added/removed in section)
-| encode  | <<command_charset_charset,/charset encode>> +
-            /set charset.encode.*                       | Encoding charset by buffer (options can be added/removed in section)
-|===
-
-Options:
-
-include::autogen/user/charset_options.asciidoc[]
-
-[[charset_commands]]
-==== Commands
-
-include::autogen/user/charset_commands.asciidoc[]
-
-[[charset_set]]
-==== Set charset
-
-To set global decode and encode charsets, use command `/set`.
-
-For example:
-
-----
-/set charset.default.decode ISO-8859-15
-/set charset.default.encode ISO-8859-15
-----
-
-If global decode charset is not set (for example during first
-load of Charset plugin), it will be automatically set to terminal
-charset (if it's different from UTF-8), or by default to _ISO-8859-1_.
-
-Default encode value is empty, so it sends by default with
-internal charset (UTF-8).
-
-To set IRC server charset, use command `/charset` on server buffer.
-If you give only charset, then it will set decoding and encoding values.
-
-For example:
-
-----
-/charset ISO-8859-15
-----
-
-It's equivalent to:
-
-----
-/charset decode ISO-8859-15
-/charset encode ISO-8859-15
-----
-
-To set IRC channel (or private) charset, use same commands as server,
-but on channel (or private) buffer.
-
-To set charset for all channels/privates of an IRC server:
-
-----
-/set charset.encode.irc.freenode ISO-8859-15
-----
-
-To see all charsets used, use following command:
-
-----
-/set charset.*
-----
-
-[[charset_troubleshooting]]
-==== Troubleshooting
-
-For any problem with charsets, please look at _WeeChat FAQ_.
-
-[[exec_plugin]]
-=== Exec plugin
-
-The `/exec` command lets you execute external commands inside WeeChat and
-display the output locally, or send it to a buffer.
-
-[[exec_options]]
-==== Options (exec.conf)
-
-Sections:
-
-[width="100%",cols="3m,6m,16",options="header"]
-|===
-| Section | Control command     | Description
-| command | /set exec.command.* | Options for commands
-| color   | /set exec.color.*   | Colors
-|===
-
-Options:
-
-include::autogen/user/exec_options.asciidoc[]
-
-[[exec_commands]]
-==== Commands
-
-include::autogen/user/exec_commands.asciidoc[]
-
-[[fifo_plugin]]
-=== Fifo plugin
-
-You can remote control WeeChat, by sending commands or text to a FIFO pipe (if
-option "plugins.var.fifo.fifo" is enabled, it is by default).
-
-The FIFO pipe is located in _~/.weechat/_ and is called _weechat_fifo_xxxx_
-(where _xxxx_ is the process ID (PID) of running WeeChat).
-
-Syntax for the FIFO pipe commands/text is one of following:
-
-....
-  plugin.buffer *text or command here
-  *text or command here
-....
-
-Some examples:
-
-* nick change on IRC server freenode to "newnick":
-
-----
-$ echo 'irc.server.freenode */nick newnick' >~/.weechat/weechat_fifo_12345
-----
-
-* display text on IRC #weechat channel:
-
-----
-$ echo 'irc.freenode.#weechat *hello!' >~/.weechat/weechat_fifo_12345
-----
-
-* display text on current buffer:
-
-----
-$ echo '*hello!' >~/.weechat/weechat_fifo_12345
-----
-
-* send two commands to unload/reload Python scripts (you have to separate them
-  with "\n"):
-
-----
-$ printf '%b' '*/python unload\n*/python autoload\n' >~/.weechat/weechat_fifo_12345
-----
-
-You can write a script to send command to all running WeeChat at same time,
-for example:
-
-[source,shell]
-----
-#!/bin/sh
-if [ $# -eq 1 ]; then
-    for fifo in ~/.weechat/weechat_fifo_*
-    do
-        printf '%b\n' "$1" >"$fifo"
-    done
-fi
-----
-
-If the script is called "auto_weechat_command", you can run it with:
-
-----
-$ ./auto_weechat_command 'irc.freenode.#weechat *hello'
-----
-
-[[fifo_commands]]
-==== Commands
-
-include::autogen/user/fifo_commands.asciidoc[]
-
-[[irc_plugin]]
-=== IRC plugin
-
-The IRC plugin is designed to chat through IRC protocol with other people.
-
-It is multi-servers, and offers all supported IRC commands including DCC chat
-and file transfer (via xfer plugin, see <<xfer_plugin,Xfer plugin>>).
-
-[[irc_command_line_options]]
-==== Command line options
-
-It is possible to give URL for one or many IRC servers, as follow:
-
-----
-irc[6][s]://[nick[:password]@]irc.example.org[:port][/channel][,channel[...]]
-----
-
-Example to join _#weechat_ and _#toto_ on server _chat.freenode.net_ server,
-default port (6667), with nick _nono_:
-
-----
-$ weechat irc://nono@chat.freenode.net/#weechat,#toto
-----
-
-[[irc_options]]
-==== Options (irc.conf)
-
-Sections:
-
-[width="100%",cols="3m,6m,16",options="header"]
-|===
-| Section        | Control command                | Description
-| look           | /set irc.look.*                | Look and feel
-| color          | /set irc.color.*               | Colors
-| network        | /set irc.network.*             | Network options
-| msgbuffer      | /set irc.msgbuffer.*           | <<irc_target_buffer,Target buffer for IRC messages>> (options can be added/removed in section)
-| ctcp           | /set irc.ctcp.*                | <<irc_ctcp_replies,CTCP replies>> (options can be added/removed in section)
-| ignore         | <<command_irc_ignore,/ignore>> | Ignore people
-| server_default | /set irc.server_default.*      | Default values for servers (used when options in server are not defined)
-| server         | <<command_irc_server,/server>> +
-                   /set irc.server.*              | Servers
-|===
-
-Options:
-
-include::autogen/user/irc_options.asciidoc[]
-
-[[irc_commands]]
-==== Commands
-
-include::autogen/user/irc_commands.asciidoc[]
-
-[[irc_ssl_certificates]]
-==== SSL certificates
-
-When connecting to IRC server with SSL, WeeChat checks by default that the
-connection is fully trusted.
-
-Some options are used to control SSL connection:
-
-weechat.network.gnutls_ca_file::
-    path to file with certificate authorities (by default: "%h/ssl/CAs.pem")
-
-irc.server.xxx.ssl_cert::
-    SSL certificate file used to automatically identify your nick (for example
-    CertFP on oftc, see below)
-
-irc.server.xxx.ssl_dhkey_size::
-    size of the key used during the Diffie-Hellman Key Exchange (by default:
-    2048)
-
-irc.server.xxx.ssl_verify::
-    check that the SSL connection is fully trusted (on by default)
-
-[NOTE]
-Option "ssl_verify" is on by default, so verification is strict and may fail,
-even if it was OK with versions prior to 0.3.1.
-
-[[irc_connect_oftc_with_certificate]]
-===== First example: connect to oftc and check certificate
-
-* Import certificate in shell:
-
-----
-$ mkdir -p ~/.weechat/ssl
-$ wget -O ~/.weechat/ssl/CAs.pem http://www.spi-inc.org/ca/spi-cacert.crt
-----
-
-[NOTE]
-It is possible to concatenate many certificates in file CAs.pem.
-
-* In WeeChat, with "oftc" server already added:
-
-----
-/connect oftc
-----
-
-[[irc_connect_oftc_with_certfp]]
-===== Second example: connect to oftc using CertFP
-
-* Create certificate in shell:
-
-----
-$ mkdir -p ~/.weechat/ssl
-$ cd ~/.weechat/ssl
-$ openssl req -nodes -newkey rsa:2048 -keyout nick.pem -x509 -days 365 -out nick.pem
-----
-
-* In WeeChat, with "oftc" server already added:
-
-----
-/set irc.server.oftc.ssl_cert "%h/ssl/nick.pem"
-/connect oftc
-/msg nickserv cert add
-----
-
-For more information, look at http://www.oftc.net/oftc/NickServ/CertFP
-
-[[irc_sasl_authentication]]
-==== SASL authentication
-
-WeeChat supports SASL authentication, using different mechanisms:
-
-* _plain_: plain text password (default)
-* _ecdsa-nist256p-challenge_: challenge with public/private key
-* _external_: client side SSL cert
-* _dh-blowfish_: blowfish encrypted password (*insecure*, not recommended)
-* _dh-aes_: AES encrypted password (*insecure*, not recommended)
-
-[NOTE]
-The "gcrypt" library is required when compiling WeeChat in order to use
-"dh-blowfish" and "dh-aes" mechanisms (see <<dependencies,dependencies>>).
-
-Options in servers are:
-
-* _sasl_mechanism_: mechanism to use (see above)
-* _sasl_timeout_: timeout (in seconds) for authentication
-* _sasl_fail_: action to perform if authentication fails
-* _sasl_username_: username (nick)
-* _sasl_password_: password
-* _sasl_key_: file with ECC private key (for mechanism
-  _ecdsa-nist256p-challenge_)
-
-[[irc_sasl_ecdsa_nist256p_challenge]]
-===== SASL ECDSA-NIST256P-CHALLENGE
-
-You must generate a private key in order to authentify with the
-ECDSA-NIST256P-CHALLENGE mechanism (no password is required on connection).
-
-You can generate the key with this command:
-
-----
-$ openssl ecparam -genkey -name prime256v1 >~/.weechat/ecdsa.pem
-----
-
-Get the public key (encoded as base64) with this command:
-
-----
-$ openssl ec -noout -text -conv_form compressed -in ~/.weechat/ecdsa.pem | grep '^pub:' -A 3 | tail -n 3 | tr -d ' \n:' | xxd -r -p | base64
-----
-
-Connect to the server, identify (for example with "nickserv identify") and set
-your public key in your account, using nickserv (replace the base64 value with
-your public key):
-
-----
-/connect freenode
-/msg nickserv identify your_password
-/msg nickserv set pubkey Av8k1FOGetUDq7sPMBfufSIZ5c2I/QYWgiwHtNXkVe/q
-----
-
-Configure the SASL options in the server:
-
-----
-/set irc.server.freenode.sasl_mechanism ecdsa-nist256p-challenge
-/set irc.server.freenode.sasl_username "your_nickname"
-/set irc.server.freenode.sasl_key "%h/ecdsa.pem"
-----
-
-Reconnect to the server:
-
-----
-/reconnect freenode
-----
-
-[[irc_tor_freenode]]
-==== Connect to Freenode with TOR/SASL
-
-In addition to SSL, Freenode servers support connections with TOR
-(https://www.torproject.org/), a network of virtual tunnels that allows people
-and groups to improve their privacy and security on the Internet.
-
-In first place, install TOR. For Debian (and derived):
-
-----
-$ sudo apt-get install tor
-----
-
-In WeeChat you need to add a socks5 proxy for TOR service (hostname/IP and
-port depend on your TOR configuration):
-
-----
-/proxy add tor socks5 127.0.0.1 9050
-----
-
-Now, add a new server, for example:
-
-----
-/server add freenode-tor p4fsi4ockecnea7l.onion
-----
-
-Set proxy for TOR:
-
-----
-/set irc.server.freenode-tor.proxy "tor"
-----
-
-Set SASL authentication:
-
-----
-/set irc.server.freenode-tor.sasl_username "your_nickname"
-/set irc.server.freenode-tor.sasl_password "your_password"
-----
-
-And finally, connection to server:
-
-----
-/connect freenode-tor
-----
-
-For more info about Freenode and TOR: http://freenode.net/irc_servers.shtml#tor
-
-[[irc_smart_filter_join_part_quit]]
-==== Smart filter for join/part/quit messages
-
-A smart filter is available to filter join/part/quit messages when nick did not
-say something during past X minutes on channel.
-
-Smart filter is enabled by default, but you must add a filter to hide lines on
-buffers, for example:
-
-----
-/filter add irc_smart * irc_smart_filter *
-----
-
-It is possible to create filter for one channel only or channels beginning with
-same name (see `/help filter`):
-
-----
-/filter add irc_smart_weechat irc.freenode.#weechat irc_smart_filter *
-/filter add irc_smart_weechats irc.freenode.#weechat* irc_smart_filter *
-----
-
-You can hide only join or part/quit with following options:
-
-----
-/set irc.look.smart_filter_join on
-/set irc.look.smart_filter_quit on
-----
-
-You can setup delay (in minutes):
-
-----
-/set irc.look.smart_filter_delay 5
-----
-
-If a nick did not speak during last 5 minutes, its join and/or part/quit will be
-hidden on channel.
-
-[[irc_ctcp_replies]]
-==== CTCP replies
-
-It is possible to customize CTCP replies, or block some CTCP queries (do not
-reply).
-
-For example, to customize reply to CTCP "VERSION", use following command:
-
-----
-/set irc.ctcp.version "I'm running WeeChat $version, it rocks!"
-----
-
-If you want to block CTCP "VERSION" (do not reply to a query), then set empty
-string:
-
-----
-/set irc.ctcp.version ""
-----
-
-Even unknown CTCP can be customized, for example you can reply to
-CTCP "BLABLA":
-
-----
-/set irc.ctcp.blabla "This is my answer to CTCP BLABLA"
-----
-
-It is possible to customize CTCP for one server only, using its internal name
-before CTCP name:
-
-----
-/set irc.ctcp.freenode.version "WeeChat $version (for freenode)"
-----
-
-If you want to restore standard CTCP reply, then remove option:
-
-----
-/unset irc.ctcp.version
-----
-
-Following codes can be used in strings and are automatically expanded by WeeChat
-when replying to CTCP:
-
-[width="100%",cols="^2l,4,8",options="header"]
-|===
-| Code         | Description                         | Value/example
-| $clientinfo  | List of supported CTCP              | `ACTION DCC CLIENTINFO FINGER PING SOURCE TIME USERINFO VERSION`
-| $version     | WeeChat version                     | `0.4.0-dev`
-| $versiongit  | WeeChat version + git version ^(1)^ | `0.4.0-dev (git: v0.3.9-104-g7eb5cc4)`
-| $git         | Git version ^(1)^                   | `v0.3.9-104-g7eb5cc4`
-| $compilation | WeeChat compilation date            | `Dec 16 2012`
-| $osinfo      | Info about OS                       | `Linux 2.6.32-5-amd64 / x86_64`
-| $site        | WeeChat site                        | `https://weechat.org/`
-| $download    | WeeChat site, download page         | `https://weechat.org/download`
-| $time        | Current date/time                   | `Sun, 16 Dec 2012 10:40:48 +0100`
-| $username    | User name on IRC server             | `name`
-| $realname    | Real name on IRC server             | `John Doe`
-|===
-
-[NOTE]
-^(1)^ The git version is the output of command `git describe`. It is known only
-if WeeChat has been compiled inside the git repository and if git was installed.
-
-If CTCP options are not defined (by default), CTCP replies are:
-
-[width="100%",cols="^2,4,8",options="header"]
-|===
-| CTCP       | Reply format                         | Example
-| CLIENTINFO | `$clientinfo`                        | `ACTION DCC CLIENTINFO FINGER PING SOURCE TIME USERINFO VERSION`
-| FINGER     | `WeeChat $versiongit`                | `WeeChat 0.4.0-dev (git: v0.3.9-104-g7eb5cc4)`
-| SOURCE     | `$download`                          | `https://weechat.org/download`
-| TIME       | `$time`                              | `Sun, 16 Dec 2012 10:40:48 +0100`
-| USERINFO   | `$username ($realname)`              | `name (John Doe)`
-| VERSION    | `WeeChat $versiongit ($compilation)` | `WeeChat 0.4.0-dev (git: v0.3.9-104-g7eb5cc4) (Dec 16 2012)`
-|===
-
-[[irc_target_buffer]]
-==== Target buffer for IRC messages
-
-It is possible to customize target buffer for IRC messages (buffer used to
-display message) with options `+irc.msgbuffer.*+`.
-
-For some IRC messages (see list below), you can use value:
-
-current::
-    current buffer (if it's IRC buffer, or on server buffer by default)
-
-private::
-    private buffer for nick, or current/server buffer if not found (according
-    to option _irc.look.msgbuffer_fallback_)
-
-server::
-    server buffer
-
-weechat::
-    WeeChat "core" buffer
-
-When option is not set (default), WeeChat chooses appropriate buffer, commonly
-server or channel buffer.
-
-Non-comprehensive list of IRC messages or alias that you can customize:
-
-[width="60%",cols="^1m,^3m,8",options="header"]
-|===
-| message | alias         | description
-| error   |               | error
-| invite  |               | invited on a channel
-| join    |               | join
-| kick    |               | kick
-| kill    |               | kill
-| mode    |               | mode
-| notice  |               | notice
-| part    |               | part
-| quit    |               | quit
-| topic   |               | topic
-| wallops |               | wallops
-|         | ctcp          | ctcp (sent or received, in a privmsg or notice message)
-| 221     |               | user mode string
-| 275     | whois         | whois (secure connection)
-| 301     | whois         | whois (away)
-| 303     |               | ison
-| 305     | unaway        | unaway
-| 306     | away          | away
-| 307     | whois         | whois (registered nick)
-| 310     | whois         | whois (help mode)
-| 311     | whois         | whois (user)
-| 312     | whois         | whois (server)
-| 313     | whois         | whois (operator)
-| 314     | whowas        | whowas
-| 315     | who           | who (end)
-| 317     | whois         | whois (idle)
-| 318     | whois         | whois (end)
-| 319     | whois         | whois (channels)
-| 320     | whois         | whois (identified user)
-| 321     | list          | list (start)
-| 322     | list          | list (channel)
-| 323     | list          | list (end)
-| 326     | whois         | whois (has oper privs)
-| 327     | whois         | whois (host)
-| 328     |               | channel URL
-| 329     |               | channel creation date
-| 330     | whois         | whois (logged in as)
-| 331     |               | no topic for channel
-| 332     |               | topic of channel
-| 333     |               | infos about topic
-| 335     | whois         | whois (is a bot on)
-| 338     | whois         | whois (host)
-| 341     |               | inviting
-| 343     | whois         | whois (is opered as)
-| 344     | reop          | channel reop
-| 345     | reop          | channel reop (end)
-| 346     | invitelist    | invite list
-| 347     | invitelist    | invite list (end)
-| 348     | exceptionlist | exception list
-| 349     | exceptionlist | exception list (end)
-| 351     |               | server version
-| 352     | who           | who
-| 353     | names         | list of users on channel
-| 366     | names         | end of /names list
-| 367     | banlist       | ban list
-| 368     | banlist       | end of ban list
-| 369     | whowas        | whowas (end)
-| 378     | whois         | whois (connecting from)
-| 379     | whois         | whois (using modes)
-| 401     | whois         | no such nick/channel
-| 402     | whois         | no such server
-| 432     |               | erroneous nickname
-| 433     |               | nickname already in use
-| 438     |               | not authorized to change nickname
-| 671     | whois         | whois (secure connection)
-| 728     | quietlist     | quiet list
-| 729     | quietlist     | end of quiet list
-| 732     | monitor       | list of monitored nicks
-| 733     | monitor       | list of monitored nicks (end)
-| 901     |               | you are now logged in
-|===
-
-Other numeric commands can be customized as well.
-
-Message can be prefixed by server name to be specific to an irc server
-(for example: `freenode.whois`).
-
-Some examples:
-
-* display result of `/whois` on private buffer:
-
-----
-/set irc.msgbuffer.whois private
-----
-
-* restore default buffer for whois (server buffer):
-
-----
-/unset irc.msgbuffer.whois
-----
-
-* display invitation on current buffer, only for "freenode" server:
-
-----
-/set irc.msgbuffer.freenode.invite current
-----
-
-* display message "303" (ison) on WeeChat "core" buffer:
-
-----
-/set irc.msgbuffer.303 weechat
-----
-
-[[logger_plugin]]
-=== Logger plugin
-
-The Logger plugin lets you save content of buffers to files, with options
-about what and how it is saved.
-
-[[logger_options]]
-==== Options (logger.conf)
-
-Sections:
-
-[width="100%",cols="3m,6m,16",options="header"]
-|===
-| Section | Control command     | Description
-| look    | /set logger.look.*  | Look and feel
-| color   | /set logger.color.* | Colors
-| file    | /set logger.file.*  | Options for log files
-| level   | /set logger.level.* | Log level by buffer (options can be added/removed in section)
-| mask    | /set logger.mask.*  | Filename mask by buffer (options can be added/removed in section)
-|===
-
-Options:
-
-include::autogen/user/logger_options.asciidoc[]
-
-[[logger_commands]]
-==== Commands
-
-include::autogen/user/logger_commands.asciidoc[]
-
-[[logger_log_levels]]
-==== Log levels
-
-Logging is made with a level for each buffer. Default level is 9 (log
-all messages displayed on buffer).
-You can change level for one buffer, or a group of buffers.
-
-Possible levels are 0 to 9. Zero means "do not log anything" and 9 means
-"log all messages".
-
-Plugins are using different levels for messages displayed.
-IRC plugin uses following levels:
-
-* level 1: message from user (on channel or private)
-* level 2: nick change (you or someone else)
-* level 3: any server message (except join/part/quit)
-* level 4: server message join/part/quit
-
-So if you set level 3 for an IRC channel, WeeChat will log all messages,
-but not join/part/quit.
-
-Some examples:
-
-* set level 3 for IRC channel #weechat:
-
-----
-/set logger.level.irc.freenode.#weechat 3
-----
-
-* set level 3 for freenode server buffer:
-
-----
-/set logger.level.irc.server.freenode 3
-----
-
-* set level 3 for all channels on server freenode:
-
-----
-/set logger.level.irc.freenode 3
-----
-
-* set level 2 for all IRC buffers:
-
-----
-/set logger.level.irc 2
-----
-
-[[logger_filenames_masks]]
-==== Filenames masks
-
-It is possible to define a filename mask for each buffer, and use local buffer
-variables to build filename. To see local variables for current buffer:
-
-----
-/buffer localvar
-----
-
-For example, on buffer "irc.freenode.#weechat", WeeChat will search a mask with
-option name, in this order:
-
-----
-logger.mask.irc.freenode.#weechat
-logger.mask.irc.freenode
-logger.mask.irc
-logger.file.mask
-----
-
-That means you can have masks specific for some IRC servers
-("logger.mask.irc.freenode") or for a plugin ("logger.mask.irc").
-
-[[logger_files_by_date]]
-===== Log files by date
-
-To have log files by date, you can use date/time specifiers in mask (see
-`man strftime` for formats), for example:
-
-----
-/set logger.file.mask "%Y/%m/$plugin.$name.weechatlog"
-----
-
-You'll have following files:
-
-....
-~/.weechat/
-    |--- logs/
-        |--- 2010/
-            |--- 11/
-            |       irc.server.freenode.weechatlog
-            |       irc.freenode.#weechat.weechatlog
-        |--- 2010/
-            |--- 12/
-            |       irc.server.freenode.weechatlog
-            |       irc.freenode.#weechat.weechatlog
-....
-
-[[logger_irc_files_by_server_channel]]
-===== IRC log files by server and channel
-
-If you want one directory by IRC server and one file by channel inside:
-
-----
-/set logger.mask.irc "irc/$server/$channel.weechatlog"
-----
-
-You'll have following files:
-
-....
-~/.weechat/
-    |--- logs/
-        |--- irc/
-            |--- freenode/
-            |       freenode.weechatlog
-            |       #weechat.weechatlog
-            |       #mychan.weechatlog
-            |--- oftc/
-            |       oftc.weechatlog
-            |       #chan1.weechatlog
-            |       #chan2.weechatlog
-....
-
-[[relay_plugin]]
-=== Relay plugin
-
-The Relay plugin is used to relay data via network, using different protocols:
-
-* _irc_: IRC proxy: used to share connections to IRC servers with one or many
-  other IRC clients
-* _weechat_: protocol used by remote interfaces to display and interact with
-  WeeChat (for example QWeeChat or weechat-android)
-
-[[relay_options]]
-==== Options (relay.conf)
-
-Sections:
-
-[width="100%",cols="3m,6m,16",options="header"]
-|===
-| Section | Control command                    | Description
-| look    | /set relay.look.*                  | Look and feel
-| color   | /set relay.color.*                 | Colors
-| network | /set relay.network.*               | Network options
-| irc     | /set relay.irc.*                   | Options specific to irc protocol (irc proxy)
-| port    | <<command_relay_relay,/relay add>> +
-            /set relay.port.*                  | Ports used for relay (irc and weechat protocols) (options can be added/removed in section)
-|===
-
-Options:
-
-include::autogen/user/relay_options.asciidoc[]
-
-[[relay_commands]]
-==== Commands
-
-include::autogen/user/relay_commands.asciidoc[]
-
-[[relay_password]]
-==== Password
-
-It is highly recommended to set a password for relay, with command:
-
-----
-/set relay.network.password "mypassword"
-----
-
-This password is used for _irc_ and _weechat_ protocols.
-
-[[relay_ssl]]
-==== SSL
-
-You can use SSL by creating a certificate and private key, and by using prefix
-"ssl." in the name of protocol.
-
-The default file for certificate/key is _~/.weechat/ssl/relay.pem_
-(option <<option_relay.network.ssl_cert_key,relay.network.ssl_cert_key>>).
-
-You can create a certificate and private key with following commands:
-
-----
-$ mkdir -p ~/.weechat/ssl
-$ cd ~/.weechat/ssl
-$ openssl req -nodes -newkey rsa:2048 -keyout relay.pem -x509 -days 365 -out relay.pem
-----
-
-If WeeChat is already running, you can reload the certificate and private key
-with command:
-
-----
-/relay sslcertkey
-----
-
-[[relay_irc_proxy]]
-==== IRC proxy
-
-The Relay plugin can act as an IRC proxy: it will simulate an IRC server, and
-you can connect to WeeChat with any other IRC client (including WeeChat itself).
-
-You can define one port by IRC server, or one generic port for all servers.
-
-When using one port for all servers, the client must send the internal name of
-server in the IRC "PASS" command, with this format:
-
-----
-PASS server:password
-----
-
-Example: IRC proxy with SSL for any server (client will choose):
-
-----
-/relay add ssl.irc 8000
-----
-
-Example: IRC proxy without SSL only for server "freenode":
-
-----
-/relay add irc.freenode 8000
-----
-
-Now you can connect on port 8000 with any IRC client using server password
-"mypassword" (or "freenode:mypassword" if no server was specified in the relay).
-
-[[relay_weechat_protocol]]
-==== WeeChat protocol
-
-The Relay plugin can send data to remote interface using WeeChat protocol.
-
-You can connect with a remote interface, see the list on download page:
-https://weechat.org/download
-
-[IMPORTANT]
-WeeChat itself can NOT connect to another WeeChat with this protocol.
-
-For example:
-
-----
-/relay add weechat 9000
-----
-
-Now you can connect on port 9000 with a remote interface using password
-"mypassword".
-
-[[relay_websocket]]
-==== WebSocket
-
-WebSocket protocol (http://tools.ietf.org/html/rfc6455[RFC 6455]) is supported
-in Relay plugin for all protocols.
-
-The WebSocket handshake is automatically detected and socket becomes ready for
-WebSocket if required headers are found in handshake and if origin is allowed
-(see option
-<<option_relay.network.websocket_allowed_origins,relay.network.websocket_allowed_origins>>).
-
-A WebSocket can be opened in a HTML5 with a single line of JavaScript:
-
-[source,js]
-----
-websocket = new WebSocket("ws://server.com:9000/weechat");
-----
-
-The port (9000 in example) is the port defined in Relay plugin.
-The URI must always end with "/weechat" (for _irc_ and _weechat_ protocols).
-
-[[scripts_plugins]]
-=== Scripts plugins
-
-WeeChat provides 7 scripting plugins: Python, Perl, Ruby, Lua, Tcl, Guile
-(scheme) and Javascript.
-These plugins can load, execute and unload scripts for these languages.
-
-Another plugin called "script" is a scripts manager and is used to load/unload
-scripts of any language, and install/remove scripts of WeeChat scripts
-repository, which are visible at this URL: https://weechat.org/scripts
-
-For more information about how to write scripts, or WeeChat API for
-scripts, please read _WeeChat Scripting Guide_.
-
-[[script_options]]
-==== Script options (script.conf)
-
-Sections:
-
-[width="100%",cols="3m,6m,16",options="header"]
-|===
-| Section | Control command       | Description
-| look    | /set script.look.*    | Look and feel
-| color   | /set script.color.*   | Colors
-| scripts | /set script.scripts.* | Options for download of scripts
-|===
-
-Options:
-
-include::autogen/user/script_options.asciidoc[]
-
-[[script_commands]]
-==== Script commands
-
-include::autogen/user/script_commands.asciidoc[]
-
-[[python_commands]]
-==== Python commands
-
-include::autogen/user/python_commands.asciidoc[]
-
-[[perl_commands]]
-==== Perl commands
-
-include::autogen/user/perl_commands.asciidoc[]
-
-[[ruby_commands]]
-==== Ruby commands
-
-include::autogen/user/ruby_commands.asciidoc[]
-
-[[lua_commands]]
-==== Lua commands
-
-include::autogen/user/lua_commands.asciidoc[]
-
-[[tcl_commands]]
-==== Tcl commands
-
-include::autogen/user/tcl_commands.asciidoc[]
-
-[[guile_commands]]
-==== Guile commands
-
-include::autogen/user/guile_commands.asciidoc[]
-
-[[javascript_commands]]
-==== Javascript commands
-
-include::autogen/user/javascript_commands.asciidoc[]
-
-[[trigger_plugin]]
-=== Trigger plugin
-
-Trigger is the Swiss Army knife for WeeChat: it can hook many things (signal,
-modifier, print, ...), change the content of data, and execute one or more
-commands. A condition can be used to prevent the trigger to run in some
-circumstances.
-
-Using triggers require you to know how the signals, modifiers, ... are working.
-So you might consider reading the _Hooks_ chapter in the
-_WeeChat Plugin API Reference_.
-
-[[trigger_options]]
-==== Options (trigger.conf)
-
-Sections:
-
-[width="100%",cols="3m,6m,16",options="header"]
-|===
-| Section | Control command                          | Description
-| look    | /set trigger.look.*                      | Look and feel
-| color   | /set trigger.color.*                     | Colors
-| trigger | <<command_trigger_trigger,/trigger add>> +
-            <<command_trigger_trigger,/trigger set>> +
-            /set trigger.trigger.*                   | Trigger options
-|===
-
-Options:
-
-include::autogen/user/trigger_options.asciidoc[]
-
-[[trigger_commands]]
-==== Commands
-
-include::autogen/user/trigger_commands.asciidoc[]
-
-[[trigger_anatomy]]
-==== Anatomy of a trigger
-
-A trigger has the following options (names are
-`trigger.trigger.<name>.<option>`):
-
-[width="100%",cols="2m,2,10",options="header"]
-|===
-| Option | Values | Description
-
-| enabled | `on`, `off` |
-  When option is `off`, the trigger is disabled and actions are not executed
-  any more.
-
-| hook | `signal`, `hsignal`, `modifier`, `print`, `command`, `command_run`,
-  `timer`, `config`, `focus` |
-  The hook used in trigger. For more information, see
-  _WeeChat Plugin API Reference_, chapter _Hooks_.
-
-| arguments | string |
-  The arguments for the hook, it depends on the hook type used.
-
-| conditions | string |
-  Conditions to execute the trigger; they are evaluated (see command
-  <<command_weechat_eval,/eval>>).
-
-| regex | string |
-  One or more POSIX extended regular expressions, to change data received in the
-  hook callback (and some stuff added by trigger plugin), see
-  <<trigger_regex,regular expression>>.
-
-| command | string |
-  Command to execute (many commands can be separated by semicolons); it is
-  evaluated (see command <<command_weechat_eval,/eval>>).
-
-| return_code | `ok`, `ok_eat`, `error` |
-  The return code of callback (default is `ok`, which should be used in almost
-  all triggers, the other values are rarely used).
-|===
-
-For example, the default _beep_ trigger has following options:
-
-----
-trigger.trigger.beep.enabled = on
-trigger.trigger.beep.hook = print
-trigger.trigger.beep.arguments = ""
-trigger.trigger.beep.conditions = "${tg_highlight} || ${tg_msg_pv}"
-trigger.trigger.beep.regex = ""
-trigger.trigger.beep.command = "/print -beep"
-trigger.trigger.beep.return_code = ok
-----
-
-[[trigger_execution]]
-==== Execution
-
-When a trigger callback is called, following actions are executed, in this
-order, if triggers are globally enabled and if the trigger itself is enabled:
-
-. check trigger conditions: if false, exit
-. replace text in trigger using regular expression(s)
-. execute command(s)
-. exit with a return code (except for hooks _modifier_ and _focus_).
-
-[[trigger_hook_arguments]]
-==== Hook arguments
-
-The arguments depend on the hook used. They are separated by semicolons.
-
-[width="100%",cols="2,6,7",options="header"]
-|===
-| Hook | Arguments | Examples
-
-| signal |
-  1. signal name (priority allowed) (required) +
-  2. signal name (priority allowed) +
-  3. ... |
-  `*,irc_in_privmsg` +
-  `*,irc_in_privmsg;*,irc_in_notice` +
-  `signal_sigwinch`
-
-| hsignal |
-  1. signal name (priority allowed) (required) +
-  2. signal name (priority allowed) +
-  3. ... |
-  `nicklist_nick_added`
-
-| modifier |
-  1. modifier name (priority allowed) (required) +
-  2. modifier name (priority allowed) +
-  3. ... |
-  `weechat_print` +
-  `5000\|input_text_display;5000\|history_add`
-
-| print |
-  1. buffer name +
-  2. tags +
-  3. message +
-  4. strip colors (0/1) |
-  `irc.freenode.*` +
-  `irc.freenode.#weechat` +
-  `irc.freenode.#weechat;irc_notice` +
-  `*;;;1`
-
-| command |
-  1. command name (priority allowed) (required) +
-  2. description +
-  3. arguments +
-  4. description of arguments +
-  5. completion |
-  `test` +
-  `5000\|test`
-
-| command_run |
-  1. command (priority allowed) (required) +
-  2. command (priority allowed) +
-  3. ... |
-  `/cmd arguments`
-
-| timer |
-  1. interval in milliseconds (required) +
-  2. alignment on second (default: 0) +
-  3. max number of calls (default: 0, which means "no end") |
-  `3600000` +
-  `60000;0;5`
-
-| config |
-  1. option name (priority allowed) (required) +
-  2. option name (priority allowed) +
-  3. ... |
-  `+weechat.look.*+`
-
-| focus |
-  1. area name (priority allowed) (required) +
-  2. area name (priority allowed) +
-  3. ... |
-  `buffer_nicklist`
-|===
-
-[[trigger_conditions]]
-==== Conditions
-
-The conditions are used to continue processing in trigger, or stop everything.
-
-They are evaluated, and data available in callback can be used
-(see <<trigger_callback_data,data in callbacks>> and command
-<<command_weechat_eval,/eval>>).
-
-Example: the default _beep_ trigger uses this condition to make a beep only on
-highlight or private message:
-
-----
-${tg_highlight} || ${tg_msg_pv}
-----
-
-[[trigger_regex]]
-==== Regular expression
-
-The regular expression is used to change variables in callback hashtable.
-
-The format is: "/regex/replace" or "/regex/replace/var" (where _var_ is a
-variable of the hashtable). +
-If _var_ is not specified, the default variable is used, it depends on hook
-type:
-
-[width="50%",cols="4,5m",options="header"]
-|===
-| Hook        | Default variable
-| signal      | tg_signal_data
-| hsignal     |
-| modifier    | tg_string
-| print       | tg_message
-| command     | tg_argv_eol1
-| command_run | tg_command
-| timer       | tg_remaining_calls
-| config      | tg_value
-| focus       |
-|===
-
-Many regular expressions can be separated by a space, for example:
-"/regex1/replace1/var1 /regex2/replace2/var2".
-
-The char "/" can be replaced by any char (one or more identical chars).
-
-Matching groups can be used in "replace":
-
-* `${re:0}` to `${re:99}`: `${re:0}` is the whole match, `${re:1}` to
-  `${re:99}` are groups captured
-* `${re:+}`: the last match (with highest number)
-* `${hide:c,${re:N}}`: match "N" with all chars replaced by "c"
-  (example: `+${hide:*,${re:2}}+` is the group #2 with all chars replaced by
-  `+*+`).
-
-Example: use bold for words between "*":
-
-----
-/\*(\S+)\*/*${color:bold}${re:1}${color:-bold}*/
-----
-
-Example: default trigger _server_pass_ uses this regular expression to hide
-password in commands `/server` and `/connect` (chars in passwords are replaced
-by `+*+`):
-
-----
-==^(/(server|connect) .*-(sasl_)?password=)(\S+)(.*)==${re:1}${hide:*,${re:4}}${re:5}
-----
-
-[NOTE]
-In this example, the delimiter used is "==" because there is a "/" in the
-regular expression.
-
-[[trigger_command]]
-==== Command
-
-The command is executed after replacement of text with the regular expression.
-Many commands can be separated by semicolons.
-
-It is evaluated (see command <<command_weechat_eval,/eval>>) and text replaced
-with a regular expression can be used in the command.
-
-Example: default _beep_ trigger uses this command to make a beep (BEL):
-
-----
-/print -beep
-----
-
-[[trigger_callback_data]]
-==== Data in callbacks
-
-Data received in callbacks are stored in hashtables (pointers and strings) and
-can be used in following options:
-
-* _conditions_
-* _regex_
-* _command_
-
-The content of hashtables depend on the hook type.
-
-A convenient way to see data in a trigger is to open trigger monitor buffer,
-using the command:
-
-----
-/trigger monitor
-----
-
-[[trigger_data_signal]]
-===== Signal
-
-The "signal" callback sets following variables in hashtable:
-
-[width="100%",cols="3m,2,14",options="header"]
-|===
-| Variable       | Type   | Description
-| tg_signal      | string | Name of signal
-| tg_signal_data | string | Data sent with the signal
-|===
-
-If the signal contains an IRC message, the message is parsed and following data
-is added in hashtable:
-
-[width="100%",cols="3m,2,14",options="header"]
-|===
-| Variable             | Type   | Description
-| server               | string | Name of server (example: "freenode")
-| tags                 | string | Tags in message (rarely used)
-| message_without_tags | string | Message without tags
-| nick                 | string | Nick
-| host                 | string | Hostname
-| command              | string | IRC command (example: "PRIVMSG", "NOTICE", ...)
-| channel              | string | IRC channel
-| arguments            | string | Arguments of command (includes value of _channel_)
-| text                 | string | Text (for example user message)
-| pos_command          | string | The index of _command_ in message ("-1" if _command_ was not found)
-| pos_arguments        | string | The index of _arguments_ in message ("-1" if _arguments_ was not found)
-| pos_channel          | string | The index of _channel_ in message ("-1" if _channel_ was not found)
-| pos_text             | string | The index of _text_ in message ("-1" if _text_ was not found)
-|===
-
-When the data is a pointer, the variable `tg_signal_data` can be used like this
-to read a hdata property (in this example this is a pointer on a buffer):
-
-----
-${buffer[${tg_signal_data}].full_name}
-----
-
-[[trigger_data_hsignal]]
-===== Hsignal
-
-The "hsignal" callback sets following variables in hashtable:
-
-[width="100%",cols="3m,2,14",options="header"]
-|===
-| Variable  | Type   | Description
-| tg_signal | string | Name of signal
-|===
-
-The hashtable contains all keys/values from hashtable received (type:
-string/string).
-
-[[trigger_data_modifier]]
-===== Modifier
-
-The "modifier" callback sets following variables in hashtable:
-
-[width="100%",cols="3m,2,14",options="header"]
-|===
-| Variable          | Type   | Description
-| tg_modifier       | string | Name of modifier
-| tg_modifier_data  | string | Data sent with modifier
-| tg_string         | string | The string that can be modified
-| tg_string_nocolor | string | The string without color codes
-|===
-
-For the _weechat_print_ modifier, variables using message tags are added (see
-<<trigger_data_print,hook print>> below), and following variables:
-
-[width="100%",cols="3m,2,14",options="header"]
-|===
-| Variable           | Type    | Description
-| buffer             | pointer | Buffer where message is printed
-| tg_plugin          | string  | Plugin of buffer where message is printed
-| tg_buffer          | string  | Full name of buffer where message is printed
-| tg_prefix          | string  | Prefix of message printed
-| tg_prefix_nocolor  | string  | Prefix without color codes
-| tg_message         | string  | Message printed
-| tg_message_nocolor | string  | Message without color codes
-|===
-
-If the modifier contains an IRC message, the message is parsed and extra data is
-added in hashtable (see <<trigger_data_signal,hook signal>>).
-
-[[trigger_data_print]]
-===== Print
-
-The "print" callback sets following variables in hashtable:
-
-[width="100%",cols="3m,2,14",options="header"]
-|===
-| Variable           | Type    | Description
-| buffer             | pointer | Buffer
-| tg_date            | string  | Message date/time (format: `YYYY-MM-DD hh:mm:ss`)
-| tg_displayed       | string  | "1" if displayed, "0" if line filtered
-| tg_highlight       | string  | "1" if highlight, otherwise "0"
-| tg_prefix          | string  | Prefix
-| tg_prefix_nocolor  | string  | Prefix without color codes
-| tg_message         | string  | Message
-| tg_message_nocolor | string  | Message without color codes
-|===
-
-Variables set using tags in message (they are set in modifier _weechat_print_
-too):
-
-[width="100%",cols="3m,2,14",options="header"]
-|===
-| Variable           | Type   | Description
-| tg_tags            | string | Tags of message (with comma added at beginning/end of string)
-| tg_tags_count      | string | Number of tags in message
-| tg_tag_nick        | string | Nick (from tag "nick_xxx")
-| tg_tag_prefix_nick | string | Color of nick in prefix (from tag "prefix_nick_ccc")
-| tg_tag_host        | string | User name and host, format: username@host (from tag "host_xxx")
-| tg_tag_notify      | string | Notify level (_none_, _message_, _private_, _highlight_)
-| tg_notify          | string | Notify level, if different from _none_
-| tg_msg_pv          | string | "1" for a private message, otherwise "0"
-|===
-
-[[trigger_data_command]]
-===== Command
-
-The "command" callback sets following variables in hashtable:
-
-[width="100%",cols="3m,2,14",options="header"]
-|===
-| Variable     | Type    | Description
-| buffer       | pointer | Buffer
-| tg_argvN     | string  | Argument #N
-| tg_argv_eolN | string  | From argument #N until end of arguments
-|===
-
-[[trigger_data_command_run]]
-===== Command_run
-
-The "command_run" callback sets following variables in hashtable:
-
-[width="100%",cols="3m,2,14",options="header"]
-|===
-| Variable   | Type    | Description
-| buffer     | pointer | Buffer
-| tg_command | string  | Command executed
-|===
-
-[[trigger_data_timer]]
-===== Timer
-
-The "timer" callback sets following variables in hashtable:
-
-[width="100%",cols="3m,2,14",options="header"]
-|===
-| Variable           | Type   | Description
-| tg_remaining_calls | string | Number of remaining calls
-| tg_date            | string | Current date/time (format: `YYYY-MM-DD hh:mm:ss`)
-|===
-
-[[trigger_data_config]]
-===== Config
-
-The "config" callback sets following variables in hashtable:
-
-[width="100%",cols="3m,2,14",options="header"]
-|===
-| Variable  | Type   | Description
-| tg_option | string | Option
-| tg_value  | string | Value
-|===
-
-[[trigger_data_focus]]
-===== Focus
-
-The "focus" callback sets following variables in hashtable:
-
-[width="100%",cols="3m,2,14",options="header"]
-|===
-| Variable | Type    | Description
-| window   | pointer | Window
-| buffer   | pointer | Buffer
-|===
-
-The hashtable contains all keys/values from hashtable received (type:
-string/string).
-
-[[trigger_examples]]
-==== Examples
-
-[[trigger_example_url_color]]
-===== Color for URLs
-
-Display URLs in green:
-
-----
-/trigger add url_color modifier weechat_print "${tg_notify}" "==\S+://\S+==${color:green}${re:0}${color:reset}=="
-----
-
-[NOTE]
-The simple regex used to detect URL may not catch well all URLs, but it is
-faster than a complex regex.
-
-[[trigger_example_auto_pong]]
-===== Auto pong on ping queries
-
-When someone sends a "ping" in a private buffer, this trigger will auto-reply
-with `pong`:
-
-----
-/trigger add pong print "" "${type} == private && ${tg_message} == ping" "" "pong"
-----
-
-[[trigger_example_responsive_layout]]
-===== Responsive layout
-
-Following triggers can be used to customize things displayed when the size of
-terminal is changed:
-
-----
-/trigger add resize_small signal signal_sigwinch "${info:term_width} < 100" "" "/bar hide nicklist"
-/trigger add resize_big signal signal_sigwinch "${info:term_width} >= 100" "" "/bar show nicklist"
-----
-
-The triggers catch the signal "signal_sigwinch", which is sent by WeeChat when
-signal SIGWINCH is received (when terminal size is changed).
-
-The condition with `${info:term_width}` checks the width of terminal (you can
-also use `${info:term_height}` if needed).
-
-In the example, when the terminal becomes small, the nicklist is hidden. And the
-bar is restored when the width is greater or equal to 100 chars.
-
-[[trigger_example_config_save]]
-===== Automatic save of configuration
-
-You can automatically save configuration files (`*.conf`), for example each
-hour:
-
-----
-/trigger add cfgsave timer 3600000;0;0 "" "" "/mute /save"
-----
-
-Arguments for the timer hook are:
-
-* _3600000_: 3600 * 1000 milliseconds, the callback is called each hour
-* _0_: alignment on second (not aligned here)
-* _0_: max number of calls (0 = no end for the timer)
-
-The command `/mute /save` will silently save configuration files (nothing
-displayed on core buffer).
-
-[[xfer_plugin]]
-=== Xfer plugin
-
-Xfer plugin brings:
-
-* direct chat (between two hosts, without server): for example "DCC Chat" via
-  IRC plugin
-* file transfer, for example "DCC" via IRC plugin
-
-[[xfer_options]]
-==== Options (xfer.conf)
-
-Sections:
-
-[width="100%",cols="3m,6m,16",options="header"]
-|===
-| Section | Control command     | Description
-| look    | /set xfer.look.*    | Look and feel
-| color   | /set xfer.color.*   | Colors
-| network | /set xfer.network.* | Network options
-| file    | /set xfer.file.*    | Options for files sent/received
-|===
-
-Options:
-
-include::autogen/user/xfer_options.asciidoc[]
-
-[[xfer_commands]]
-==== Commands
-
-include::autogen/user/xfer_commands.asciidoc[]
-
-[[support]]
-== Support
-
-Before asking for support, be sure you've read documentation and FAQ provided
-with WeeChat.
-
-For support with IRC, on server _chat.freenode.net_:
-
-* official channels (with developers):
-** _#weechat_ (English)
-** _#weechat-fr_ (French)
-* non-official channels:
-** _#weechat-de_ (German)
-
-For other ways of support, see: https://weechat.org/dev/support
-- 
cgit v1.2.3

