summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/Makefile.am21
-rw-r--r--docs/Makefile.in794
-rw-r--r--docs/capsicum.txt31
-rw-r--r--docs/design.html165
-rw-r--r--docs/design.txt139
-rw-r--r--docs/faq.html81
-rw-r--r--docs/faq.txt124
-rw-r--r--docs/formats.txt75
-rw-r--r--docs/help/Makefile.am127
-rw-r--r--docs/help/Makefile.am.gen13
-rw-r--r--docs/help/Makefile.in850
-rw-r--r--docs/help/accept30
-rw-r--r--docs/help/action23
-rw-r--r--docs/help/admin22
-rw-r--r--docs/help/alias37
-rw-r--r--docs/help/away33
-rw-r--r--docs/help/ban43
-rw-r--r--docs/help/beep15
-rw-r--r--docs/help/bind35
-rw-r--r--docs/help/cat28
-rw-r--r--docs/help/cd21
-rw-r--r--docs/help/channel50
-rw-r--r--docs/help/clear19
-rw-r--r--docs/help/completion35
-rw-r--r--docs/help/connect44
-rw-r--r--docs/help/ctcp23
-rw-r--r--docs/help/cycle22
-rw-r--r--docs/help/dcc49
-rw-r--r--docs/help/dehilight20
-rw-r--r--docs/help/deop23
-rw-r--r--docs/help/devoice26
-rw-r--r--docs/help/die15
-rw-r--r--docs/help/disconnect26
-rw-r--r--docs/help/echo24
-rw-r--r--docs/help/eval35
-rw-r--r--docs/help/exec52
-rw-r--r--docs/help/flushbuffer18
-rw-r--r--docs/help/format25
-rw-r--r--docs/help/hash22
-rw-r--r--docs/help/help27
-rw-r--r--docs/help/hilight43
-rw-r--r--docs/help/ignore56
-rw-r--r--docs/help/in/Makefile.am119
-rw-r--r--docs/help/in/Makefile.am.gen5
-rw-r--r--docs/help/in/Makefile.in611
-rw-r--r--docs/help/in/accept.in30
-rw-r--r--docs/help/in/action.in23
-rw-r--r--docs/help/in/admin.in22
-rw-r--r--docs/help/in/alias.in37
-rw-r--r--docs/help/in/away.in33
-rw-r--r--docs/help/in/ban.in42
-rw-r--r--docs/help/in/beep.in15
-rw-r--r--docs/help/in/bind.in35
-rw-r--r--docs/help/in/cat.in28
-rw-r--r--docs/help/in/cd.in21
-rw-r--r--docs/help/in/channel.in48
-rw-r--r--docs/help/in/clear.in19
-rw-r--r--docs/help/in/completion.in35
-rw-r--r--docs/help/in/connect.in44
-rw-r--r--docs/help/in/ctcp.in23
-rw-r--r--docs/help/in/cycle.in22
-rw-r--r--docs/help/in/dcc.in45
-rw-r--r--docs/help/in/dehilight.in20
-rw-r--r--docs/help/in/deop.in23
-rw-r--r--docs/help/in/devoice.in26
-rw-r--r--docs/help/in/die.in15
-rw-r--r--docs/help/in/disconnect.in26
-rw-r--r--docs/help/in/echo.in24
-rw-r--r--docs/help/in/eval.in35
-rw-r--r--docs/help/in/exec.in50
-rw-r--r--docs/help/in/flushbuffer.in19
-rw-r--r--docs/help/in/format.in25
-rw-r--r--docs/help/in/hash.in22
-rw-r--r--docs/help/in/help.in27
-rw-r--r--docs/help/in/hilight.in43
-rw-r--r--docs/help/in/ignore.in55
-rw-r--r--docs/help/in/info.in21
-rw-r--r--docs/help/in/invite.in21
-rw-r--r--docs/help/in/irssiproxy.in14
-rw-r--r--docs/help/in/ison.in20
-rw-r--r--docs/help/in/join.in26
-rw-r--r--docs/help/in/kick.in24
-rw-r--r--docs/help/in/kickban.in22
-rw-r--r--docs/help/in/kill.in24
-rw-r--r--docs/help/in/knock.in30
-rw-r--r--docs/help/in/knockout.in26
-rw-r--r--docs/help/in/lastlog.in43
-rw-r--r--docs/help/in/layout.in28
-rw-r--r--docs/help/in/levels.in42
-rw-r--r--docs/help/in/links.in22
-rw-r--r--docs/help/in/list.in38
-rw-r--r--docs/help/in/load.in23
-rw-r--r--docs/help/in/log.in48
-rw-r--r--docs/help/in/lusers.in24
-rw-r--r--docs/help/in/map.in16
-rw-r--r--docs/help/in/me.in21
-rw-r--r--docs/help/in/mircdcc.in28
-rw-r--r--docs/help/in/mode.in77
-rw-r--r--docs/help/in/motd.in22
-rw-r--r--docs/help/in/msg.in33
-rw-r--r--docs/help/in/names.in27
-rw-r--r--docs/help/in/nctcp.in21
-rw-r--r--docs/help/in/netsplit.in16
-rw-r--r--docs/help/in/network.in70
-rw-r--r--docs/help/in/nick.in20
-rw-r--r--docs/help/in/notice.in23
-rw-r--r--docs/help/in/notify.in29
-rw-r--r--docs/help/in/op.in23
-rw-r--r--docs/help/in/oper.in21
-rw-r--r--docs/help/in/otr.in111
-rw-r--r--docs/help/in/part.in20
-rw-r--r--docs/help/in/ping.in22
-rw-r--r--docs/help/in/query.in24
-rw-r--r--docs/help/in/quit.in21
-rw-r--r--docs/help/in/quote.in20
-rw-r--r--docs/help/in/rawlog.in26
-rw-r--r--docs/help/in/recode.in39
-rw-r--r--docs/help/in/reconnect.in22
-rw-r--r--docs/help/in/rehash.in21
-rw-r--r--docs/help/in/reload.in21
-rw-r--r--docs/help/in/restart.in16
-rw-r--r--docs/help/in/rmreconns.in15
-rw-r--r--docs/help/in/rmrejoins.in15
-rw-r--r--docs/help/in/save.in24
-rw-r--r--docs/help/in/sconnect.in25
-rw-r--r--docs/help/in/script.in34
-rw-r--r--docs/help/in/scrollback.in37
-rw-r--r--docs/help/in/server.in78
-rw-r--r--docs/help/in/servlist.in23
-rw-r--r--docs/help/in/set.in35
-rw-r--r--docs/help/in/silence.in29
-rw-r--r--docs/help/in/squery.in16
-rw-r--r--docs/help/in/squit.in20
-rw-r--r--docs/help/in/stats.in43
-rw-r--r--docs/help/in/statusbar.in65
-rw-r--r--docs/help/in/time.in23
-rw-r--r--docs/help/in/toggle.in22
-rw-r--r--docs/help/in/topic.in25
-rw-r--r--docs/help/in/trace.in25
-rw-r--r--docs/help/in/ts.in15
-rw-r--r--docs/help/in/unalias.in20
-rw-r--r--docs/help/in/unban.in45
-rw-r--r--docs/help/in/unignore.in20
-rw-r--r--docs/help/in/unload.in19
-rw-r--r--docs/help/in/unnotify.in20
-rw-r--r--docs/help/in/unquery.in21
-rw-r--r--docs/help/in/unsilence.in21
-rw-r--r--docs/help/in/upgrade.in22
-rw-r--r--docs/help/in/uptime.in15
-rw-r--r--docs/help/in/userhost.in22
-rw-r--r--docs/help/in/ver.in22
-rw-r--r--docs/help/in/version.in22
-rw-r--r--docs/help/in/voice.in23
-rw-r--r--docs/help/in/wait.in21
-rw-r--r--docs/help/in/wall.in23
-rw-r--r--docs/help/in/wallops.in20
-rw-r--r--docs/help/in/who.in36
-rw-r--r--docs/help/in/whois.in30
-rw-r--r--docs/help/in/whowas.in24
-rw-r--r--docs/help/in/window.in78
-rw-r--r--docs/help/info21
-rw-r--r--docs/help/invite21
-rw-r--r--docs/help/irssiproxy15
-rw-r--r--docs/help/ison20
-rw-r--r--docs/help/join26
-rw-r--r--docs/help/kick24
-rw-r--r--docs/help/kickban22
-rw-r--r--docs/help/kill24
-rw-r--r--docs/help/knock30
-rw-r--r--docs/help/knockout26
-rw-r--r--docs/help/lastlog43
-rw-r--r--docs/help/layout29
-rw-r--r--docs/help/levels42
-rw-r--r--docs/help/links22
-rw-r--r--docs/help/list38
-rw-r--r--docs/help/load23
-rw-r--r--docs/help/log51
-rw-r--r--docs/help/lusers24
-rw-r--r--docs/help/map16
-rw-r--r--docs/help/me21
-rw-r--r--docs/help/meson.build121
-rw-r--r--docs/help/mircdcc28
-rw-r--r--docs/help/mode77
-rw-r--r--docs/help/motd22
-rw-r--r--docs/help/msg33
-rw-r--r--docs/help/names27
-rw-r--r--docs/help/nctcp21
-rw-r--r--docs/help/netsplit16
-rw-r--r--docs/help/network71
-rw-r--r--docs/help/nick20
-rw-r--r--docs/help/notice23
-rw-r--r--docs/help/notify29
-rw-r--r--docs/help/op23
-rw-r--r--docs/help/oper21
-rw-r--r--docs/help/otr104
-rw-r--r--docs/help/part20
-rw-r--r--docs/help/ping22
-rw-r--r--docs/help/query24
-rw-r--r--docs/help/quit21
-rw-r--r--docs/help/quote20
-rw-r--r--docs/help/rawlog28
-rw-r--r--docs/help/recode41
-rw-r--r--docs/help/reconnect22
-rw-r--r--docs/help/rehash21
-rw-r--r--docs/help/reload21
-rw-r--r--docs/help/restart16
-rw-r--r--docs/help/rmreconns15
-rw-r--r--docs/help/rmrejoins14
-rw-r--r--docs/help/save24
-rw-r--r--docs/help/sconnect25
-rw-r--r--docs/help/script33
-rw-r--r--docs/help/scrollback42
-rw-r--r--docs/help/server82
-rw-r--r--docs/help/servlist23
-rw-r--r--docs/help/set35
-rw-r--r--docs/help/silence30
-rw-r--r--docs/help/squery16
-rw-r--r--docs/help/squit20
-rw-r--r--docs/help/stats43
-rw-r--r--docs/help/statusbar69
-rw-r--r--docs/help/time23
-rw-r--r--docs/help/toggle22
-rw-r--r--docs/help/topic25
-rw-r--r--docs/help/trace25
-rw-r--r--docs/help/ts15
-rw-r--r--docs/help/unalias20
-rw-r--r--docs/help/unban45
-rw-r--r--docs/help/unignore20
-rw-r--r--docs/help/unload19
-rw-r--r--docs/help/unnotify20
-rw-r--r--docs/help/unquery21
-rw-r--r--docs/help/unsilence21
-rw-r--r--docs/help/upgrade22
-rw-r--r--docs/help/uptime15
-rw-r--r--docs/help/userhost22
-rw-r--r--docs/help/ver22
-rw-r--r--docs/help/version23
-rw-r--r--docs/help/voice23
-rw-r--r--docs/help/wait21
-rw-r--r--docs/help/wall23
-rw-r--r--docs/help/wallops20
-rw-r--r--docs/help/who36
-rw-r--r--docs/help/whois30
-rw-r--r--docs/help/whowas24
-rw-r--r--docs/help/window119
-rw-r--r--docs/irssi.188
-rw-r--r--docs/manual.txt957
-rw-r--r--docs/meson.build18
-rw-r--r--docs/perl.txt1203
-rw-r--r--docs/signals.txt375
-rw-r--r--docs/special_vars.txt132
-rw-r--r--docs/startup-HOWTO.html686
-rw-r--r--docs/startup-HOWTO.txt799
253 files changed, 14262 insertions, 0 deletions
diff --git a/docs/Makefile.am b/docs/Makefile.am
new file mode 100644
index 0000000..05ebb31
--- /dev/null
+++ b/docs/Makefile.am
@@ -0,0 +1,21 @@
+man_MANS = \
+ irssi.1
+
+doc_DATA = \
+ capsicum.txt \
+ design.html \
+ design.txt \
+ formats.txt \
+ manual.txt \
+ faq.html \
+ faq.txt \
+ perl.txt \
+ signals.txt \
+ special_vars.txt \
+ startup-HOWTO.html \
+ startup-HOWTO.txt
+
+EXTRA_DIST = $(doc_DATA) $(man_MANS) \
+ meson.build
+
+SUBDIRS = help
diff --git a/docs/Makefile.in b/docs/Makefile.in
new file mode 100644
index 0000000..a1cc567
--- /dev/null
+++ b/docs/Makefile.in
@@ -0,0 +1,794 @@
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = docs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/glib-2.0.m4 \
+ $(top_srcdir)/m4/glibtests.m4 $(top_srcdir)/m4/libgcrypt.m4 \
+ $(top_srcdir)/m4/libotr.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/irssi-config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)"
+NROFF = nroff
+MANS = $(man_MANS)
+DATA = $(doc_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir distdir-am
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHAT_MODULES = @CHAT_MODULES@
+COMMON_LIBS = @COMMON_LIBS@
+COMMON_NOUI_LIBS = @COMMON_NOUI_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ETAGS = @ETAGS@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FILECMD = @FILECMD@
+FUZZER_LIBS = @FUZZER_LIBS@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
+LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
+LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBOTR_CFLAGS = @LIBOTR_CFLAGS@
+LIBOTR_LIBS = @LIBOTR_LIBS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
+OPENSSL_LIBS = @OPENSSL_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+OTR_CFLAGS = @OTR_CFLAGS@
+OTR_LDFLAGS = @OTR_LDFLAGS@
+OTR_LINK_FLAGS = @OTR_LINK_FLAGS@
+OTR_LINK_LIBS = @OTR_LINK_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_CFLAGS = @PERL_CFLAGS@
+PERL_EXTRA_OPTS = @PERL_EXTRA_OPTS@
+PERL_FE_LINK_LIBS = @PERL_FE_LINK_LIBS@
+PERL_LDFLAGS = @PERL_LDFLAGS@
+PERL_LINK_FLAGS = @PERL_LINK_FLAGS@
+PERL_LINK_LIBS = @PERL_LINK_LIBS@
+PERL_MM_OPT = @PERL_MM_OPT@
+PERL_MM_PARAMS = @PERL_MM_PARAMS@
+PERL_STATIC_LIBS = @PERL_STATIC_LIBS@
+PERL_USE_LIB = @PERL_USE_LIB@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PROG_LIBS = @PROG_LIBS@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TEXTUI_LIBS = @TEXTUI_LIBS@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+installed_test_metadir = @installed_test_metadir@
+installed_testdir = @installed_testdir@
+irc_MODULES = @irc_MODULES@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+otr_module_lib = @otr_module_lib@
+otr_static_lib = @otr_static_lib@
+pdfdir = @pdfdir@
+perl_module_fe_lib = @perl_module_fe_lib@
+perl_module_lib = @perl_module_lib@
+perl_static_fe_lib = @perl_static_fe_lib@
+perl_static_lib = @perl_static_lib@
+perlpath = @perlpath@
+pkgconfigdir = @pkgconfigdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sedpath = @sedpath@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+man_MANS = \
+ irssi.1
+
+doc_DATA = \
+ capsicum.txt \
+ design.html \
+ design.txt \
+ formats.txt \
+ manual.txt \
+ faq.html \
+ faq.txt \
+ perl.txt \
+ signals.txt \
+ special_vars.txt \
+ startup-HOWTO.html \
+ startup-HOWTO.txt
+
+EXTRA_DIST = $(doc_DATA) $(man_MANS) \
+ meson.build
+
+SUBDIRS = help
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign docs/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-docDATA: $(doc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
+ done
+
+uninstall-docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(MANS) $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-docDATA install-man
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-docDATA uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic clean-libtool cscopelist-am ctags \
+ ctags-am distclean distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-docDATA install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-man1 install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am uninstall-docDATA \
+ uninstall-man uninstall-man1
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/docs/capsicum.txt b/docs/capsicum.txt
new file mode 100644
index 0000000..a3a1b8a
--- /dev/null
+++ b/docs/capsicum.txt
@@ -0,0 +1,31 @@
+Capsicum is a lightweight OS capability and sandbox framework provided
+by FreeBSD. When built with Capsicum support - which is the default under
+FreeBSD - Irssi can enter a Capsicum capability mode (a sandbox), greatly
+limiting possible consequences of a potential security hole in Irssi
+or the libraries it depends on.
+
+To make Irssi enter capability mode on startup, add
+
+capsicum = "yes";
+awaylog_file = "~/irclogs/away.log";
+
+to your ~/.irssi/config and restart the client. Alternatively you can
+enter it "by hand", using the "/capsicum enter" command. From the security
+point of view it's strongly preferable to use the former method, to avoid
+establishing connections without the sandbox protection; the "/capsicum"
+command is only intended for experimentation, and in cases where you need
+to do something that's not possible in capability mode - run scripts,
+for example - before continuing.
+
+There is no way to leave the capability mode, apart from exiting Irssi.
+When running in capability mode, there are certain restrictions - Irssi
+won't be able to access any files outside the directory pointed to by
+capsicum_irclogs_path (which defaults to ~/irclogs/). If you change
+the path when already in capability mode it won't be effective until
+you restart Irssi. Capability mode also makes it impossible to use
+the "/save" command.
+
+Currently there is no way to use custom SSL certificates. As a workaround
+you can establish connections and enter the capability mode afterwards
+using the "/capsicum enter" command.
+
diff --git a/docs/design.html b/docs/design.html
new file mode 100644
index 0000000..3865a7f
--- /dev/null
+++ b/docs/design.html
@@ -0,0 +1,165 @@
+<base href='https://irssi.org/documentation/design/'>
+<h1>Design</h1>
+ <p>Irssi’s hierarchy is something like this:</p>
+
+<pre class="repl" id="fig1"><code class="language-ascidia">
+ sub1 sub2
+ \ /
+ xxx IRC COMMON ICQ yyy
+ | | | | |
+ '----+-----:-----+----+----'
+ |
+ GUI (gtk/gnome, qt/kde, text, none)
+ |
+ sub1 sub2 |
+ \ / |
+ xxx IRC | COMMON ICQ yyy
+ '----+-----+-----+----+----'
+ |
+ COMMON UI
+ |
+ sub1 sub2 |
+ \ / |
+ xxx IRC | ICQ yyy
+ | | | | |
+ '----+-----+-----+----'
+ |
+ CORE
+ /
+ lib-config
+
+</code></pre>
+
+<p>(IRC, ICQ, xxx and yyy are chat protocols ..)</p>
+
+<p>(sub1 and sub2 are submodules of IRC module, like DCC and flood protect)</p>
+
+<p>Chat protocols and frontends are kept in separate modules. Common UI
+and GUI modules also have the common parts which don’t know anything
+about the chat protocols. This should allow implementing modules to
+whatever chat protocols and with whatever frontends easily.</p>
+
+<h2 id="signals">Signals</h2>
+
+<p>Communication between different modules are done with “signals”. They are
+not related to UNIX signals in any way, you could more like think of them
+as “events” - which might be a better name for them, but I don’t really
+want to change it anymore :)</p>
+
+<p>So, you send signal with <code>signal_emit()</code> and it’s sent to all modules that
+have grabbed it by calling <code>signal_add()</code> in their init function. For
+example:</p>
+
+<div><div><pre><code>signal_emit("mysignal", 1, "hello");
+</code></pre></div></div>
+
+<p>Sends a “mysignal” function with one argument “hello” - before that, you
+should have grabbed the signal somewhere else with:</p>
+
+<div><div><pre><code>static void sig_mysignal(const char *arg1)
+{
+ /* arg1 contains "hello" */
+}
+
+signal_add("mysignal", (SIGNAL_FUNC) sig_mysignal);
+</code></pre></div></div>
+
+<p>There are three different <code>signal_add()</code> functions which you can use to
+specify if you want to grab the signal first, “normally” or last. You can
+also stop the signal from going any further.</p>
+
+<p>Emitting signal with it’s name creates a small overhead since it has to
+look up the signal’s numeric ID first, after which it looks up the signal
+structure. This is done because if you call a signal <em>really</em> often,
+it’s faster to find it with it’s numeric ID instead of the string. You
+can use <code>signal_get_uniq_id()</code> macro to convert the signal name into ID -
+you’ll have to do this only once! - and use <code>signal_emit_id()</code> to emit the
+signal. Don’t bother to do this unless your signal is sent (or could be
+sent) several times in a second.</p>
+
+<p>See <code>src/core/signals.h</code> for definition of the signal function, and
+signals.txt for a list of signals.</p>
+
+<h2 id="lib-config">lib-config</h2>
+
+<p>Irssi depends on this for reading and saving configuration.
+(created by me for irssi)</p>
+
+<h2 id="core-module">CORE module</h2>
+
+<p>Provides some functionality that all other modules can use:</p>
+<ul>
+ <li>signal handling</li>
+ <li>keeping list of settings</li>
+ <li>keeping list of /commands</li>
+ <li>keeping track of loaded modules</li>
+ <li>networking functions (with nonblocking connects, IPv6 support)</li>
+ <li>handles connecting to servers</li>
+ <li>raw logging of server’s input/output data</li>
+ <li>/EVAL support</li>
+ <li>fgets() like function line_split() without any maximum line limits</li>
+ <li>command line parameter handling</li>
+ <li>miscellaneous useful little functions</li>
+ <li>handles logging</li>
+</ul>
+
+<h2 id="common-ui-module">COMMON UI module</h2>
+
+<ul>
+ <li>knows basics about windows and window items (=channels, queries, ..)</li>
+ <li>printtext() - parsing texts and feeding it for GUI to print.</li>
+ <li>themes</li>
+ <li>translation tables</li>
+ <li>text hilighting</li>
+ <li>command history</li>
+ <li>user interface (/commands) for CORE’s functionality</li>
+</ul>
+
+<h2 id="gui-modules">GUI modules</h2>
+
+<ul>
+ <li>all the rest of the functionality needed for a working client.</li>
+</ul>
+
+<h2 id="irc-module">IRC module</h2>
+
+<ul>
+ <li>CORE
+ <ul>
+ <li>IRC specific /commands</li>
+ <li>flood protecting commands sent to server</li>
+ <li>creating IRC masks based on nick/address for bans, ignores, etc.</li>
+ <li>keeps list of channels, nicks, channel modes, bans, etc.</li>
+ <li>keeps list of servers, server settings, irc networks,
+server reconnections and irc network splits</li>
+ <li>redirection of commands’ replies</li>
+ <li>lag detection</li>
+ <li>ctcp support and flood protection</li>
+ <li>Handles ignoring people</li>
+ </ul>
+ </li>
+ <li>DCC
+ <ul>
+ <li>DCC chat, send and get</li>
+ </ul>
+ </li>
+ <li>FLOOD
+ <ul>
+ <li>detects private or channel flooding and sends “flood” signal</li>
+ <li>automatic ignoring when flooding</li>
+ </ul>
+ </li>
+ <li>NOTIFYLIST
+ <ul>
+ <li>handles notifylist</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="irc-ui-module">IRC UI module</h2>
+
+<ul>
+ <li>placing channels and queries in windows</li>
+ <li>nick completion</li>
+ <li>printing infomation of some events</li>
+</ul> \ No newline at end of file
diff --git a/docs/design.txt b/docs/design.txt
new file mode 100644
index 0000000..6888f21
--- /dev/null
+++ b/docs/design.txt
@@ -0,0 +1,139 @@
+Design
+
+Irssi’s hierarchy is something like this:
+
+ sub1 sub2
+ \ /
+ xxx IRC COMMON ICQ yyy
+ | | | | |
+ '----+-----:-----+----+----'
+ |
+ GUI (gtk/gnome, qt/kde, text, none)
+ |
+ sub1 sub2 |
+ \ / |
+ xxx IRC | COMMON ICQ yyy
+ '----+-----+-----+----+----'
+ |
+ COMMON UI
+ |
+ sub1 sub2 |
+ \ / |
+ xxx IRC | ICQ yyy
+ | | | | |
+ '----+-----+-----+----'
+ |
+ CORE
+ /
+ lib-config
+
+
+(IRC, ICQ, xxx and yyy are chat protocols ..)
+
+(sub1 and sub2 are submodules of IRC module, like DCC and flood protect)
+
+Chat protocols and frontends are kept in separate modules. Common UI and GUI
+modules also have the common parts which don’t know anything about the chat
+protocols. This should allow implementing modules to whatever chat protocols
+and with whatever frontends easily.
+
+Signals
+
+Communication between different modules are done with “signals”. They are not
+related to UNIX signals in any way, you could more like think of them as
+“events” - which might be a better name for them, but I don’t really want to
+change it anymore :)
+
+So, you send signal with signal_emit() and it’s sent to all modules that have
+grabbed it by calling signal_add() in their init function. For example:
+
+signal_emit("mysignal", 1, "hello");
+
+Sends a “mysignal” function with one argument “hello” - before that, you should
+have grabbed the signal somewhere else with:
+
+static void sig_mysignal(const char *arg1)
+{
+ /* arg1 contains "hello" */
+}
+
+signal_add("mysignal", (SIGNAL_FUNC) sig_mysignal);
+
+There are three different signal_add() functions which you can use to specify
+if you want to grab the signal first, “normally” or last. You can also stop the
+signal from going any further.
+
+Emitting signal with it’s name creates a small overhead since it has to look up
+the signal’s numeric ID first, after which it looks up the signal structure.
+This is done because if you call a signal really often, it’s faster to find it
+with it’s numeric ID instead of the string. You can use signal_get_uniq_id()
+macro to convert the signal name into ID - you’ll have to do this only once! -
+and use signal_emit_id() to emit the signal. Don’t bother to do this unless
+your signal is sent (or could be sent) several times in a second.
+
+See src/core/signals.h for definition of the signal function, and signals.txt
+for a list of signals.
+
+lib-config
+
+Irssi depends on this for reading and saving configuration. (created by me for
+irssi)
+
+CORE module
+
+Provides some functionality that all other modules can use:
+
+ • signal handling
+ • keeping list of settings
+ • keeping list of /commands
+ • keeping track of loaded modules
+ • networking functions (with nonblocking connects, IPv6 support)
+ • handles connecting to servers
+ • raw logging of server’s input/output data
+ • /EVAL support
+ • fgets() like function line_split() without any maximum line limits
+ • command line parameter handling
+ • miscellaneous useful little functions
+ • handles logging
+
+COMMON UI module
+
+ • knows basics about windows and window items (=channels, queries, ..)
+ • printtext() - parsing texts and feeding it for GUI to print.
+ • themes
+ • translation tables
+ • text hilighting
+ • command history
+ • user interface (/commands) for CORE’s functionality
+
+GUI modules
+
+ • all the rest of the functionality needed for a working client.
+
+IRC module
+
+ • CORE
+ □ IRC specific /commands
+ □ flood protecting commands sent to server
+ □ creating IRC masks based on nick/address for bans, ignores, etc.
+ □ keeps list of channels, nicks, channel modes, bans, etc.
+ □ keeps list of servers, server settings, irc networks, server
+ reconnections and irc network splits
+ □ redirection of commands’ replies
+ □ lag detection
+ □ ctcp support and flood protection
+ □ Handles ignoring people
+ • DCC
+ □ DCC chat, send and get
+ • FLOOD
+ □ detects private or channel flooding and sends “flood” signal
+ □ automatic ignoring when flooding
+ • NOTIFYLIST
+ □ handles notifylist
+
+IRC UI module
+
+ • placing channels and queries in windows
+ • nick completion
+ • printing infomation of some events
+
diff --git a/docs/faq.html b/docs/faq.html
new file mode 100644
index 0000000..50b404a
--- /dev/null
+++ b/docs/faq.html
@@ -0,0 +1,81 @@
+<base href='https://irssi.org/documentation/faq/'>
+<h1>Frequently Asked Questions</h1>
+ <h3 id="q-why-doesnt-irssi-display-colors-even-when-ircii-etc-displays-them">Q: Why doesn’t irssi display colors even when ircii etc. displays them?</h3>
+
+<p>A: They force ANSI colors even if terminal doesn’t support them. By default, irssi uses colors only if terminfo/termcap so says. The correct way to fix this would be to change your TERM environment to a value where colors work, like xterm-256color or color_xterm (eg. <code>TERM=xterm-256color irssi</code>). If this doesn’t help, then use the evil way of <code>/SET term_force_colors ON</code>.</p>
+
+<h3 id="q-how-do-i-easily-write-text-to-channel-that-starts-with--character">Q: How do I easily write text to channel that starts with ‘/’ character?</h3>
+
+<p>A: <code>/ /text</code></p>
+
+<h3 id="q-why-doesnt-irssi-update-my-realname-or-whatever-after-i-change-it-with-set-realname-and-reconnect-with-reconnect-or-server">Q: Why doesn’t irssi update my realname (or whatever) after I change it with <code>/SET realname</code> and reconnect with <code>/RECONNECT</code> or <code>/SERVER</code>?</h3>
+
+<p>A: Irssi is trying to be too smart. This will be fixed in future, but for now you should use <code>/DISCONNECT</code> and <code>/CONNECT</code>.</p>
+
+<h3 id="q-i-connected-to-some-server-which-isnt-responding-but-now-irssi-tries-to-connect-back-to-it-all-the-time-how-can-i-stop-it">Q: I connected to some server which isn’t responding but now irssi tries to connect back to it all the time! How can I stop it?</h3>
+
+<p>A: Two ways. The “good way” to do it is with <code>/DISCONNECT</code>. Check the server tags first with <code>/SERVER</code> without giving it any parameters, reconnections are those that have tag starting with “recon” text. So most probably you’re going to do <code>/DISCONNECT recon-1</code>. The other way is to remove all the reconnections with <code>/RMRECONNS</code>, easier but may remove some connections you actually wanted to reconnect (if you used multiple servers..).</p>
+
+<h3 id="q-how-do-i-add-seconds-to-timestamp">Q: How do I add seconds to timestamp?</h3>
+
+<p>A: <code>/FORMAT timestamp {timestamp %%H:%%M:%%S}</code> - and remember to add the trailing space :)</p>
+
+<h3 id="q-why-does-irssi-say-irssi-channel-not-fully-synchronized-yet-try-again-after-a-while-when-i-try-to-use-ban-etc">Q: Why does irssi say “Irssi: Channel not fully synchronized yet, try again after a while” when I try to use /BAN etc?</h3>
+
+<p>A: Possibly a bug in irssi, or ircd you’re using does something that irssi didn’t really notice. The new code should make this happen far less often than before, but one known reason for this is when irssi doesn’t notice that you were unable to join some channel. Currently however I don’t know of any such events irssi doesn’t know about.</p>
+
+<p>Anyway, if this does happen, do <code>/RAWLOG SAVE ~/rawlog</code> soon after joining to channel, and either try to figure out yourself why irssi didn’t get reply to WHO request, or open a Github issue with the full log included. Note that the rawlog is by default only 200 lines and it may not be enough to show all needed information, so you might want to do <code>/SET rawlog_lines 1000</code> or so.</p>
+
+<p><code>MODE +b</code> still works fine though.</p>
+
+<h3 id="q-wheres-the-gui-version">Q: Where’s the GUI version?</h3>
+
+<p>A: There was one on <a href="https://github.com/irssi-import/xirssi">irssi-import/xirssi</a> but it has not been maintained for a long time.</p>
+
+<h3 id="q-how-do-i-autorejoin-channels-after-being-kicked">Q: How do I autorejoin channels after being kicked?</h3>
+
+<p>A: That’s evil and you shouldn’t do it. If you get kicked, you should stay out, at least until the channel forgot you existed :) Most channels I’ve joined just ban you if you autorejoin after kick. If you’re joined to channels who kick people for fun, try changing channels or something.</p>
+
+<p>Anyway, if you REALLY want to do that, and you understand that you’re doing evilness, you can use the autorejoin.pl script that comes with irssi. You’ll still need to specify the channels you wish to rejoin with <code>/SET autorejoin_channels #chan1 #chan2 ...</code></p>
+
+<h3 id="q-how-do-i-announce-that-im-awayback-in-all-channels-ive-joined-or-how-do-i-change-my-nick-when-setting-myself-awayback">Q: How do I announce that I’m away/back in all channels I’ve joined? Or how do I change my nick when setting myself away/back?</h3>
+
+<p>A: That’s even worse than autorejoin. Who could possibly care every time you come and go? Many channels will kick you for using this, and I for example have added several ignores so I’d never need to see these messages. Learn to use <code>/AWAY</code> command properly and tell its existence to people who don’t know about it. <code>/WII yournick</code> shows your away reason much better for people who actually want to know if you’re there or not.</p>
+
+<h3 id="q-why-does-irssi-autojoin-on-invite-by-default">Q: Why does irssi autojoin on invite by default?</h3>
+
+<p>A: The setting is /SET join_auto_chans_on_invite - it’s not the same as regular autojoin-on-invite, which irssi doesn’t even have. The only channels that are joined on invite, are the ones you’ve added to config with /CHANNEL ADD -auto. This is very useful with +i channels when you need to first send an invite request to bot, or if you get accidentally kicked from channel, the kicker can invite you back immediately.</p>
+
+<p>I don’t see any bad side effects with this feature, so it’s ON by default. I guess someone could start kicking/inviting you all the time but server connection shouldn’t drop because of that, and you shouldn’t join channels whose operators are that evil.</p>
+
+<h3 id="q-how-to-make-utf-8-support-work-with-irssi">Q: How to make UTF-8 support work with irssi?</h3>
+
+<p>A: Make sure your terminal supports UTF-8 (for example, <code>xterm -u8</code>). If you use screen, you may have to do <code>screen -U</code>. And in Irssi do <code>/SET term_charset utf-8</code>. (for 0.8.9 and older: <code>/SET term_type utf-8</code>)</p>
+
+<h3 id="q-will-there-be-detach-like-feature">Q: Will there be /DETACH-like feature?</h3>
+
+<p>A: <a href="https://tmux.github.io/">tmux</a>, <a href="https://www.gnu.org/software/screen/screen.html">screen</a> and <a href="https://sourceforge.net/projects/dtach/">dtach</a> can be used to do it just fine.</p>
+
+<h3 id="q-how-do-i-run-scripts-automatically-at-startup">Q: How do I run scripts automatically at startup?</h3>
+
+<p>A: Put them into <code>~/.irssi/scripts/autorun/</code> directory. Or better would be if you placed them in <code>~/.irssi/scripts/</code> and created symlinks to autorun directory (eg. <code>cd ~/.irssi/scripts/autorun/ ; ln -s ../script.pl .</code>)</p>
+
+<h3 id="q-how-do-i-execute-commands-automatically-at-startup">Q: How do I execute commands automatically at startup?</h3>
+
+<p>A: Put them into <code>~/.irssi/startup</code> file, each command on its own line. The preceding slash (/) is not necessary.</p>
+
+<h3 id="q-how-do-i-easily-edit-existing-topic">Q: How do I easily edit existing topic?</h3>
+
+<p>A: <code>/TOPIC &lt;tab&gt;</code></p>
+
+<h3 id="q-how-can-i-have-whois-replies-to-active-window">Q: How can I have /WHOIS replies to active window?</h3>
+
+<p>A: You can disable the status window, or do <code>/WINDOW LEVEL -CRAP</code> in it which would also make several other messages show up in active window. You can also use a <a href="https://dgl.cx/irssi/hack-whois-in-current-window.pl">script</a>.</p>
+
+<h3 id="q-how-do-i-add-the-active-network-to-the-statusbar">Q: How do I add the active network to the statusbar</h3>
+
+<p>A: Modify the window-line in statusbar section in config file to <code>window = "{sb $winref:$tag/$T{sbmode $M}}";</code></p>
+
+<h3 id="q-how-to-pronounce-irssi">Q: How to pronounce Irssi?</h3>
+
+<p>A: Check <a href="/assets/irssi.wav">here</a></p> \ No newline at end of file
diff --git a/docs/faq.txt b/docs/faq.txt
new file mode 100644
index 0000000..0fcc156
--- /dev/null
+++ b/docs/faq.txt
@@ -0,0 +1,124 @@
+ Frequently Asked Questions
+
+Q: Why doesn’t irssi display colors even when ircii etc. displays them?
+A: They force ANSI colors even if terminal doesn’t support them. By default,
+ irssi uses colors only if terminfo/termcap so says. The correct way to fix this
+ would be to change your TERM environment to a value where colors work, like
+ xterm-256color or color_xterm (eg. TERM=xterm-256color irssi). If this doesn’t
+ help, then use the evil way of /SET term_force_colors ON.
+
+Q: How do I easily write text to channel that starts with ‘/’ character?
+A: / /text
+
+Q: Why doesn’t irssi update my realname (or whatever) after I change it with /
+ SET realname and reconnect with /RECONNECT or /SERVER?
+A: Irssi is trying to be too smart. This will be fixed in future, but for now
+ you should use /DISCONNECT and /CONNECT.
+
+Q: I connected to some server which isn’t responding but now irssi tries to
+ connect back to it all the time! How can I stop it?
+A: Two ways. The “good way” to do it is with /DISCONNECT. Check the server tags
+ first with /SERVER without giving it any parameters, reconnections are those
+ that have tag starting with “recon” text. So most probably you’re going to do /
+ DISCONNECT recon-1. The other way is to remove all the reconnections with /
+ RMRECONNS, easier but may remove some connections you actually wanted to
+ reconnect (if you used multiple servers..).
+
+Q: How do I add seconds to timestamp?
+A: /FORMAT timestamp {timestamp %%H:%%M:%%S} - and remember to add the trailing
+ space :)
+
+Q: Why does irssi say “Irssi: Channel not fully synchronized yet, try again
+ after a while” when I try to use /BAN etc?
+A: Possibly a bug in irssi, or ircd you’re using does something that irssi
+ didn’t really notice. The new code should make this happen far less often than
+ before, but one known reason for this is when irssi doesn’t notice that you
+ were unable to join some channel. Currently however I don’t know of any such
+ events irssi doesn’t know about.
+
+ Anyway, if this does happen, do /RAWLOG SAVE ~/rawlog soon after joining to
+ channel, and either try to figure out yourself why irssi didn’t get reply to
+ WHO request, or open a Github issue with the full log included. Note that the
+ rawlog is by default only 200 lines and it may not be enough to show all needed
+ information, so you might want to do /SET rawlog_lines 1000 or so.
+
+ MODE +b still works fine though.
+
+Q: Where’s the GUI version?
+A: There was one on [1]irssi-import/xirssi but it has not been maintained for a
+ long time.
+
+Q: How do I autorejoin channels after being kicked?
+A: That’s evil and you shouldn’t do it. If you get kicked, you should stay out,
+ at least until the channel forgot you existed :) Most channels I’ve joined just
+ ban you if you autorejoin after kick. If you’re joined to channels who kick
+ people for fun, try changing channels or something.
+
+ Anyway, if you REALLY want to do that, and you understand that you’re doing
+ evilness, you can use the autorejoin.pl script that comes with irssi. You’ll
+ still need to specify the channels you wish to rejoin with /SET
+ autorejoin_channels #chan1 #chan2 ...
+
+Q: How do I announce that I’m away/back in all channels I’ve joined? Or how do
+ I change my nick when setting myself away/back?
+A: That’s even worse than autorejoin. Who could possibly care every time you
+ come and go? Many channels will kick you for using this, and I for example have
+ added several ignores so I’d never need to see these messages. Learn to use /
+ AWAY command properly and tell its existence to people who don’t know about it.
+ /WII yournick shows your away reason much better for people who actually want
+ to know if you’re there or not.
+
+Q: Why does irssi autojoin on invite by default?
+A: The setting is /SET join_auto_chans_on_invite - it’s not the same as regular
+ autojoin-on-invite, which irssi doesn’t even have. The only channels that are
+ joined on invite, are the ones you’ve added to config with /CHANNEL ADD -auto.
+ This is very useful with +i channels when you need to first send an invite
+ request to bot, or if you get accidentally kicked from channel, the kicker can
+ invite you back immediately.
+
+ I don’t see any bad side effects with this feature, so it’s ON by default. I
+ guess someone could start kicking/inviting you all the time but server
+ connection shouldn’t drop because of that, and you shouldn’t join channels
+ whose operators are that evil.
+
+Q: How to make UTF-8 support work with irssi?
+A: Make sure your terminal supports UTF-8 (for example, xterm -u8). If you use
+ screen, you may have to do screen -U. And in Irssi do /SET term_charset utf-8.
+ (for 0.8.9 and older: /SET term_type utf-8)
+
+Q: Will there be /DETACH-like feature?
+A: [2]tmux, [3]screen and [4]dtach can be used to do it just fine.
+
+Q: How do I run scripts automatically at startup?
+A: Put them into ~/.irssi/scripts/autorun/ directory. Or better would be if you
+ placed them in ~/.irssi/scripts/ and created symlinks to autorun directory (eg.
+ cd ~/.irssi/scripts/autorun/ ; ln -s ../script.pl .)
+
+Q: How do I execute commands automatically at startup?
+A: Put them into ~/.irssi/startup file, each command on its own line. The
+ preceding slash (/) is not necessary.
+
+Q: How do I easily edit existing topic?
+A: /TOPIC <tab>
+
+Q: How can I have /WHOIS replies to active window?
+A: You can disable the status window, or do /WINDOW LEVEL -CRAP in it which
+ would also make several other messages show up in active window. You can also
+ use a [5]script.
+
+Q: How do I add the active network to the statusbar
+A: Modify the window-line in statusbar section in config file to window = "{sb
+ $winref:$tag/$T{sbmode $M}}";
+
+Q: How to pronounce Irssi?
+A: Check [6]here
+
+
+ References:
+
+ [1] https://github.com/irssi-import/xirssi
+ [2] https://tmux.github.io/
+ [3] https://www.gnu.org/software/screen/screen.html
+ [4] https://sourceforge.net/projects/dtach/
+ [5] https://dgl.cx/irssi/hack-whois-in-current-window.pl
+ [6] https://irssi.org/assets/irssi.wav
diff --git a/docs/formats.txt b/docs/formats.txt
new file mode 100644
index 0000000..b606385
--- /dev/null
+++ b/docs/formats.txt
@@ -0,0 +1,75 @@
+
+ Irssi's colors that you can use in text formats, hilights, etc. :
+
+ text text background
+ ---------------------------------------------------------------------
+ %k %K %0 black dark grey black
+ %r %R %1 red bold red red
+ %g %G %2 green bold green green
+ %y %Y %3 yellow bold yellow yellow
+ %b %B %4 blue bold blue blue
+ %m %M %5 magenta bold magenta magenta
+ %p %P magenta (think: purple)
+ %c %C %6 cyan bold cyan cyan
+ %w %W %7 white bold white white
+ %n %N Changes the color to "default color", removing
+ all other coloring and formatting. %N is always
+ the terminal's default color. %n is usually too,
+ except in themes it changes to "previous color",
+ ie. hello = "%Rhello%n" and "%G{hello} world"
+ would print hello in red, and %n would turn back
+ into %G making world green.
+ %F Blinking on/off (think: flash)
+ %U Underline on/off
+ %8 Reverse on/off
+ %9 %_ Bold on/off
+ %I Italic on/off
+ %: Insert newline
+ %| Marks the indentation position
+ %# Monospace font on/off (useful with lists and GUI)
+ %% A single %
+ %XAB %xAB Color from extended plane (A=1-7, B=0-Z)
+ %ZAABBCC %zAABBCC HTML color (in hex notation)
+
+ In .theme files %n works a bit differently. See default.theme
+ for more information.
+
+
+ MIRC colors that you can use when writing text to channel:
+
+ foreground (fg) background (bg)
+ -------------------------------------------------------
+ 0 white light gray + blinking fg
+ 1 black black
+ 2 blue blue
+ 3 green green
+ 4 light red red + blinking fg
+ 5 red red
+ 6 magenta (purple) magenta
+ 7 orange orange
+ 8 yellow orange + blinking fg
+ 9 light green green + blinking fg
+ 10 cyan cyan
+ 11 light cyan cyan + blinking fg
+ 12 light blue blue + blinking fg
+ 13 light magenta magenta + blinking fg
+ 14 gray black + blinking fg
+ 15 light gray light gray
+
+ These colors may differ depending on your terminal. In particular
+ the meaning for background may be the same as for the foreground
+ (bright colors, no blinking), and orange often looks like brown or
+ dark yellow.
+
+ How to use these colors ('#' means a number as MIRC color code):
+
+ <Ctrl>-b set bold
+ <Ctrl>-c#[,#] set foreground and optionally background color
+ <Ctrl>-o reset all formats to plain text
+ <Ctrl>-v set inverted color mode
+ <Ctrl>-_ set underline
+ <Ctrl>-7 same as <Ctrl>-_
+
+ To reset a mode set it again, f.e.
+ <Ctrl-C>3<Ctrl-V>FOO<Ctrl-V>BAR
+ creates black on green FOO followed by a green on black BAR
diff --git a/docs/help/Makefile.am b/docs/help/Makefile.am
new file mode 100644
index 0000000..7659d22
--- /dev/null
+++ b/docs/help/Makefile.am
@@ -0,0 +1,127 @@
+# Makefile.am is autogenerated by autogen.sh from Makefile.am.gen
+
+helpdir = $(datadir)/irssi/help
+
+help_DATA = \
+ accept \
+ action \
+ admin \
+ alias \
+ away \
+ ban \
+ beep \
+ bind \
+ cat \
+ cd \
+ channel \
+ clear \
+ completion \
+ connect \
+ ctcp \
+ cycle \
+ dcc \
+ dehilight \
+ deop \
+ devoice \
+ die \
+ disconnect \
+ echo \
+ eval \
+ exec \
+ flushbuffer \
+ format \
+ hash \
+ help \
+ hilight \
+ ignore \
+ info \
+ invite \
+ irssiproxy \
+ ison \
+ join \
+ kick \
+ kickban \
+ kill \
+ knock \
+ knockout \
+ lastlog \
+ layout \
+ levels \
+ links \
+ list \
+ load \
+ log \
+ lusers \
+ map \
+ me \
+ mircdcc \
+ mode \
+ motd \
+ msg \
+ names \
+ nctcp \
+ netsplit \
+ network \
+ nick \
+ notice \
+ notify \
+ op \
+ oper \
+ otr \
+ part \
+ ping \
+ query \
+ quit \
+ quote \
+ rawlog \
+ recode \
+ reconnect \
+ rehash \
+ reload \
+ restart \
+ rmreconns \
+ rmrejoins \
+ save \
+ sconnect \
+ script \
+ scrollback \
+ server \
+ servlist \
+ set \
+ silence \
+ squery \
+ squit \
+ stats \
+ statusbar \
+ time \
+ toggle \
+ topic \
+ trace \
+ ts \
+ unalias \
+ unban \
+ unignore \
+ unload \
+ unnotify \
+ unquery \
+ unsilence \
+ upgrade \
+ uptime \
+ userhost \
+ ver \
+ version \
+ voice \
+ wait \
+ wall \
+ wallops \
+ who \
+ whois \
+ whowas \
+ window
+
+EXTRA_DIST = \
+ Makefile.am.gen \
+ $(help_DATA) \
+ meson.build
+
+SUBDIRS = in
diff --git a/docs/help/Makefile.am.gen b/docs/help/Makefile.am.gen
new file mode 100644
index 0000000..917abe6
--- /dev/null
+++ b/docs/help/Makefile.am.gen
@@ -0,0 +1,13 @@
+# Makefile.am is autogenerated by autogen.sh from Makefile.am.gen
+
+helpdir = $(datadir)/irssi/help
+
+help_DATA = \
+@HELPFILES@
+
+EXTRA_DIST = \
+ Makefile.am.gen \
+ $(help_DATA) \
+ meson.build
+
+SUBDIRS = in
diff --git a/docs/help/Makefile.in b/docs/help/Makefile.in
new file mode 100644
index 0000000..40d7600
--- /dev/null
+++ b/docs/help/Makefile.in
@@ -0,0 +1,850 @@
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile.am is autogenerated by autogen.sh from Makefile.am.gen
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = docs/help
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/glib-2.0.m4 \
+ $(top_srcdir)/m4/glibtests.m4 $(top_srcdir)/m4/libgcrypt.m4 \
+ $(top_srcdir)/m4/libotr.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/irssi-config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(helpdir)"
+DATA = $(help_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir distdir-am
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHAT_MODULES = @CHAT_MODULES@
+COMMON_LIBS = @COMMON_LIBS@
+COMMON_NOUI_LIBS = @COMMON_NOUI_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ETAGS = @ETAGS@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FILECMD = @FILECMD@
+FUZZER_LIBS = @FUZZER_LIBS@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
+LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
+LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBOTR_CFLAGS = @LIBOTR_CFLAGS@
+LIBOTR_LIBS = @LIBOTR_LIBS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
+OPENSSL_LIBS = @OPENSSL_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+OTR_CFLAGS = @OTR_CFLAGS@
+OTR_LDFLAGS = @OTR_LDFLAGS@
+OTR_LINK_FLAGS = @OTR_LINK_FLAGS@
+OTR_LINK_LIBS = @OTR_LINK_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_CFLAGS = @PERL_CFLAGS@
+PERL_EXTRA_OPTS = @PERL_EXTRA_OPTS@
+PERL_FE_LINK_LIBS = @PERL_FE_LINK_LIBS@
+PERL_LDFLAGS = @PERL_LDFLAGS@
+PERL_LINK_FLAGS = @PERL_LINK_FLAGS@
+PERL_LINK_LIBS = @PERL_LINK_LIBS@
+PERL_MM_OPT = @PERL_MM_OPT@
+PERL_MM_PARAMS = @PERL_MM_PARAMS@
+PERL_STATIC_LIBS = @PERL_STATIC_LIBS@
+PERL_USE_LIB = @PERL_USE_LIB@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PROG_LIBS = @PROG_LIBS@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TEXTUI_LIBS = @TEXTUI_LIBS@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+installed_test_metadir = @installed_test_metadir@
+installed_testdir = @installed_testdir@
+irc_MODULES = @irc_MODULES@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+otr_module_lib = @otr_module_lib@
+otr_static_lib = @otr_static_lib@
+pdfdir = @pdfdir@
+perl_module_fe_lib = @perl_module_fe_lib@
+perl_module_lib = @perl_module_lib@
+perl_static_fe_lib = @perl_static_fe_lib@
+perl_static_lib = @perl_static_lib@
+perlpath = @perlpath@
+pkgconfigdir = @pkgconfigdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sedpath = @sedpath@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+helpdir = $(datadir)/irssi/help
+help_DATA = \
+ accept \
+ action \
+ admin \
+ alias \
+ away \
+ ban \
+ beep \
+ bind \
+ cat \
+ cd \
+ channel \
+ clear \
+ completion \
+ connect \
+ ctcp \
+ cycle \
+ dcc \
+ dehilight \
+ deop \
+ devoice \
+ die \
+ disconnect \
+ echo \
+ eval \
+ exec \
+ flushbuffer \
+ format \
+ hash \
+ help \
+ hilight \
+ ignore \
+ info \
+ invite \
+ irssiproxy \
+ ison \
+ join \
+ kick \
+ kickban \
+ kill \
+ knock \
+ knockout \
+ lastlog \
+ layout \
+ levels \
+ links \
+ list \
+ load \
+ log \
+ lusers \
+ map \
+ me \
+ mircdcc \
+ mode \
+ motd \
+ msg \
+ names \
+ nctcp \
+ netsplit \
+ network \
+ nick \
+ notice \
+ notify \
+ op \
+ oper \
+ otr \
+ part \
+ ping \
+ query \
+ quit \
+ quote \
+ rawlog \
+ recode \
+ reconnect \
+ rehash \
+ reload \
+ restart \
+ rmreconns \
+ rmrejoins \
+ save \
+ sconnect \
+ script \
+ scrollback \
+ server \
+ servlist \
+ set \
+ silence \
+ squery \
+ squit \
+ stats \
+ statusbar \
+ time \
+ toggle \
+ topic \
+ trace \
+ ts \
+ unalias \
+ unban \
+ unignore \
+ unload \
+ unnotify \
+ unquery \
+ unsilence \
+ upgrade \
+ uptime \
+ userhost \
+ ver \
+ version \
+ voice \
+ wait \
+ wall \
+ wallops \
+ who \
+ whois \
+ whowas \
+ window
+
+EXTRA_DIST = \
+ Makefile.am.gen \
+ $(help_DATA) \
+ meson.build
+
+SUBDIRS = in
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/help/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign docs/help/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-helpDATA: $(help_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(help_DATA)'; test -n "$(helpdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(helpdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(helpdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(helpdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(helpdir)" || exit $$?; \
+ done
+
+uninstall-helpDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(help_DATA)'; test -n "$(helpdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(helpdir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(helpdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-helpDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-helpDATA
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic clean-libtool cscopelist-am ctags \
+ ctags-am distclean distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-helpDATA \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-helpDATA
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/docs/help/accept b/docs/help/accept
new file mode 100644
index 0000000..774f495
--- /dev/null
+++ b/docs/help/accept
@@ -0,0 +1,30 @@
+
+%9Syntax:%9
+
+ACCEPT %|[[-]nick,...]
+
+%9Parameters:%9
+
+ A comma-separated list of nicknames to add or remove; if no argument is
+ given, your accept list will be displayed.
+
+%9Description:%9
+
+ Allows you to specify who you want to receive private messages and notices
+ from while you have callerid enabled.
+
+ When you have callerid enabled, messages from other users are blocked and
+ the sender is notified.
+
+ Users are automatically removed from the accept list if they quit, split
+ or change nickname; the accept list is lost when you disconnect.
+
+ This command only works on IRC servers that support the callerid user mode.
+
+%9Examples:%9
+
+ /ACCEPT mike,bob,-john,-sarah
+ /ACCEPT sarah,-bob
+
+%9See also:%9 IGNORE, SILENCE
+
diff --git a/docs/help/action b/docs/help/action
new file mode 100644
index 0000000..a815f06
--- /dev/null
+++ b/docs/help/action
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+ACTION %|[-<server tag>] <target> <message>
+
+%9Parameters:%9
+
+ -<server tag>: The server tag you want to send the action emote to.
+
+ A target nickname or channel and the message to emote.
+
+%9Description:%9
+
+ Sends an action emote to a nickname or a channel.
+
+%9Examples:%9
+
+ /ACTION #irssi is hungry!
+ /ACTION mike had an awesome day @ work
+ /ACTION -efnet #irssi is happy it's Friday
+
+%9See also:%9 ME
+
diff --git a/docs/help/admin b/docs/help/admin
new file mode 100644
index 0000000..6196b75
--- /dev/null
+++ b/docs/help/admin
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+ADMIN %|[<server>|<nickname>]
+
+%9Parameters:%9
+
+ A nickname or server for which you want to know the administrative details;
+ if no argument is given, the server you are connected to will be used.
+
+%9Description:%9
+
+ Displays the administrative details of a server.
+
+%9Examples:%9
+
+ /ADMIN
+ /ADMIN irc.libera.chat
+ /ADMIN mike
+
+%9See also:%9 INFO
+
diff --git a/docs/help/alias b/docs/help/alias
new file mode 100644
index 0000000..dfa6179
--- /dev/null
+++ b/docs/help/alias
@@ -0,0 +1,37 @@
+
+%9Syntax:%9
+
+ALIAS %|[[-]<alias> [<command>]]
+
+%9Parameters:%9
+
+ A name of the alias and the command to execute. You can prepend the alias
+ with the '-' character to remove the alias; if no argument is given, your
+ aliases will be displayed.
+
+%9Description:%9
+
+ Creates or updates an alias; you can use the ';' character to separate
+ multiple commands.
+
+ The parameters given to the alias are expanded in '$[\d]'; for example $0,
+ $1, $2, $8, ..., as well as any other special variable.
+
+ If you don't use any parameters in your alias, all parameters will be
+ automatically appended after it.
+
+%9Examples:%9
+
+ /ALIAS
+ /ALIAS UH USERHOST
+ /ALIAS COMEBACK SAY I was hoping for a battle of wits, but you seem to be unarmed.
+ /ALIAS -COMEBACK
+ /ALIAS UNACT SCRIPT EXEC \$_->activity(0) for Irssi::windows
+ /ALIAS QOP ^MSG Q op $C
+
+%9References:%9
+
+ https://github.com/irssi/irssi/blob/master/docs/special_vars.txt
+
+%9See also:%9 BIND, UNALIAS
+
diff --git a/docs/help/away b/docs/help/away
new file mode 100644
index 0000000..cbf2e7f
--- /dev/null
+++ b/docs/help/away
@@ -0,0 +1,33 @@
+
+%9Syntax:%9
+
+AWAY %|[-one | -all] [<reason>]
+
+%9Parameters:%9
+
+ -one: Marks yourself as away on the active server.
+ -all: Marks yourself as away on all the servers you are connected to.
+
+ Your away message; if no argument is given, your away status will be removed.
+
+%9Description:%9
+
+ Marks yourself as 'away'; this method is used to inform people that you
+ are not paying attention to your screen.
+
+ You might use it when you are taking a nap, in the shower, getting some
+ food, or otherwise engaged. When you're 'away' you will see '(zZzZ)' in
+ your statusbar.
+
+ Anyone who does a WHOIS on your nickname will see that you are away, as
+ well as your away message.
+
+%9Examples:%9
+
+ /AWAY
+ /AWAY I'm getting some food.
+ /AWAY zZzZ
+ /AWAY -one Feeding the cat!
+
+%9See also:%9 DISCONNECT
+
diff --git a/docs/help/ban b/docs/help/ban
new file mode 100644
index 0000000..a65c000
--- /dev/null
+++ b/docs/help/ban
@@ -0,0 +1,43 @@
+
+%9Syntax:%9
+
+BAN %|[<channel>] [<nicks>]
+BAN %|[-normal | -user | -host | -domain | -custom <type>] <nicks/masks>
+
+%9Parameters:%9
+
+ -normal: Uses the *!*user@*.domain.tld format.
+ -user: Uses the *!*user@* format.
+ -host: Uses the *!*@host.domain.tld format.
+ -domain: Uses the *!*@*.domain.tld format.
+ -custom: Uses the custom format.
+
+ A channel and the nicknames or hostnames to ban; if no arguments are given
+ the bans in the active channel are displayed.
+
+ If no ban format parameter is given, the value of the ban_type setting will
+ be used to generate the hostmask to ban.
+
+%9Description:%9
+
+ Adds one or more bans to a channel.
+
+%9Configuring the custom format:%9
+
+ You must set the custom ban_type to the format you would like to use. For
+ example, if you set the custom ban_type to 'nick domain', it will generate
+ a ban based on the nick!*@*.domain.tld format.
+
+%9Examples:%9
+
+ /BAN
+ /BAN mike
+ /BAN -host bob
+ /BAN *!*@*.irssi.org
+ /BAN -domain sarah
+
+ /SET ban_type custom nick domain
+ /SET ban_type custom user host
+
+%9See also:%9 DEOP, KICKBAN, KNOCKOUT, OP, UNBAN
+
diff --git a/docs/help/beep b/docs/help/beep
new file mode 100644
index 0000000..415c6ff
--- /dev/null
+++ b/docs/help/beep
@@ -0,0 +1,15 @@
+
+%9Syntax:%9
+
+BEEP
+
+%9Description:%9
+
+ Outputs the bell-character, usually causing your terminal to beep.
+
+%9Examples:%9
+
+ /BEEP
+
+%9See also:%9 CLEAR
+
diff --git a/docs/help/bind b/docs/help/bind
new file mode 100644
index 0000000..384ffff
--- /dev/null
+++ b/docs/help/bind
@@ -0,0 +1,35 @@
+
+%9Syntax:%9
+
+BIND %|[-list] [-delete | -reset] [<key> [<command> [<data>]]]
+
+%9Parameters:%9
+
+ -list: Displays a list of all the bindable commands.
+ -delete: Removes the binding.
+ -reset: Reset a key to its default binding.
+
+ A name of the binding and the command to perform; if no parameter is given,
+ the list of bindings will be displayed.
+
+Details:
+
+ Adds or removes a binding; the binding itself is case-sensitive and may
+ contain as many characters as you want.
+
+ Uppercase characters usually indicate that you need to keep the shift-key
+ pressed to use the binding.
+
+%9Examples:%9
+
+ /BIND
+ /BIND meta-c /CLEAR
+ /BIND meta-q change_window 16
+ /BIND -delete meta-y
+ /BIND ^W^C /WINDOW NEW HIDE
+ /BIND ^W^K /WINDOW KILL
+ /BIND ^[[11~ command AWAY I'm off for today :)
+ /BIND ^[[12~ command AWAY
+
+%9See also:%9 ALIAS
+
diff --git a/docs/help/cat b/docs/help/cat
new file mode 100644
index 0000000..250e157
--- /dev/null
+++ b/docs/help/cat
@@ -0,0 +1,28 @@
+
+%9Syntax:%9
+
+CAT %|[-window] <file> [<seek position>]
+
+%9Parameters:%9
+
+ -window: Displays the output in the active window.
+
+ The file to display and optionally a position to seek in the file,
+ in bytes.
+
+%9Description:%9
+
+ Displays the contents of the specified file in the active window if -window
+ is specified, otherwise to the closest matching window depending on levels.
+
+ The seek position parameter is used internally to display away logs, if
+ omitted the whole file is shown.
+
+%9Examples:%9
+
+ /CAT -window /etc/network/interfaces
+ /CAT /home/mike/resume.txt
+ /CAT contact_details.txt
+
+%9See also:%9 CD, EXEC
+
diff --git a/docs/help/cd b/docs/help/cd
new file mode 100644
index 0000000..beaf866
--- /dev/null
+++ b/docs/help/cd
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+CD %|<directory>
+
+%9Parameters:%9
+
+ The directory to change into.
+
+%9Description:%9
+
+ Changes the current active directory.
+
+%9Examples:%9
+
+ /CD /home/public_ftp
+ /CD /home/mike
+ /CD /var/log
+
+%9See also:%9 CAT
+
diff --git a/docs/help/channel b/docs/help/channel
new file mode 100644
index 0000000..afec8f4
--- /dev/null
+++ b/docs/help/channel
@@ -0,0 +1,50 @@
+
+%9Syntax:%9
+
+CHANNEL LIST%|
+CHANNEL ADD%||MODIFY [-auto | -noauto] [-bots <masks>] [-botcmd <command>] <channel> <network> [<password>]
+CHANNEL REMOVE %|<channel> <network>
+
+%9Parameters:%9
+
+ LIST: Displays the list of configured channels.
+ ADD: Adds a channel to your configuration.
+ MODIFY: Modifies a channel in your configuration.
+ REMOVE: Removes a channel from your configuration.
+
+ -auto: Automatically join the channel.
+ -noauto: Don't join the channel automatically.
+ -bots: The list of hostnames send automated commands to.
+ -botcmd: The automated commands to perform.
+
+ The channel and network to add to the configuration; you can optionally
+ specify the password of a channel.
+
+ If no parameters are given, the list of channels you have joined will be
+ displayed.
+
+%9Description:%9
+
+ Adds, removes or displays the configuration of channels; this method is
+ used to automate and simplify your workflow.
+
+ You can use the ADDALLCHANS command, which is a default alias, to add all
+ the channels you are present on into the configuration.
+
+%9Examples:%9
+
+ /CHANNEL
+ /CHANNEL LIST
+ /CHANNEL ADD -auto #irssi liberachat
+ /CHANNEL ADD -auto #basementcat Quakenet secret_lair
+ /CHANNEL ADD -auto -bots '*!@*.irssi.org *!bot@irssi.org' -botcmd 'msg $0 op WzerTrzq' #hideout liberachat
+ /CHANNEL ADD -auto -bots 'Q!TheQBot@CServe.quakenet.org' -botcmd '^MSG Q op #irssi' #irssi Quakenet
+ /CHANNEL MODIFY -noauto #irssi liberachat
+ /CHANNEL REMOVE #hideout liberachat
+
+%9Special Example:%9
+
+ /ADDALLCHANS
+
+%9See also:%9 JOIN, TS
+
diff --git a/docs/help/clear b/docs/help/clear
new file mode 100644
index 0000000..b9b8124
--- /dev/null
+++ b/docs/help/clear
@@ -0,0 +1,19 @@
+
+%9Syntax:%9
+
+CLEAR %|[-all] [<refnum>]
+
+%9Parameters:%9
+
+ -all: Clear all the windows
+
+ The window number to clear; if no argument is given, the active window
+ will be used.
+
+%9Description:%9
+
+ Scrolls up the text in the window and fills the window with blank lines; you
+ may want to use this to make new text start at the top of the window again.
+
+%9See also:%9 REDRAW, SCROLLBACK CLEAR
+
diff --git a/docs/help/completion b/docs/help/completion
new file mode 100644
index 0000000..8d695a3
--- /dev/null
+++ b/docs/help/completion
@@ -0,0 +1,35 @@
+
+%9Syntax:%9
+
+COMPLETION %|[-auto] [-delete] <key> <value>
+
+%9Parameters:%9
+
+ -auto: Inserts the completion without pressing a word completion
+ character.
+ -delete: Removes the completion from the configuration.
+
+ A key and the value to use as a replacement. If no argument is given, the
+ list of completions will be displayed.
+
+%9Description:%9
+
+ Replaces or completed words or letters; you can write just the first few
+ letters of the word and press TAB to insert a replacement.
+
+ When a replacement has been found, Irssi will choose the most probable
+ matching word and replaces it; you may press TAB repeatedly to swap between
+ matches.
+
+ If you want to remove a completion which has the auto parameter set, you
+ need to enclose the completion between "'" characters.
+
+%9Examples:%9
+
+ /COMPLETION w/h without
+ /COMPLETION -auto anywya anyway
+ /COMPLETION -delete 'anywya'
+ /COMPLETION -delete without
+
+%9See also:%9 BIND
+
diff --git a/docs/help/connect b/docs/help/connect
new file mode 100644
index 0000000..762ab7d
--- /dev/null
+++ b/docs/help/connect
@@ -0,0 +1,44 @@
+
+%9Syntax:%9
+
+CONNECT %|[-4 | -6] [-tls_cert <cert>] [-tls_pkey <pkey>] [-tls_pass <password>] [-tls_verify] [-tls_cafile <cafile>] [-tls_capath <capath>] [-tls_ciphers <list>] [-tls_pinned_cert <fingerprint>] [-tls_pinned_pubkey <fingerprint>] [-!] [-noautosendcmd] [-tls | -notls] [-nocap] [-starttls | -disallow_starttls] [-noproxy] [-network <network>] [-host <hostname>] [-rawlog <file>] <address>|<chatnet> [<port> [<password> [<nick>]]]
+
+%9Parameters:%9
+
+ -4: Connects using IPv4.
+ -6: Connects using IPv6.
+ -tls: Connects using TLS encryption.
+ -tls_cert: The TLS client certificate file.
+ -tls_pkey: The TLS client private key, if not included in the certificate file.
+ -tls_pass: The password for the TLS client private key or certificate.
+ -tls_verify: Verifies the TLS certificate of the server.
+ -tls_cafile: The file with the list of CA certificates.
+ -tls_capath: The directory which contains the CA certificates.
+ -tls_ciphers: TLS cipher suite preference lists.
+ -tls_pinned_cert: Pinned x509 certificate fingerprint.
+ -tls_pinned_pubkey: Pinned public key fingerprint.
+ -nocap: Disable CAPREQ during connect
+ -noproxy: Ignores the global proxy configuration.
+ -network: The network this connection belongs to.
+ -host: The hostname you would like to connect from.
+ -rawlog: Immediately open rawlog after connecting.
+ -!: Doesn't autojoin channels.
+ -noautosendcmd: Doesn't execute autosendcmd.
+
+ A network or server to connect to; you can optionally specify a custom port,
+ password and nickname.
+
+%9Description:%9
+
+ Opens a new connection to the specified network or server; existing
+ connections are kept.
+
+%9Examples:%9
+
+ /CONNECT liberachat
+ /CONNECT -6 liberachat
+ /CONNECT -4 -! -host staff.irssi.org -network liberachat irc.libera.chat
+ /CONNECT irc.irssi.org 6667 WzerT8zq mike
+
+%9See also:%9 DISCONNECT, RMRECONNS, SERVER
+
diff --git a/docs/help/ctcp b/docs/help/ctcp
new file mode 100644
index 0000000..c75103b
--- /dev/null
+++ b/docs/help/ctcp
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+CTCP %|<targets> <ctcp command> [<ctcp data>]
+
+%9Parameters:%9
+
+ A target nickname or channel and a command.
+
+%9Description:%9
+
+ Sends a CTCP request towards the given target nickname or channel.
+
+%9Examples:%9
+
+ /CTCP mike PING
+ /CTCP #irssi VERSION
+ /CTCP bob USERINFO
+ /CTCP sarah CLIENTINFO
+ /CTCP john TIME
+
+%9See also:%9 ACTION, ME
+
diff --git a/docs/help/cycle b/docs/help/cycle
new file mode 100644
index 0000000..a871e2f
--- /dev/null
+++ b/docs/help/cycle
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+CYCLE %|[<channel>] [<message>]
+
+%9Parameters:%9
+
+ A channel and the message. If no argument is given, the active channel
+ will be used.
+
+%9Description:%9
+
+ Leaves and rejoins a channel.
+
+%9Examples:%9
+
+ /CYCLE
+ /CYCLE #irssi
+ /CYCLE #irssi BRB :)
+
+%9See also:%9 JOIN, PART
+
diff --git a/docs/help/dcc b/docs/help/dcc
new file mode 100644
index 0000000..f549b30
--- /dev/null
+++ b/docs/help/dcc
@@ -0,0 +1,49 @@
+
+%9Syntax:%9
+
+DCC CHAT %|[-passive] [<nick>]
+DCC GET %|[<nick> [<file>]]
+DCC RESUME %|[<nick> [<file>]]
+DCC SERVER %|[+|-scf] [port]
+DCC CLOSE %|<type> <nick> [<file>]
+
+%9Parameters:%9
+
+ CHAT: Initiates or accept a chat request.
+ GET: Accepts a file transfer request.
+ RESUME: Resumes a file transfer.
+ SERVER: Starts a DCC server.
+ CLOSE: Closes a DCC connection.
+ LIST: Displays all the open DCC connections.
+
+ -passive: Uses the passive DCC protocol.
+ -scf: Use any combination of the flags to indicate:
+ 's' - send
+ 'c' - chat
+ 'f' - fserver
+
+ The nickname of the person to chat with, or the name of the file to
+ transfer.
+
+%9Description:%9
+
+ The DCC protocol is used to initiate client-to-client chat connections
+ and file transfers.
+
+ If you are behind NAT, or if the firewall is too restrictive, you might
+ want to try if using the passive parameter resolves your connection
+ problem.
+
+ You can send files which contain special character or spaces by enclosing
+ the filename within quotes. For example: 'my file with spaces.txt'.
+
+%9Examples:%9
+
+ /DCC CHAT mike
+ /DCC GET bob "summer vacation.mkv"
+ /DCC SEND sarah "summer vacation.mkv"
+ /DCC CLOSE get mike
+ /DCC CLOSE send bob "summer vacation.mkv"
+
+%9See also:%9 CD
+
diff --git a/docs/help/dehilight b/docs/help/dehilight
new file mode 100644
index 0000000..4937a43
--- /dev/null
+++ b/docs/help/dehilight
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+DEHILIGHT %|<id>|<mask>
+
+%9Parameters:%9
+
+ The id or mask of the highlight to remove.
+
+%9Description:%9
+
+ Removes the specified highlight from the configuration.
+
+%9Examples:%9
+
+ /DEHILIGHT 1
+ /DEHILIGHT 31
+
+%9See also:%9 HILIGHT
+
diff --git a/docs/help/deop b/docs/help/deop
new file mode 100644
index 0000000..fa2d0a5
--- /dev/null
+++ b/docs/help/deop
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+DEOP %|<nicks>
+
+%9Parameters:%9
+
+ A list of nicknames to deop.
+
+%9Description:%9
+
+ Removes the channel operator privileges from the given nicknames; you may
+ use the wildcard character '*' in a nickname.
+
+%9Examples:%9
+
+ /DEOP mike
+ /DEOP bob sarah
+ /DEOP jo*n
+ /DEOP *
+
+%9See also:%9 DEVOICE, MODE, OP, VOICE
+
diff --git a/docs/help/devoice b/docs/help/devoice
new file mode 100644
index 0000000..a85f9f0
--- /dev/null
+++ b/docs/help/devoice
@@ -0,0 +1,26 @@
+
+%9Syntax:%9
+
+DEVOICE %|<nicks>
+
+%9Parameters:%9
+
+ A list of nicknames to devoice.
+
+%9Description:%9
+
+ Removes the channel voice privileges from the given nicknames; you may use
+ the wildcard character '*' in a nickname.
+
+ If a channel is moderated, the users will require a voice or op in order to
+ be able to send messages to the channel.
+
+%9Examples:%9
+
+ /DEVOICE mike
+ /DEVOICE bob sarah
+ /DEVOICE jo*n
+ /DEVOICE *
+
+%9See also:%9 DEOP, MODE, OP, VOICE
+
diff --git a/docs/help/die b/docs/help/die
new file mode 100644
index 0000000..16e17f4
--- /dev/null
+++ b/docs/help/die
@@ -0,0 +1,15 @@
+
+%9Syntax:%9
+
+DIE
+
+%9Description:%9
+
+ Terminates the IRC server; this command is reserved for IRC operators.
+
+%9Examples:%9
+
+ /DIE
+
+%9See also:%9 KILL, OPER, WALLOPS
+
diff --git a/docs/help/disconnect b/docs/help/disconnect
new file mode 100644
index 0000000..e85657a
--- /dev/null
+++ b/docs/help/disconnect
@@ -0,0 +1,26 @@
+
+%9Syntax:%9
+
+DISCONNECT %|*|<tag> [<message>]
+
+%9Parameters:%9
+
+ The network to disconnect from and the message to advertise; if no
+ parameters are given, the active server will be used.
+
+%9Description:%9
+
+ Disconnects from an IRC server; the list of all the servers you are
+ connected to can be retrieved via the SERVER command.
+
+ Use the wildcard character '*' if you want to disconnect from the active
+ server.
+
+%9Examples:%9
+
+ /DISCONNECT liberachat I'm off for today, take care!
+ /DISCONNECT * Vacation time :D
+ /DISCONNECT
+
+%9See also:%9 CONNECT, SERVER
+
diff --git a/docs/help/echo b/docs/help/echo
new file mode 100644
index 0000000..6fe174e
--- /dev/null
+++ b/docs/help/echo
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+ECHO %|[-window <name>] [-level <level>] <text>
+
+%9Parameters:%9
+
+ -window: Displays the output in the target window.
+ -level: Displays the output with a given message level.
+
+ The text output; if no target is given, the active window will be used.
+
+%9Description:%9
+
+ Displays the given text.
+
+%9Examples:%9
+
+ /ECHO 1 + 1 = 2 :D
+ /ECHO Testing the ECHO command
+ /ECHO -window #irssi Special variables such as ${N} will not be expanded.
+
+%9See also:%9 CAT, EVAL, EXEC, LEVELS
+
diff --git a/docs/help/eval b/docs/help/eval
new file mode 100644
index 0000000..08d1dc1
--- /dev/null
+++ b/docs/help/eval
@@ -0,0 +1,35 @@
+
+%9Syntax:%9
+
+EVAL %|<command(s)>
+
+%9Parameters:%9
+
+ The commands to evaluate.
+
+%9Description:%9
+
+ Evaluates the given commands and executes them; you can use internal
+ variables and separate multiple commands by using the `;' character.
+ If the command contains a string with `$', `\' or `;' those characters
+ need to be escaped:
+
+ `$' -> `$$'
+ `\' -> `\\' (or even `\\\\', depending on where they are used)
+ `;' -> `\;'
+
+%9Examples:%9
+
+ /EVAL echo I am connected to ${S} on ${chatnet} as ${N}
+ /EVAL echo My user privileges are +${usermode}; echo Let's party!
+
+ to print `1;2$3\4':
+
+ /EVAL echo 1\;2$$3\\4
+
+%9References:%9
+
+ https://github.com/irssi/irssi/blob/master/docs/special_vars.txt
+
+%9See also:%9 CAT, CD, ECHO, EXEC
+
diff --git a/docs/help/exec b/docs/help/exec
new file mode 100644
index 0000000..bb6f4f1
--- /dev/null
+++ b/docs/help/exec
@@ -0,0 +1,52 @@
+
+%9Syntax:%9
+
+EXEC %|[-] [-nosh] [-out | -msg <target> | -notice <target>] [-name <name>] <cmd line>
+EXEC %|-out | -window | -msg <target> | -notice <target> | -close | -<signal> %<id>
+EXEC %|-in %<id> <text to send to process>
+
+%9Parameters:%9
+
+ -: Suppresses the process termination notification.
+ -nosh: Doesn't execute the command through /bin/sh.
+ -out: Sends the output to the active channel or query.
+ -msg: Sends the output to the specified nickname or channel.
+ -notice: Sends the output to the specified nickname or channel as
+ notices.
+ -name: Gives the process the specified name.
+ -window: Displays the output in the active window.
+ -close: Forcibly closes a process that doesn't die.
+ -<signal>: Sends the given signal to the process.
+ -in: Sends text to the standard input of the process.
+ -interactive: Executes the process in a new window item.
+
+ The command to execute; if no output parameter is given, the active window
+ will be used and if no parameters are given at all, the list of active
+ processes will be displayed.
+
+%9Description:%9
+
+ Executes the specified command in the background; the process can be
+ accessed by its id or the name you gave it.
+
+ The output of the process can be redirected to various targets, such as
+ a window, a channel, a nickname or a query.
+
+ The process identifier must always begin with the '%%' character. For
+ example %%0.
+
+ If you remove a process with the close parameter, it will only make Irssi
+ detach from it; the process will keep running until it terminates.
+
+%9Examples:%9
+
+ /EXEC
+ /EXEC ls
+ /EXEC -msg #irssi cat unicorn.txt
+ /EXEC -out cat /etc/passwd | grep $USER | awk -F: '{print $5}'
+ /EXEC -name ssh -nosh -interactive -window ssh staff.irssi.org
+ /EXEC -close mailserver
+ /EXEC -close %%0
+
+%9See also:%9 CAT, CD, ECHO, EVAL
+
diff --git a/docs/help/flushbuffer b/docs/help/flushbuffer
new file mode 100644
index 0000000..a19ef04
--- /dev/null
+++ b/docs/help/flushbuffer
@@ -0,0 +1,18 @@
+
+%9Syntax:%9
+
+
+%9Description:%9
+
+ Forces an immediate flush of the buffers if the related settings are
+ enabled.
+
+%9Examples:%9
+
+ /FLUSHBUFFER
+
+ /SET write_buffer_size
+ /SET write_buffer_timeout
+
+%9See also:%9 REDRAW, SCROLLBACK
+
diff --git a/docs/help/format b/docs/help/format
new file mode 100644
index 0000000..f21c7b6
--- /dev/null
+++ b/docs/help/format
@@ -0,0 +1,25 @@
+
+%9Syntax:%9
+
+FORMAT %|[-delete | -reset] [<module>] [<key> [<value>]]
+
+%9Parameters:%9
+
+ -reset: Restores the original value.
+ -delete: Removes the format from the configuration.
+
+ The module name, the format name and the value; if no arguments are given,
+ the list of formats are displayed.
+
+%9Description:%9
+
+ Allows you to reconfigure the way messages are displayed.
+
+%9Examples:%9
+
+ /FORMAT irc away You have left planet earth
+ /FORMAT core not_good_idea I'm sorry sir, this broke my irony sensor; add -YES if you really mean it!
+ /FORMAT -reset irc away
+
+%9See also:%9 RELOAD, SAVE, SET
+
diff --git a/docs/help/hash b/docs/help/hash
new file mode 100644
index 0000000..8864515
--- /dev/null
+++ b/docs/help/hash
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+HASH
+
+%9Description:%9
+
+ This is an ancient command that is no longer used; if you on an IRC server
+ that supports this command, please contact us to we can update the
+ documentation.
+
+%9Examples:%9
+
+ /HASH
+
+%9References:%9
+
+ https://irssi.org
+ https://github.com/irssi
+
+%9See also:%9 DIE, KILL, OPER
+
diff --git a/docs/help/help b/docs/help/help
new file mode 100644
index 0000000..c5e699c
--- /dev/null
+++ b/docs/help/help
@@ -0,0 +1,27 @@
+
+%9Syntax:%9
+
+HELP %|[<command>]
+
+%9Parameters:%9
+
+ The command to display the documentation for; if no argument is given, the
+ list of commands will be displayed.
+
+%9Description:%9
+
+ Displays the documentation for the given command.
+
+%9Examples:%9
+
+ /HELP
+ /HELP AWAY
+ /HELP CONNECT
+
+%9References:%9
+
+ https://irssi.org
+ https://github.com/irssi
+
+%9See also:%9 CONNECT, MSG, NETWORK, SERVER
+
diff --git a/docs/help/hilight b/docs/help/hilight
new file mode 100644
index 0000000..8841416
--- /dev/null
+++ b/docs/help/hilight
@@ -0,0 +1,43 @@
+
+%9Syntax:%9
+
+HILIGHT %|[-nick | -word | -line] [-mask | -full | -matchcase | -regexp] [-color <color>] [-actcolor <color>] [-level <level>] [-network <network>] [-channels <channels>] <text>
+
+%9Parameters:%9
+
+ -nick: Highlights only the nickname and not the whole line.
+ -word: Highlights only the word and not the whole line.
+ -line: Highlights the whole line.
+ -mask: Highlights all messages from users matching the mask.
+ -full: The text must match the full word.
+ -matchcase: The text must match case.
+ -regexp: The text is a regular expression.
+ -color: The color to display the highlight in.
+ -actcolor: The color to mark the highlight activity in the statusbar.
+ -level: Matches only on the given message level.
+ -network: Matches only on the given network.
+ -channels: Matches only on the given channels.
+ -priority: The priority to use when multiple highlights match.
+
+ The text to highlight on; if no argument is given, the list of highlights
+ will be displayed.
+
+%9Description:%9
+
+ Highlights the keyword or pattern to make sure that you don't miss any
+ important messages.
+
+%9Examples:%9
+
+ /HILIGHT
+ /HILIGHT mike
+ /HILIGHT -regexp mi+ke+
+ /HILIGHT -mask -color %%G bob!*@*.irssi.org
+ /HILIGHT -full -color %%G -actcolor %%Y redbull
+
+%9References:%9
+
+ https://github.com/irssi/irssi/blob/master/docs/formats.txt
+
+%9See also:%9 DEHILIGHT, LEVELS
+
diff --git a/docs/help/ignore b/docs/help/ignore
new file mode 100644
index 0000000..86ce63d
--- /dev/null
+++ b/docs/help/ignore
@@ -0,0 +1,56 @@
+
+%9Syntax:%9
+
+IGNORE %|[-regexp | -full] [-pattern <pattern>] [-except] [-replies] [-network <network>] [-channels <channel>] [-time <time>] <mask> [<levels>]
+IGNORE %|[-regexp | -full] [-pattern <pattern>] [-except] [-replies] [-network <network>] [-time <time>] <channels> [<levels>]
+
+%9Parameters:%9
+
+ -regexp: Indicates that the pattern is a regular expression.
+ -full: Indicates that the pattern must match a full word.
+ -pattern: The text pattern to ignore.
+ -except: Negates the ignore.
+ -replies: Also ignore nicknames who are talking to anyone who matches
+ the ignore.
+ -network: Ignores only on a specific network.
+ -channels: Ignores only on specific channels.
+ -time: The timeout to automatically remove the ignore.
+ Accepts units specified in days, hours, minutes, seconds,
+ milliseconds, or no unit for seconds.
+
+ The mask, channels and levels to ignore; if no argument is provided, the
+ list of ignores will be displayed.
+
+%9Description:%9
+
+ Ignores nicknames or text that matches a pattern.
+
+ The special level 'NO_ACT' can be used to ignore activity in the statusbar
+ without actually ignoring the message; this behavior is somewhat special
+ because it is allowed in addition to other ignores for the same target.
+ The special level 'HIDDEN' can be used to hide matching messages that can
+ later be revealed using /WINDOW HIDELEVEL -HIDDEN
+ The special level 'NOHILIGHT' can be used to suppress hilights without actually
+ ignoring the message.
+
+%9Examples:%9
+
+ /IGNORE
+ /IGNORE * JOINS
+ /IGNORE * CTCPS
+ /IGNORE -except *!*@*.irssi.org CTCPS
+ /IGNORE #irssi ALL -PUBLIC -ACTIONS
+ /IGNORE -replies *!*@*.irssi.org ALL
+ /IGNORE -regexp -pattern (away|gone|back|playing|returned) * ACTIONS
+ /IGNORE -regexp -pattern (away|gone|back|playing|returned) #channel ACTIONS
+ /IGNORE *zzz* NICKS
+ /IGNORE *afk* NICKS
+ /IGNORE *away* NICKS
+ /IGNORE #irssi NO_ACT JOINS PARTS QUITS
+ /IGNORE mike NO_ACT -MSGS
+ /IGNORE mike HIDDEN PUBLIC JOINS PARTS QUITS
+ /IGNORE -time 5days christmas PUBLICS
+ /IGNORE -time 300 mike PUBLICS
+
+%9See also:%9 ACCEPT, SILENCE, UNIGNORE
+
diff --git a/docs/help/in/Makefile.am b/docs/help/in/Makefile.am
new file mode 100644
index 0000000..116f00b
--- /dev/null
+++ b/docs/help/in/Makefile.am
@@ -0,0 +1,119 @@
+# Makefile.am is autogenerated by autogen.sh from Makefile.am.gen
+
+EXTRA_DIST = \
+ Makefile.am.gen \
+ accept.in \
+ action.in \
+ admin.in \
+ alias.in \
+ away.in \
+ ban.in \
+ beep.in \
+ bind.in \
+ cat.in \
+ cd.in \
+ channel.in \
+ clear.in \
+ completion.in \
+ connect.in \
+ ctcp.in \
+ cycle.in \
+ dcc.in \
+ dehilight.in \
+ deop.in \
+ devoice.in \
+ die.in \
+ disconnect.in \
+ echo.in \
+ eval.in \
+ exec.in \
+ flushbuffer.in \
+ format.in \
+ hash.in \
+ help.in \
+ hilight.in \
+ ignore.in \
+ info.in \
+ invite.in \
+ irssiproxy.in \
+ ison.in \
+ join.in \
+ kick.in \
+ kickban.in \
+ kill.in \
+ knock.in \
+ knockout.in \
+ lastlog.in \
+ layout.in \
+ levels.in \
+ links.in \
+ list.in \
+ load.in \
+ log.in \
+ lusers.in \
+ map.in \
+ me.in \
+ mircdcc.in \
+ mode.in \
+ motd.in \
+ msg.in \
+ names.in \
+ nctcp.in \
+ netsplit.in \
+ network.in \
+ nick.in \
+ notice.in \
+ notify.in \
+ op.in \
+ oper.in \
+ otr.in \
+ part.in \
+ ping.in \
+ query.in \
+ quit.in \
+ quote.in \
+ rawlog.in \
+ recode.in \
+ reconnect.in \
+ rehash.in \
+ reload.in \
+ restart.in \
+ rmreconns.in \
+ rmrejoins.in \
+ save.in \
+ sconnect.in \
+ script.in \
+ scrollback.in \
+ server.in \
+ servlist.in \
+ set.in \
+ silence.in \
+ squery.in \
+ squit.in \
+ stats.in \
+ statusbar.in \
+ time.in \
+ toggle.in \
+ topic.in \
+ trace.in \
+ ts.in \
+ unalias.in \
+ unban.in \
+ unignore.in \
+ unload.in \
+ unnotify.in \
+ unquery.in \
+ unsilence.in \
+ upgrade.in \
+ uptime.in \
+ userhost.in \
+ ver.in \
+ version.in \
+ voice.in \
+ wait.in \
+ wall.in \
+ wallops.in \
+ who.in \
+ whois.in \
+ whowas.in \
+ window.in
diff --git a/docs/help/in/Makefile.am.gen b/docs/help/in/Makefile.am.gen
new file mode 100644
index 0000000..9b0f2aa
--- /dev/null
+++ b/docs/help/in/Makefile.am.gen
@@ -0,0 +1,5 @@
+# Makefile.am is autogenerated by autogen.sh from Makefile.am.gen
+
+EXTRA_DIST = \
+ Makefile.am.gen \
+@HELPFILES@
diff --git a/docs/help/in/Makefile.in b/docs/help/in/Makefile.in
new file mode 100644
index 0000000..4511319
--- /dev/null
+++ b/docs/help/in/Makefile.in
@@ -0,0 +1,611 @@
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile.am is autogenerated by autogen.sh from Makefile.am.gen
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = docs/help/in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/glib-2.0.m4 \
+ $(top_srcdir)/m4/glibtests.m4 $(top_srcdir)/m4/libgcrypt.m4 \
+ $(top_srcdir)/m4/libotr.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/irssi-config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHAT_MODULES = @CHAT_MODULES@
+COMMON_LIBS = @COMMON_LIBS@
+COMMON_NOUI_LIBS = @COMMON_NOUI_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ETAGS = @ETAGS@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FILECMD = @FILECMD@
+FUZZER_LIBS = @FUZZER_LIBS@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
+LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
+LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBOTR_CFLAGS = @LIBOTR_CFLAGS@
+LIBOTR_LIBS = @LIBOTR_LIBS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
+OPENSSL_LIBS = @OPENSSL_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+OTR_CFLAGS = @OTR_CFLAGS@
+OTR_LDFLAGS = @OTR_LDFLAGS@
+OTR_LINK_FLAGS = @OTR_LINK_FLAGS@
+OTR_LINK_LIBS = @OTR_LINK_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_CFLAGS = @PERL_CFLAGS@
+PERL_EXTRA_OPTS = @PERL_EXTRA_OPTS@
+PERL_FE_LINK_LIBS = @PERL_FE_LINK_LIBS@
+PERL_LDFLAGS = @PERL_LDFLAGS@
+PERL_LINK_FLAGS = @PERL_LINK_FLAGS@
+PERL_LINK_LIBS = @PERL_LINK_LIBS@
+PERL_MM_OPT = @PERL_MM_OPT@
+PERL_MM_PARAMS = @PERL_MM_PARAMS@
+PERL_STATIC_LIBS = @PERL_STATIC_LIBS@
+PERL_USE_LIB = @PERL_USE_LIB@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PROG_LIBS = @PROG_LIBS@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TEXTUI_LIBS = @TEXTUI_LIBS@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+installed_test_metadir = @installed_test_metadir@
+installed_testdir = @installed_testdir@
+irc_MODULES = @irc_MODULES@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+otr_module_lib = @otr_module_lib@
+otr_static_lib = @otr_static_lib@
+pdfdir = @pdfdir@
+perl_module_fe_lib = @perl_module_fe_lib@
+perl_module_lib = @perl_module_lib@
+perl_static_fe_lib = @perl_static_fe_lib@
+perl_static_lib = @perl_static_lib@
+perlpath = @perlpath@
+pkgconfigdir = @pkgconfigdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sedpath = @sedpath@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ Makefile.am.gen \
+ accept.in \
+ action.in \
+ admin.in \
+ alias.in \
+ away.in \
+ ban.in \
+ beep.in \
+ bind.in \
+ cat.in \
+ cd.in \
+ channel.in \
+ clear.in \
+ completion.in \
+ connect.in \
+ ctcp.in \
+ cycle.in \
+ dcc.in \
+ dehilight.in \
+ deop.in \
+ devoice.in \
+ die.in \
+ disconnect.in \
+ echo.in \
+ eval.in \
+ exec.in \
+ flushbuffer.in \
+ format.in \
+ hash.in \
+ help.in \
+ hilight.in \
+ ignore.in \
+ info.in \
+ invite.in \
+ irssiproxy.in \
+ ison.in \
+ join.in \
+ kick.in \
+ kickban.in \
+ kill.in \
+ knock.in \
+ knockout.in \
+ lastlog.in \
+ layout.in \
+ levels.in \
+ links.in \
+ list.in \
+ load.in \
+ log.in \
+ lusers.in \
+ map.in \
+ me.in \
+ mircdcc.in \
+ mode.in \
+ motd.in \
+ msg.in \
+ names.in \
+ nctcp.in \
+ netsplit.in \
+ network.in \
+ nick.in \
+ notice.in \
+ notify.in \
+ op.in \
+ oper.in \
+ otr.in \
+ part.in \
+ ping.in \
+ query.in \
+ quit.in \
+ quote.in \
+ rawlog.in \
+ recode.in \
+ reconnect.in \
+ rehash.in \
+ reload.in \
+ restart.in \
+ rmreconns.in \
+ rmrejoins.in \
+ save.in \
+ sconnect.in \
+ script.in \
+ scrollback.in \
+ server.in \
+ servlist.in \
+ set.in \
+ silence.in \
+ squery.in \
+ squit.in \
+ stats.in \
+ statusbar.in \
+ time.in \
+ toggle.in \
+ topic.in \
+ trace.in \
+ ts.in \
+ unalias.in \
+ unban.in \
+ unignore.in \
+ unload.in \
+ unnotify.in \
+ unquery.in \
+ unsilence.in \
+ upgrade.in \
+ uptime.in \
+ userhost.in \
+ ver.in \
+ version.in \
+ voice.in \
+ wait.in \
+ wall.in \
+ wallops.in \
+ who.in \
+ whois.in \
+ whowas.in \
+ window.in
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/help/in/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign docs/help/in/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/docs/help/in/accept.in b/docs/help/in/accept.in
new file mode 100644
index 0000000..699441a
--- /dev/null
+++ b/docs/help/in/accept.in
@@ -0,0 +1,30 @@
+
+%9Syntax:%9
+
+@SYNTAX:accept@
+
+%9Parameters:%9
+
+ A comma-separated list of nicknames to add or remove; if no argument is
+ given, your accept list will be displayed.
+
+%9Description:%9
+
+ Allows you to specify who you want to receive private messages and notices
+ from while you have callerid enabled.
+
+ When you have callerid enabled, messages from other users are blocked and
+ the sender is notified.
+
+ Users are automatically removed from the accept list if they quit, split
+ or change nickname; the accept list is lost when you disconnect.
+
+ This command only works on IRC servers that support the callerid user mode.
+
+%9Examples:%9
+
+ /ACCEPT mike,bob,-john,-sarah
+ /ACCEPT sarah,-bob
+
+%9See also:%9 IGNORE, SILENCE
+
diff --git a/docs/help/in/action.in b/docs/help/in/action.in
new file mode 100644
index 0000000..9a2912c
--- /dev/null
+++ b/docs/help/in/action.in
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+@SYNTAX:action@
+
+%9Parameters:%9
+
+ -<server tag>: The server tag you want to send the action emote to.
+
+ A target nickname or channel and the message to emote.
+
+%9Description:%9
+
+ Sends an action emote to a nickname or a channel.
+
+%9Examples:%9
+
+ /ACTION #irssi is hungry!
+ /ACTION mike had an awesome day @ work
+ /ACTION -efnet #irssi is happy it's Friday
+
+%9See also:%9 ME
+
diff --git a/docs/help/in/admin.in b/docs/help/in/admin.in
new file mode 100644
index 0000000..acb6e1a
--- /dev/null
+++ b/docs/help/in/admin.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:admin@
+
+%9Parameters:%9
+
+ A nickname or server for which you want to know the administrative details;
+ if no argument is given, the server you are connected to will be used.
+
+%9Description:%9
+
+ Displays the administrative details of a server.
+
+%9Examples:%9
+
+ /ADMIN
+ /ADMIN irc.libera.chat
+ /ADMIN mike
+
+%9See also:%9 INFO
+
diff --git a/docs/help/in/alias.in b/docs/help/in/alias.in
new file mode 100644
index 0000000..5cea00c
--- /dev/null
+++ b/docs/help/in/alias.in
@@ -0,0 +1,37 @@
+
+%9Syntax:%9
+
+@SYNTAX:alias@
+
+%9Parameters:%9
+
+ A name of the alias and the command to execute. You can prepend the alias
+ with the '-' character to remove the alias; if no argument is given, your
+ aliases will be displayed.
+
+%9Description:%9
+
+ Creates or updates an alias; you can use the ';' character to separate
+ multiple commands.
+
+ The parameters given to the alias are expanded in '$[\d]'; for example $0,
+ $1, $2, $8, ..., as well as any other special variable.
+
+ If you don't use any parameters in your alias, all parameters will be
+ automatically appended after it.
+
+%9Examples:%9
+
+ /ALIAS
+ /ALIAS UH USERHOST
+ /ALIAS COMEBACK SAY I was hoping for a battle of wits, but you seem to be unarmed.
+ /ALIAS -COMEBACK
+ /ALIAS UNACT SCRIPT EXEC \$_->activity(0) for Irssi::windows
+ /ALIAS QOP ^MSG Q op $C
+
+%9References:%9
+
+ https://github.com/irssi/irssi/blob/master/docs/special_vars.txt
+
+%9See also:%9 BIND, UNALIAS
+
diff --git a/docs/help/in/away.in b/docs/help/in/away.in
new file mode 100644
index 0000000..75bc46c
--- /dev/null
+++ b/docs/help/in/away.in
@@ -0,0 +1,33 @@
+
+%9Syntax:%9
+
+@SYNTAX:away@
+
+%9Parameters:%9
+
+ -one: Marks yourself as away on the active server.
+ -all: Marks yourself as away on all the servers you are connected to.
+
+ Your away message; if no argument is given, your away status will be removed.
+
+%9Description:%9
+
+ Marks yourself as 'away'; this method is used to inform people that you
+ are not paying attention to your screen.
+
+ You might use it when you are taking a nap, in the shower, getting some
+ food, or otherwise engaged. When you're 'away' you will see '(zZzZ)' in
+ your statusbar.
+
+ Anyone who does a WHOIS on your nickname will see that you are away, as
+ well as your away message.
+
+%9Examples:%9
+
+ /AWAY
+ /AWAY I'm getting some food.
+ /AWAY zZzZ
+ /AWAY -one Feeding the cat!
+
+%9See also:%9 DISCONNECT
+
diff --git a/docs/help/in/ban.in b/docs/help/in/ban.in
new file mode 100644
index 0000000..724815a
--- /dev/null
+++ b/docs/help/in/ban.in
@@ -0,0 +1,42 @@
+
+%9Syntax:%9
+
+@SYNTAX:ban@
+
+%9Parameters:%9
+
+ -normal: Uses the *!*user@*.domain.tld format.
+ -user: Uses the *!*user@* format.
+ -host: Uses the *!*@host.domain.tld format.
+ -domain: Uses the *!*@*.domain.tld format.
+ -custom: Uses the custom format.
+
+ A channel and the nicknames or hostnames to ban; if no arguments are given
+ the bans in the active channel are displayed.
+
+ If no ban format parameter is given, the value of the ban_type setting will
+ be used to generate the hostmask to ban.
+
+%9Description:%9
+
+ Adds one or more bans to a channel.
+
+%9Configuring the custom format:%9
+
+ You must set the custom ban_type to the format you would like to use. For
+ example, if you set the custom ban_type to 'nick domain', it will generate
+ a ban based on the nick!*@*.domain.tld format.
+
+%9Examples:%9
+
+ /BAN
+ /BAN mike
+ /BAN -host bob
+ /BAN *!*@*.irssi.org
+ /BAN -domain sarah
+
+ /SET ban_type custom nick domain
+ /SET ban_type custom user host
+
+%9See also:%9 DEOP, KICKBAN, KNOCKOUT, OP, UNBAN
+
diff --git a/docs/help/in/beep.in b/docs/help/in/beep.in
new file mode 100644
index 0000000..d8a06ff
--- /dev/null
+++ b/docs/help/in/beep.in
@@ -0,0 +1,15 @@
+
+%9Syntax:%9
+
+@SYNTAX:beep@
+
+%9Description:%9
+
+ Outputs the bell-character, usually causing your terminal to beep.
+
+%9Examples:%9
+
+ /BEEP
+
+%9See also:%9 CLEAR
+
diff --git a/docs/help/in/bind.in b/docs/help/in/bind.in
new file mode 100644
index 0000000..8fcc744
--- /dev/null
+++ b/docs/help/in/bind.in
@@ -0,0 +1,35 @@
+
+%9Syntax:%9
+
+@SYNTAX:bind@
+
+%9Parameters:%9
+
+ -list: Displays a list of all the bindable commands.
+ -delete: Removes the binding.
+ -reset: Reset a key to its default binding.
+
+ A name of the binding and the command to perform; if no parameter is given,
+ the list of bindings will be displayed.
+
+Details:
+
+ Adds or removes a binding; the binding itself is case-sensitive and may
+ contain as many characters as you want.
+
+ Uppercase characters usually indicate that you need to keep the shift-key
+ pressed to use the binding.
+
+%9Examples:%9
+
+ /BIND
+ /BIND meta-c /CLEAR
+ /BIND meta-q change_window 16
+ /BIND -delete meta-y
+ /BIND ^W^C /WINDOW NEW HIDE
+ /BIND ^W^K /WINDOW KILL
+ /BIND ^[[11~ command AWAY I'm off for today :)
+ /BIND ^[[12~ command AWAY
+
+%9See also:%9 ALIAS
+
diff --git a/docs/help/in/cat.in b/docs/help/in/cat.in
new file mode 100644
index 0000000..370c179
--- /dev/null
+++ b/docs/help/in/cat.in
@@ -0,0 +1,28 @@
+
+%9Syntax:%9
+
+@SYNTAX:cat@
+
+%9Parameters:%9
+
+ -window: Displays the output in the active window.
+
+ The file to display and optionally a position to seek in the file,
+ in bytes.
+
+%9Description:%9
+
+ Displays the contents of the specified file in the active window if -window
+ is specified, otherwise to the closest matching window depending on levels.
+
+ The seek position parameter is used internally to display away logs, if
+ omitted the whole file is shown.
+
+%9Examples:%9
+
+ /CAT -window /etc/network/interfaces
+ /CAT /home/mike/resume.txt
+ /CAT contact_details.txt
+
+%9See also:%9 CD, EXEC
+
diff --git a/docs/help/in/cd.in b/docs/help/in/cd.in
new file mode 100644
index 0000000..bc6b7aa
--- /dev/null
+++ b/docs/help/in/cd.in
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+@SYNTAX:cd@
+
+%9Parameters:%9
+
+ The directory to change into.
+
+%9Description:%9
+
+ Changes the current active directory.
+
+%9Examples:%9
+
+ /CD /home/public_ftp
+ /CD /home/mike
+ /CD /var/log
+
+%9See also:%9 CAT
+
diff --git a/docs/help/in/channel.in b/docs/help/in/channel.in
new file mode 100644
index 0000000..d9be8cf
--- /dev/null
+++ b/docs/help/in/channel.in
@@ -0,0 +1,48 @@
+
+%9Syntax:%9
+
+@SYNTAX:channel@
+
+%9Parameters:%9
+
+ LIST: Displays the list of configured channels.
+ ADD: Adds a channel to your configuration.
+ MODIFY: Modifies a channel in your configuration.
+ REMOVE: Removes a channel from your configuration.
+
+ -auto: Automatically join the channel.
+ -noauto: Don't join the channel automatically.
+ -bots: The list of hostnames send automated commands to.
+ -botcmd: The automated commands to perform.
+
+ The channel and network to add to the configuration; you can optionally
+ specify the password of a channel.
+
+ If no parameters are given, the list of channels you have joined will be
+ displayed.
+
+%9Description:%9
+
+ Adds, removes or displays the configuration of channels; this method is
+ used to automate and simplify your workflow.
+
+ You can use the ADDALLCHANS command, which is a default alias, to add all
+ the channels you are present on into the configuration.
+
+%9Examples:%9
+
+ /CHANNEL
+ /CHANNEL LIST
+ /CHANNEL ADD -auto #irssi liberachat
+ /CHANNEL ADD -auto #basementcat Quakenet secret_lair
+ /CHANNEL ADD -auto -bots '*!@*.irssi.org *!bot@irssi.org' -botcmd 'msg $0 op WzerTrzq' #hideout liberachat
+ /CHANNEL ADD -auto -bots 'Q!TheQBot@CServe.quakenet.org' -botcmd '^MSG Q op #irssi' #irssi Quakenet
+ /CHANNEL MODIFY -noauto #irssi liberachat
+ /CHANNEL REMOVE #hideout liberachat
+
+%9Special Example:%9
+
+ /ADDALLCHANS
+
+%9See also:%9 JOIN, TS
+
diff --git a/docs/help/in/clear.in b/docs/help/in/clear.in
new file mode 100644
index 0000000..3b76a7c
--- /dev/null
+++ b/docs/help/in/clear.in
@@ -0,0 +1,19 @@
+
+%9Syntax:%9
+
+@SYNTAX:clear@
+
+%9Parameters:%9
+
+ -all: Clear all the windows
+
+ The window number to clear; if no argument is given, the active window
+ will be used.
+
+%9Description:%9
+
+ Scrolls up the text in the window and fills the window with blank lines; you
+ may want to use this to make new text start at the top of the window again.
+
+%9See also:%9 REDRAW, SCROLLBACK CLEAR
+
diff --git a/docs/help/in/completion.in b/docs/help/in/completion.in
new file mode 100644
index 0000000..4275e34
--- /dev/null
+++ b/docs/help/in/completion.in
@@ -0,0 +1,35 @@
+
+%9Syntax:%9
+
+@SYNTAX:completion@
+
+%9Parameters:%9
+
+ -auto: Inserts the completion without pressing a word completion
+ character.
+ -delete: Removes the completion from the configuration.
+
+ A key and the value to use as a replacement. If no argument is given, the
+ list of completions will be displayed.
+
+%9Description:%9
+
+ Replaces or completed words or letters; you can write just the first few
+ letters of the word and press TAB to insert a replacement.
+
+ When a replacement has been found, Irssi will choose the most probable
+ matching word and replaces it; you may press TAB repeatedly to swap between
+ matches.
+
+ If you want to remove a completion which has the auto parameter set, you
+ need to enclose the completion between "'" characters.
+
+%9Examples:%9
+
+ /COMPLETION w/h without
+ /COMPLETION -auto anywya anyway
+ /COMPLETION -delete 'anywya'
+ /COMPLETION -delete without
+
+%9See also:%9 BIND
+
diff --git a/docs/help/in/connect.in b/docs/help/in/connect.in
new file mode 100644
index 0000000..4c6acc9
--- /dev/null
+++ b/docs/help/in/connect.in
@@ -0,0 +1,44 @@
+
+%9Syntax:%9
+
+@SYNTAX:connect@
+
+%9Parameters:%9
+
+ -4: Connects using IPv4.
+ -6: Connects using IPv6.
+ -tls: Connects using TLS encryption.
+ -tls_cert: The TLS client certificate file.
+ -tls_pkey: The TLS client private key, if not included in the certificate file.
+ -tls_pass: The password for the TLS client private key or certificate.
+ -tls_verify: Verifies the TLS certificate of the server.
+ -tls_cafile: The file with the list of CA certificates.
+ -tls_capath: The directory which contains the CA certificates.
+ -tls_ciphers: TLS cipher suite preference lists.
+ -tls_pinned_cert: Pinned x509 certificate fingerprint.
+ -tls_pinned_pubkey: Pinned public key fingerprint.
+ -nocap: Disable CAPREQ during connect
+ -noproxy: Ignores the global proxy configuration.
+ -network: The network this connection belongs to.
+ -host: The hostname you would like to connect from.
+ -rawlog: Immediately open rawlog after connecting.
+ -!: Doesn't autojoin channels.
+ -noautosendcmd: Doesn't execute autosendcmd.
+
+ A network or server to connect to; you can optionally specify a custom port,
+ password and nickname.
+
+%9Description:%9
+
+ Opens a new connection to the specified network or server; existing
+ connections are kept.
+
+%9Examples:%9
+
+ /CONNECT liberachat
+ /CONNECT -6 liberachat
+ /CONNECT -4 -! -host staff.irssi.org -network liberachat irc.libera.chat
+ /CONNECT irc.irssi.org 6667 WzerT8zq mike
+
+%9See also:%9 DISCONNECT, RMRECONNS, SERVER
+
diff --git a/docs/help/in/ctcp.in b/docs/help/in/ctcp.in
new file mode 100644
index 0000000..9381806
--- /dev/null
+++ b/docs/help/in/ctcp.in
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+@SYNTAX:ctcp@
+
+%9Parameters:%9
+
+ A target nickname or channel and a command.
+
+%9Description:%9
+
+ Sends a CTCP request towards the given target nickname or channel.
+
+%9Examples:%9
+
+ /CTCP mike PING
+ /CTCP #irssi VERSION
+ /CTCP bob USERINFO
+ /CTCP sarah CLIENTINFO
+ /CTCP john TIME
+
+%9See also:%9 ACTION, ME
+
diff --git a/docs/help/in/cycle.in b/docs/help/in/cycle.in
new file mode 100644
index 0000000..c44a976
--- /dev/null
+++ b/docs/help/in/cycle.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:cycle@
+
+%9Parameters:%9
+
+ A channel and the message. If no argument is given, the active channel
+ will be used.
+
+%9Description:%9
+
+ Leaves and rejoins a channel.
+
+%9Examples:%9
+
+ /CYCLE
+ /CYCLE #irssi
+ /CYCLE #irssi BRB :)
+
+%9See also:%9 JOIN, PART
+
diff --git a/docs/help/in/dcc.in b/docs/help/in/dcc.in
new file mode 100644
index 0000000..2e58c9b
--- /dev/null
+++ b/docs/help/in/dcc.in
@@ -0,0 +1,45 @@
+
+%9Syntax:%9
+
+@SYNTAX:dcc@
+
+%9Parameters:%9
+
+ CHAT: Initiates or accept a chat request.
+ GET: Accepts a file transfer request.
+ RESUME: Resumes a file transfer.
+ SERVER: Starts a DCC server.
+ CLOSE: Closes a DCC connection.
+ LIST: Displays all the open DCC connections.
+
+ -passive: Uses the passive DCC protocol.
+ -scf: Use any combination of the flags to indicate:
+ 's' - send
+ 'c' - chat
+ 'f' - fserver
+
+ The nickname of the person to chat with, or the name of the file to
+ transfer.
+
+%9Description:%9
+
+ The DCC protocol is used to initiate client-to-client chat connections
+ and file transfers.
+
+ If you are behind NAT, or if the firewall is too restrictive, you might
+ want to try if using the passive parameter resolves your connection
+ problem.
+
+ You can send files which contain special character or spaces by enclosing
+ the filename within quotes. For example: 'my file with spaces.txt'.
+
+%9Examples:%9
+
+ /DCC CHAT mike
+ /DCC GET bob "summer vacation.mkv"
+ /DCC SEND sarah "summer vacation.mkv"
+ /DCC CLOSE get mike
+ /DCC CLOSE send bob "summer vacation.mkv"
+
+%9See also:%9 CD
+
diff --git a/docs/help/in/dehilight.in b/docs/help/in/dehilight.in
new file mode 100644
index 0000000..7c7fe15
--- /dev/null
+++ b/docs/help/in/dehilight.in
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+@SYNTAX:dehilight@
+
+%9Parameters:%9
+
+ The id or mask of the highlight to remove.
+
+%9Description:%9
+
+ Removes the specified highlight from the configuration.
+
+%9Examples:%9
+
+ /DEHILIGHT 1
+ /DEHILIGHT 31
+
+%9See also:%9 HILIGHT
+
diff --git a/docs/help/in/deop.in b/docs/help/in/deop.in
new file mode 100644
index 0000000..9f70cde
--- /dev/null
+++ b/docs/help/in/deop.in
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+@SYNTAX:deop@
+
+%9Parameters:%9
+
+ A list of nicknames to deop.
+
+%9Description:%9
+
+ Removes the channel operator privileges from the given nicknames; you may
+ use the wildcard character '*' in a nickname.
+
+%9Examples:%9
+
+ /DEOP mike
+ /DEOP bob sarah
+ /DEOP jo*n
+ /DEOP *
+
+%9See also:%9 DEVOICE, MODE, OP, VOICE
+
diff --git a/docs/help/in/devoice.in b/docs/help/in/devoice.in
new file mode 100644
index 0000000..11e3d53
--- /dev/null
+++ b/docs/help/in/devoice.in
@@ -0,0 +1,26 @@
+
+%9Syntax:%9
+
+@SYNTAX:devoice@
+
+%9Parameters:%9
+
+ A list of nicknames to devoice.
+
+%9Description:%9
+
+ Removes the channel voice privileges from the given nicknames; you may use
+ the wildcard character '*' in a nickname.
+
+ If a channel is moderated, the users will require a voice or op in order to
+ be able to send messages to the channel.
+
+%9Examples:%9
+
+ /DEVOICE mike
+ /DEVOICE bob sarah
+ /DEVOICE jo*n
+ /DEVOICE *
+
+%9See also:%9 DEOP, MODE, OP, VOICE
+
diff --git a/docs/help/in/die.in b/docs/help/in/die.in
new file mode 100644
index 0000000..1af9c5b
--- /dev/null
+++ b/docs/help/in/die.in
@@ -0,0 +1,15 @@
+
+%9Syntax:%9
+
+@SYNTAX:die@
+
+%9Description:%9
+
+ Terminates the IRC server; this command is reserved for IRC operators.
+
+%9Examples:%9
+
+ /DIE
+
+%9See also:%9 KILL, OPER, WALLOPS
+
diff --git a/docs/help/in/disconnect.in b/docs/help/in/disconnect.in
new file mode 100644
index 0000000..c53b1e6
--- /dev/null
+++ b/docs/help/in/disconnect.in
@@ -0,0 +1,26 @@
+
+%9Syntax:%9
+
+@SYNTAX:disconnect@
+
+%9Parameters:%9
+
+ The network to disconnect from and the message to advertise; if no
+ parameters are given, the active server will be used.
+
+%9Description:%9
+
+ Disconnects from an IRC server; the list of all the servers you are
+ connected to can be retrieved via the SERVER command.
+
+ Use the wildcard character '*' if you want to disconnect from the active
+ server.
+
+%9Examples:%9
+
+ /DISCONNECT liberachat I'm off for today, take care!
+ /DISCONNECT * Vacation time :D
+ /DISCONNECT
+
+%9See also:%9 CONNECT, SERVER
+
diff --git a/docs/help/in/echo.in b/docs/help/in/echo.in
new file mode 100644
index 0000000..7f08018
--- /dev/null
+++ b/docs/help/in/echo.in
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+@SYNTAX:echo@
+
+%9Parameters:%9
+
+ -window: Displays the output in the target window.
+ -level: Displays the output with a given message level.
+
+ The text output; if no target is given, the active window will be used.
+
+%9Description:%9
+
+ Displays the given text.
+
+%9Examples:%9
+
+ /ECHO 1 + 1 = 2 :D
+ /ECHO Testing the ECHO command
+ /ECHO -window #irssi Special variables such as ${N} will not be expanded.
+
+%9See also:%9 CAT, EVAL, EXEC, LEVELS
+
diff --git a/docs/help/in/eval.in b/docs/help/in/eval.in
new file mode 100644
index 0000000..c53c624
--- /dev/null
+++ b/docs/help/in/eval.in
@@ -0,0 +1,35 @@
+
+%9Syntax:%9
+
+@SYNTAX:eval@
+
+%9Parameters:%9
+
+ The commands to evaluate.
+
+%9Description:%9
+
+ Evaluates the given commands and executes them; you can use internal
+ variables and separate multiple commands by using the `;' character.
+ If the command contains a string with `$', `\' or `;' those characters
+ need to be escaped:
+
+ `$' -> `$$'
+ `\' -> `\\' (or even `\\\\', depending on where they are used)
+ `;' -> `\;'
+
+%9Examples:%9
+
+ /EVAL echo I am connected to ${S} on ${chatnet} as ${N}
+ /EVAL echo My user privileges are +${usermode}; echo Let's party!
+
+ to print `1;2$3\4':
+
+ /EVAL echo 1\;2$$3\\4
+
+%9References:%9
+
+ https://github.com/irssi/irssi/blob/master/docs/special_vars.txt
+
+%9See also:%9 CAT, CD, ECHO, EXEC
+
diff --git a/docs/help/in/exec.in b/docs/help/in/exec.in
new file mode 100644
index 0000000..2947ae2
--- /dev/null
+++ b/docs/help/in/exec.in
@@ -0,0 +1,50 @@
+
+%9Syntax:%9
+
+@SYNTAX:exec@
+
+%9Parameters:%9
+
+ -: Suppresses the process termination notification.
+ -nosh: Doesn't execute the command through /bin/sh.
+ -out: Sends the output to the active channel or query.
+ -msg: Sends the output to the specified nickname or channel.
+ -notice: Sends the output to the specified nickname or channel as
+ notices.
+ -name: Gives the process the specified name.
+ -window: Displays the output in the active window.
+ -close: Forcibly closes a process that doesn't die.
+ -<signal>: Sends the given signal to the process.
+ -in: Sends text to the standard input of the process.
+ -interactive: Executes the process in a new window item.
+
+ The command to execute; if no output parameter is given, the active window
+ will be used and if no parameters are given at all, the list of active
+ processes will be displayed.
+
+%9Description:%9
+
+ Executes the specified command in the background; the process can be
+ accessed by its id or the name you gave it.
+
+ The output of the process can be redirected to various targets, such as
+ a window, a channel, a nickname or a query.
+
+ The process identifier must always begin with the '%%' character. For
+ example %%0.
+
+ If you remove a process with the close parameter, it will only make Irssi
+ detach from it; the process will keep running until it terminates.
+
+%9Examples:%9
+
+ /EXEC
+ /EXEC ls
+ /EXEC -msg #irssi cat unicorn.txt
+ /EXEC -out cat /etc/passwd | grep $USER | awk -F: '{print $5}'
+ /EXEC -name ssh -nosh -interactive -window ssh staff.irssi.org
+ /EXEC -close mailserver
+ /EXEC -close %%0
+
+%9See also:%9 CAT, CD, ECHO, EVAL
+
diff --git a/docs/help/in/flushbuffer.in b/docs/help/in/flushbuffer.in
new file mode 100644
index 0000000..8549303
--- /dev/null
+++ b/docs/help/in/flushbuffer.in
@@ -0,0 +1,19 @@
+
+%9Syntax:%9
+
+@SYNTAX:flushbuffer@
+
+%9Description:%9
+
+ Forces an immediate flush of the buffers if the related settings are
+ enabled.
+
+%9Examples:%9
+
+ /FLUSHBUFFER
+
+ /SET write_buffer_size
+ /SET write_buffer_timeout
+
+%9See also:%9 REDRAW, SCROLLBACK
+
diff --git a/docs/help/in/format.in b/docs/help/in/format.in
new file mode 100644
index 0000000..2b65a6b
--- /dev/null
+++ b/docs/help/in/format.in
@@ -0,0 +1,25 @@
+
+%9Syntax:%9
+
+@SYNTAX:format@
+
+%9Parameters:%9
+
+ -reset: Restores the original value.
+ -delete: Removes the format from the configuration.
+
+ The module name, the format name and the value; if no arguments are given,
+ the list of formats are displayed.
+
+%9Description:%9
+
+ Allows you to reconfigure the way messages are displayed.
+
+%9Examples:%9
+
+ /FORMAT irc away You have left planet earth
+ /FORMAT core not_good_idea I'm sorry sir, this broke my irony sensor; add -YES if you really mean it!
+ /FORMAT -reset irc away
+
+%9See also:%9 RELOAD, SAVE, SET
+
diff --git a/docs/help/in/hash.in b/docs/help/in/hash.in
new file mode 100644
index 0000000..2d5a355
--- /dev/null
+++ b/docs/help/in/hash.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:hash@
+
+%9Description:%9
+
+ This is an ancient command that is no longer used; if you on an IRC server
+ that supports this command, please contact us to we can update the
+ documentation.
+
+%9Examples:%9
+
+ /HASH
+
+%9References:%9
+
+ https://irssi.org
+ https://github.com/irssi
+
+%9See also:%9 DIE, KILL, OPER
+
diff --git a/docs/help/in/help.in b/docs/help/in/help.in
new file mode 100644
index 0000000..35ab9b7
--- /dev/null
+++ b/docs/help/in/help.in
@@ -0,0 +1,27 @@
+
+%9Syntax:%9
+
+@SYNTAX:help@
+
+%9Parameters:%9
+
+ The command to display the documentation for; if no argument is given, the
+ list of commands will be displayed.
+
+%9Description:%9
+
+ Displays the documentation for the given command.
+
+%9Examples:%9
+
+ /HELP
+ /HELP AWAY
+ /HELP CONNECT
+
+%9References:%9
+
+ https://irssi.org
+ https://github.com/irssi
+
+%9See also:%9 CONNECT, MSG, NETWORK, SERVER
+
diff --git a/docs/help/in/hilight.in b/docs/help/in/hilight.in
new file mode 100644
index 0000000..49a73a7
--- /dev/null
+++ b/docs/help/in/hilight.in
@@ -0,0 +1,43 @@
+
+%9Syntax:%9
+
+@SYNTAX:hilight@
+
+%9Parameters:%9
+
+ -nick: Highlights only the nickname and not the whole line.
+ -word: Highlights only the word and not the whole line.
+ -line: Highlights the whole line.
+ -mask: Highlights all messages from users matching the mask.
+ -full: The text must match the full word.
+ -matchcase: The text must match case.
+ -regexp: The text is a regular expression.
+ -color: The color to display the highlight in.
+ -actcolor: The color to mark the highlight activity in the statusbar.
+ -level: Matches only on the given message level.
+ -network: Matches only on the given network.
+ -channels: Matches only on the given channels.
+ -priority: The priority to use when multiple highlights match.
+
+ The text to highlight on; if no argument is given, the list of highlights
+ will be displayed.
+
+%9Description:%9
+
+ Highlights the keyword or pattern to make sure that you don't miss any
+ important messages.
+
+%9Examples:%9
+
+ /HILIGHT
+ /HILIGHT mike
+ /HILIGHT -regexp mi+ke+
+ /HILIGHT -mask -color %%G bob!*@*.irssi.org
+ /HILIGHT -full -color %%G -actcolor %%Y redbull
+
+%9References:%9
+
+ https://github.com/irssi/irssi/blob/master/docs/formats.txt
+
+%9See also:%9 DEHILIGHT, LEVELS
+
diff --git a/docs/help/in/ignore.in b/docs/help/in/ignore.in
new file mode 100644
index 0000000..26dd63b
--- /dev/null
+++ b/docs/help/in/ignore.in
@@ -0,0 +1,55 @@
+
+%9Syntax:%9
+
+@SYNTAX:ignore@
+
+%9Parameters:%9
+
+ -regexp: Indicates that the pattern is a regular expression.
+ -full: Indicates that the pattern must match a full word.
+ -pattern: The text pattern to ignore.
+ -except: Negates the ignore.
+ -replies: Also ignore nicknames who are talking to anyone who matches
+ the ignore.
+ -network: Ignores only on a specific network.
+ -channels: Ignores only on specific channels.
+ -time: The timeout to automatically remove the ignore.
+ Accepts units specified in days, hours, minutes, seconds,
+ milliseconds, or no unit for seconds.
+
+ The mask, channels and levels to ignore; if no argument is provided, the
+ list of ignores will be displayed.
+
+%9Description:%9
+
+ Ignores nicknames or text that matches a pattern.
+
+ The special level 'NO_ACT' can be used to ignore activity in the statusbar
+ without actually ignoring the message; this behavior is somewhat special
+ because it is allowed in addition to other ignores for the same target.
+ The special level 'HIDDEN' can be used to hide matching messages that can
+ later be revealed using /WINDOW HIDELEVEL -HIDDEN
+ The special level 'NOHILIGHT' can be used to suppress hilights without actually
+ ignoring the message.
+
+%9Examples:%9
+
+ /IGNORE
+ /IGNORE * JOINS
+ /IGNORE * CTCPS
+ /IGNORE -except *!*@*.irssi.org CTCPS
+ /IGNORE #irssi ALL -PUBLIC -ACTIONS
+ /IGNORE -replies *!*@*.irssi.org ALL
+ /IGNORE -regexp -pattern (away|gone|back|playing|returned) * ACTIONS
+ /IGNORE -regexp -pattern (away|gone|back|playing|returned) #channel ACTIONS
+ /IGNORE *zzz* NICKS
+ /IGNORE *afk* NICKS
+ /IGNORE *away* NICKS
+ /IGNORE #irssi NO_ACT JOINS PARTS QUITS
+ /IGNORE mike NO_ACT -MSGS
+ /IGNORE mike HIDDEN PUBLIC JOINS PARTS QUITS
+ /IGNORE -time 5days christmas PUBLICS
+ /IGNORE -time 300 mike PUBLICS
+
+%9See also:%9 ACCEPT, SILENCE, UNIGNORE
+
diff --git a/docs/help/in/info.in b/docs/help/in/info.in
new file mode 100644
index 0000000..d8d8cfc
--- /dev/null
+++ b/docs/help/in/info.in
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+@SYNTAX:info@
+
+%9Parameters:%9
+
+ The server to display the information for; if no argument is given, the
+ active server will be used.
+
+%9Description:%9
+
+ Displays information about the IRC server software.
+
+%9Examples:%9
+
+ /INFO
+ /INFO irc.libera.chat
+
+%9See also:%9 ADMIN
+
diff --git a/docs/help/in/invite.in b/docs/help/in/invite.in
new file mode 100644
index 0000000..7c0babb
--- /dev/null
+++ b/docs/help/in/invite.in
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+@SYNTAX:invite@
+
+%9Parameters:%9
+
+ The nickname to invite and the channel to invite him or her to; if no
+ channel is given, the active channel will be used.
+
+%9Description:%9
+
+ Invites the specified nick to a channel.
+
+%9Examples:%9
+
+ /INVITE mike
+ /INVITE bob #irssi
+
+%9See also:%9 MODE, WHOIS
+
diff --git a/docs/help/in/irssiproxy.in b/docs/help/in/irssiproxy.in
new file mode 100644
index 0000000..79d75b9
--- /dev/null
+++ b/docs/help/in/irssiproxy.in
@@ -0,0 +1,14 @@
+
+@SYNTAX:irssiproxy@
+
+%9Description:%9
+
+ Displays the list of clients connected to irssiproxy.
+
+%9Examples:%9
+
+ /IRSSIPROXY
+ /IRSSIPROXY STATUS
+
+%9See also:%9 LOAD PROXY, SET irssiproxy
+
diff --git a/docs/help/in/ison.in b/docs/help/in/ison.in
new file mode 100644
index 0000000..e9e54ee
--- /dev/null
+++ b/docs/help/in/ison.in
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+@SYNTAX:ison@
+
+%9Parameters:%9
+
+ The nicknames, separated by space, to check.
+
+%9Description:%9
+
+ Displays whether the specified nicknames are online.
+
+%9Examples:%9
+
+ /ISON mike
+ /ISON sarah bob
+
+%9See also:%9 NOTIFY, WHOWAS, WHOIS
+
diff --git a/docs/help/in/join.in b/docs/help/in/join.in
new file mode 100644
index 0000000..adf7158
--- /dev/null
+++ b/docs/help/in/join.in
@@ -0,0 +1,26 @@
+
+%9Syntax:%9
+
+@SYNTAX:join@
+
+%9Parameters:%9
+
+ -window Joins a channel in the active window.
+ -invite Joins the channel you were last invited to.
+ -<server tag> The server tag on which you want to join the channel.
+
+ The channel names, separated by a comma, to join and the channel key.
+
+%9Description:%9
+
+ Joins the given channels.
+
+%9Examples:%9
+
+ /JOIN #irssi
+ /JOIN #basementcat secret_lair
+ /JOIN -invite
+ /JOIN -liberachat #github,#libera,#irssi
+
+%9See also:%9 KICK, PART
+
diff --git a/docs/help/in/kick.in b/docs/help/in/kick.in
new file mode 100644
index 0000000..eb926c0
--- /dev/null
+++ b/docs/help/in/kick.in
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+@SYNTAX:kick@
+
+%9Parameters:%9
+
+ The channel and the nicknames, separated by a comma, to kick from the
+ channel and the reason thereof; if no channel is given, the active channel
+ will be used.
+
+%9Description:%9
+
+ Removes the given nicknames from the specified channel; this command is
+ typically used to remove troublemakers, flooders or people otherwise making
+ a nuisance of themselves.
+
+%9Examples:%9
+
+ /KICK mike Please... chill down!
+ /KICK #irssi bob,sarah Stop flooding!
+
+%9See also:%9 BAN, KICKBAN, KNOCKOUT
+
diff --git a/docs/help/in/kickban.in b/docs/help/in/kickban.in
new file mode 100644
index 0000000..b2950f4
--- /dev/null
+++ b/docs/help/in/kickban.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:kickban@
+
+%9Parameters:%9
+
+ The channel and the nicknames, separated by a comma, to kick and ban from
+ the channel and the reason thereof; if no channel is given, the active
+ channel will be used.
+
+%9Description:%9
+
+ Removes and then bans the given nicknames from the specified channel.
+
+%9Examples:%9
+
+ /KICKBAN mike Please... chill down!
+ /KICKBAN #irssi bob,sarah You guys broke the rules for the last time.
+
+%9See also:%9 BAN, KICK, KNOCKOUT
+
diff --git a/docs/help/in/kill.in b/docs/help/in/kill.in
new file mode 100644
index 0000000..37bfc58
--- /dev/null
+++ b/docs/help/in/kill.in
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+@SYNTAX:kill@
+
+%9Parameters:%9
+
+ The nickname to remove from the network and the reason thereof.
+
+%9Description:%9
+
+ Terminates a nickname's connection from the network; this command is
+ reserved for IRC operators.
+
+ You should not use this command for personal vendettas or for trolling;
+ these practices are generally frowned upon.
+
+%9Examples:%9
+
+ /KILL mike Get off my lawn
+ /KILL bob Stop breaking the network rules!
+
+%9See also:%9 DIE, OPER, WALLOPS
+
diff --git a/docs/help/in/knock.in b/docs/help/in/knock.in
new file mode 100644
index 0000000..ce8f9aa
--- /dev/null
+++ b/docs/help/in/knock.in
@@ -0,0 +1,30 @@
+
+%9Syntax:%9
+
+@SYNTAX:knock@
+
+%9Parameters:%9
+
+ The channel you wish to get invited to.
+
+%9Description:%9
+
+ Sends an invitation request to the channel operators of the target channel;
+ this command may not work on all IRC servers.
+
+ The following conditions must be met:
+
+ * You are not banned from the channel.
+ * The channel is not private.
+ * You may not be already in the channel.
+ * The channel must be invite only, have a key or has exceeded its user
+ limit.
+
+%9Examples:%9
+
+ /KNOCK #irssi
+ /KNOCK #libera
+ /KNOCK #github
+
+%9See also:%9 INVITE, JOIN
+
diff --git a/docs/help/in/knockout.in b/docs/help/in/knockout.in
new file mode 100644
index 0000000..cbaa8dd
--- /dev/null
+++ b/docs/help/in/knockout.in
@@ -0,0 +1,26 @@
+
+%9Syntax:%9
+
+@SYNTAX:knockout@
+
+%9Parameters:%9
+
+ The time, expressed in seconds, the nicknames, separated by a comma, and the
+ reason thereof; if no time is provided, the ban will be lifted after 5
+ minutes.
+
+%9Description:%9
+
+ Removes and then bans the given nicknames from the active channel; the ban
+ will be automatically lifted after the specified time.
+
+ The ban will not be lifted if you leave the channel or disconnect from the
+ network.
+
+%9Examples:%9
+
+ /KNOCKOUT 3600 mike Your connection is unstable.
+ /KNOCKOUT bob,sarah Chill down a bit.
+
+%9See also:%9 BAN, KICK, KICKBAN
+
diff --git a/docs/help/in/lastlog.in b/docs/help/in/lastlog.in
new file mode 100644
index 0000000..e96e2ed
--- /dev/null
+++ b/docs/help/in/lastlog.in
@@ -0,0 +1,43 @@
+
+%9Syntax:%9
+
+@SYNTAX:lastlog@
+
+%9Parameters:%9
+
+ -: Doesn't print the 'Lastlog:' and 'End of Lastlog' messages.
+ -file: Output the lastlog to a file instead of the active window.
+ -window: Specifies the window to check.
+ -new: Only displays results since the previous lastlog.
+ -away: Only displays results since you previous away status.
+ -<level>: Specifies the levels to check (e.g. -joins -quits -hilight)
+ -clear: Removes the previous results from the active window.
+ -count: Displays how many lines match.
+ -case: Performs a case-sensitive matching.
+ -date: Prepends each row with the message's date
+ -regexp: The given text pattern is a regular expression.
+ -word: The text must match full words.
+ -force: Forces to display the lastlog, even if it exceeds 1000 lines.
+ -after: Include this many lines of content after the match.
+ -before: Include this many lines of content before the match.
+ -<#>: Include this many lines of content around the match.
+ <count>: Display a maximum number of `count' lines.
+ <start>: Skip the last `start' lines.
+
+ The pattern to search for and the maximum of lines to display; if no
+ parameter is given, the entire window buffer will be displayed.
+
+%9Description:%9
+
+ Searches the active window for a pattern and displays the result.
+
+%9Examples:%9
+
+ /LASTLOG holiday
+ /LASTLOG 'is on vacation' 10
+ /LASTLOG -force -file ~/mike.log 'mike'
+ /LASTLOG -hilight
+ /LASTLOG -5 searchterm
+
+%9See also:%9 HILIGHT, SCROLLBACK
+
diff --git a/docs/help/in/layout.in b/docs/help/in/layout.in
new file mode 100644
index 0000000..4b0a2ef
--- /dev/null
+++ b/docs/help/in/layout.in
@@ -0,0 +1,28 @@
+
+%9Syntax:%9
+
+@SYNTAX:layout@
+
+%9Parameters:%9
+
+ SAVE: Saves your layout to the configuration.
+ RESET: Removes the saved layout from the configuration.
+
+%9Description:%9
+
+ Saves the layout of your window configuration; the next time you connect
+ to the server, you will join the channels in the same window as before.
+
+ This method enables you to keep the same window layout when you start Irssi
+ the next time.
+
+ You will need to use the SAVE command to confirm and commit the changes
+ into the configuration file.
+
+%9Examples:%9
+
+ /LAYOUT SAVE
+ /LAYOUT RESET
+
+%9See also:%9 SAVE, WINDOW
+
diff --git a/docs/help/in/levels.in b/docs/help/in/levels.in
new file mode 100644
index 0000000..b6eb9fb
--- /dev/null
+++ b/docs/help/in/levels.in
@@ -0,0 +1,42 @@
+
+%9Description:%9
+
+ These are the message levels that are used throughout Irssi; they describe
+ what kind of message is displayed.
+
+ These are the common levels you can use:
+
+ ACTIONS Actions by a nickname.
+ CLIENTCRAP Irssi's internal messages.
+ CLIENTERROR Irssi's internal error messages.
+ CLIENTNOTICE Irssi's internal notices.
+ CRAP Can be almost anything.
+ CTCPS CTCP messages.
+ DCC DCC protocol related messages.
+ DCCMSGS DCC chat messages.
+ INVITES An invite is received.
+ JOINS A nickname joins a channel.
+ KICKS A nickname gets kicked from a channel.
+ MODES A channel mode is modified.
+ MSGS Private messages.
+ NICKS A nickname changes to another nickname.
+ NOTICES Notices sent from a nickname.
+ PARTS A nickname leaves a channel.
+ PUBLIC Public messages in a channel.
+ QUITS A nickname disconnects from IRC.
+ SNOTES Notices sent from a server.
+ TOPICS A channel topic is modified.
+ WALLOPS A wallop is received.
+
+ These are the special levels you can use:
+
+ HILIGHT The text is highlighted.
+ NEVER Never ignores or logs the message.
+ HIDDEN Hides the message when window HIDELEVEL includes HIDDEN.
+ NO_ACT Doesn't trigger any activity in the statusbar.
+ NOHILIGHT The text is not highlighted.
+ Suppresses hilights when used with /ignore.
+
+ When using levels from Irssi scripts, you need to prepend the level with
+ 'MSGLEVEL_'; for example 'CRAP' becomes 'MSGLEVEL_CRAP'.
+
diff --git a/docs/help/in/links.in b/docs/help/in/links.in
new file mode 100644
index 0000000..a2aaa68
--- /dev/null
+++ b/docs/help/in/links.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:links@
+
+%9Parameters:%9
+
+ The server to search on and the string to match on; if no arguments are
+ given, the list of links of the active server will be displayed.
+
+%9Description:%9
+
+ Displays the links between an IRC server and its connections.
+
+%9Examples:%9
+
+ /LINKS
+ /LINKS ircsource.irssi.org
+ /LINKS ircsource.irssi.org *.hub
+
+%9See also:%9 LUSERS, MAP
+
diff --git a/docs/help/in/list.in b/docs/help/in/list.in
new file mode 100644
index 0000000..6dda79e
--- /dev/null
+++ b/docs/help/in/list.in
@@ -0,0 +1,38 @@
+
+%9Syntax:%9
+
+@SYNTAX:list@
+
+%9Parameters:%9
+
+ -yes: Confirms that you want to receive a large amount of data.
+
+ If the exact name of a channel is given, the only information about this
+ channel is requested; otherwise, a list of all channels will be displayed.
+
+%9Description:%9
+
+ Displays the channel names that match your request; requesting all channels
+ may cause the server to disconnect you for flooding.
+
+%9Examples:%9
+
+ /LIST
+ /LIST -yes
+ /LIST #ubuntu
+ /LIST #*ubuntu*,>1
+
+%9Remarks:%9
+
+ Not all networks support server-side filtering. Some provide a network
+ service or service bot instead; on IRCnet, you may use the List service:
+
+ /SQUERY Alis HELP
+
+ Other networks with service bots (like ChanServ) may also provide a list
+ service bot (confirm with /WHOIS ALIS):
+
+ /MSG Alis HELP
+
+%9See also:%9 STATS, SQUERY, WHOIS
+
diff --git a/docs/help/in/load.in b/docs/help/in/load.in
new file mode 100644
index 0000000..56f7836
--- /dev/null
+++ b/docs/help/in/load.in
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+@SYNTAX:load@
+
+%9Parameters:%9
+
+ The name of the module and submodule to load.
+
+%9Description:%9
+
+ Loads a plugin; if the full path isn't given, it will attempt to load from
+ common directories in your installation path.
+
+ To load a perl script, you must use the SCRIPT command.
+
+%9Examples:%9
+
+ /LOAD fish
+ /LOAD ~/irssi-fish/libfish.so
+
+%9See also:%9 SCRIPT, UNLOAD
+
diff --git a/docs/help/in/log.in b/docs/help/in/log.in
new file mode 100644
index 0000000..3ca8782
--- /dev/null
+++ b/docs/help/in/log.in
@@ -0,0 +1,48 @@
+
+%9Syntax:%9
+
+@SYNTAX:log@
+
+%9Parameters:%9
+
+ OPEN: Opens a log file.
+ CLOSE: Closes a log file.
+ START: Starts logging a log entry.
+ STOP: Stops logging a log entry.
+
+ -noopen: Saves the entry in the configuration, but doesn't actually
+ start logging.
+ -autoopen: Automatically opens the log at startup.
+ -window: Displays the output to the active window, or the window
+ specified in the targets parameter.
+ -<server tag>: The server tag the targets must be on.
+ -targets: Logs the specified nicknames or channels.
+ -colors: Also log the color codes of the messages.
+
+ The filename of the log and the levels to match; if no argument is given,
+ the list of open logs will be displayed.
+
+%9Description:%9
+
+ Opens a log file and stores the messages of the given targets into it; the
+ log files will be locked so multiple clients cannot log to the same file.
+
+ You may use any of the date formats to create a log rotation; we strongly
+ recommend you to enable autolog if you are interested in keeping logs.
+
+%9Examples:%9
+
+ /LOG OPEN -targets mike ~/irclogs/mike.log MSGS
+ /LOG OPEN -targets #irssi ~/irclogs/liberachat/irssi-%%Y-%%m-%%d
+ /LOG CLOSE ~/irclogs/liberachat/irssi-%%Y-%%m-%%d
+ /LOG STOP ~/irclogs/liberachat/irssi-%%Y-%%m-%%d
+ /LOG START ~/irclogs/liberachat/irssi-%%Y-%%m-%%d
+
+ /SET autolog ON
+
+%9References:%9
+
+ https://github.com/irssi/irssi/blob/master/docs/formats.txt
+
+%9See also:%9 SET LOG, WINDOW LOG
+
diff --git a/docs/help/in/lusers.in b/docs/help/in/lusers.in
new file mode 100644
index 0000000..f9edf53
--- /dev/null
+++ b/docs/help/in/lusers.in
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+@SYNTAX:lusers@
+
+%9Parameters:%9
+
+ The server to search on and the remote sever to search on; if no arguments
+ are given, the active server will be used.
+
+%9Description:%9
+
+ Displays the user statistics of the active or remote server.
+
+ The parameters to search on a remote server are no longer supported on most
+ IRC servers; we no longer provide examples for remote LUSERS to avoid all
+ confusion.
+
+%9Examples:%9
+
+ /LUSERS
+
+%9See also:%9 LINKS, MAP
+
diff --git a/docs/help/in/map.in b/docs/help/in/map.in
new file mode 100644
index 0000000..9a80698
--- /dev/null
+++ b/docs/help/in/map.in
@@ -0,0 +1,16 @@
+
+%9Syntax:%9
+
+@SYNTAX:map@
+
+%9Description:%9
+
+ Displays the network map of an IRC network; this command is usually
+ reserved for IRC operators and does not work on all servers.
+
+%9Examples:%9
+
+ /MAP
+
+%9See also:%9 DIE, LINKS, LUSERS
+
diff --git a/docs/help/in/me.in b/docs/help/in/me.in
new file mode 100644
index 0000000..0da1e5c
--- /dev/null
+++ b/docs/help/in/me.in
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+@SYNTAX:me@
+
+%9Parameters:%9
+
+ The message to emote.
+
+%9Description:%9
+
+ Sends an action emote to the active nickname or channel.
+
+%9Examples:%9
+
+ /ME is hungry!
+ /ME had an awesome day @ work
+ /ME is happy it's Friday
+
+%9See also:%9 ACTION, CTCP
+
diff --git a/docs/help/in/mircdcc.in b/docs/help/in/mircdcc.in
new file mode 100644
index 0000000..ce57a3f
--- /dev/null
+++ b/docs/help/in/mircdcc.in
@@ -0,0 +1,28 @@
+
+%9Syntax:%9
+
+@SYNTAX:mircdcc@
+
+%9Parameters:%9
+
+ ON: Enables mIRC compatibility mode.
+ OFF: Disables mIRC compatibility mode.
+
+%9Description:%9
+
+ After establishing a DCC CHAT connection that you initiated, you might
+ encounter some protocol issues if the target is using mIRC.
+
+ If you or your target sees some unexpected output or behavior inside a DCC
+ CHAT session, use this command to enable mIRC compatibility mode.
+
+ When receiving a connection from an mIRC user, the compatibility mode will
+ automatically be enabled.
+
+%9Examples:%9
+
+ /MIRCDCC ON
+ /MIRCDCC OFF
+
+%9See also:%9 ACTION, CTCP, DCC
+
diff --git a/docs/help/in/mode.in b/docs/help/in/mode.in
new file mode 100644
index 0000000..93d051f
--- /dev/null
+++ b/docs/help/in/mode.in
@@ -0,0 +1,77 @@
+
+%9Syntax:%9
+
+@SYNTAX:mode@
+
+%9Parameters:%9
+
+ The target nickname or channel and the modes with their parameters to set or
+ remove.
+
+ If the target nickname or channel is omitted, the active nickname or channel
+ will be used.
+
+%9Description:%9
+
+ Modifies the user or channel modes for which you are privileged to modify.
+
+ You can specify multiple modes in one command and prepend them by using the
+ '+' sign to set or '-' sign to unset; modes that require a parameter will be
+ retrieved from the argument list.
+
+ Some common channel modes are:
+
+ b <mask>: Adds or removes a ban; a ban will prevent a user who
+ matches the given mask from joining the channel unless
+ he or she is invited or in the exempt list.
+ e <mask>: Adds or removes a ban exception; users who match a mask
+ on the exempt list are able to join a channel even if
+ they also match an entry on the ban list.
+ i: When enabled, users need to be invited into the channel
+ or have a matching entry in the invite list.
+ I <mask>: Adds or removes an invite; users who match a mask on
+ the invite list are able to join even if the channel is
+ set to invite only.
+ k <key>: Adds or removes a channel key, aka a password; users
+ will not be able to join the channel without providing
+ the key.
+ l <count>: Adds, removes or updates the maximum amount of users
+ that may join the channel.
+ m: When enabled, users who are not opped or voiced cannot
+ send messages to the channel.
+ n: When enabled, users who are not on the channel cannot
+ send messages to it.
+ p: When enabled, the channel will not be displayed in your
+ WHOIS output.
+ s: When enabled, the channel will not be displayed in the
+ LIST output.
+ t: When enabled, users who are not opped or voices cannot
+ modify the channel topic.
+ o <nickname>: Adds or removes the operator status from a nickname.
+ v <nickname>: Adds or removes the voice status from a nickname.
+
+ Some common user modes are:
+
+ i: When enabled, other users will not be able to see you
+ on a WHO output unless they are in the channel
+ themselves.
+ w: When enabled, you will receive WALLOP messages from IRC
+ operators.
+ s: When enabled, you will receive special notices or debug
+ messages from the server.
+
+ Many networks have additional user and channel modes; we highly recommend
+ you to read the documentation of the networks you frequently connect to and
+ maximize your IRC experience.
+
+%9Examples:%9
+
+ /MODE #irssi +o mike
+ /MODE #irssi -o+iI mike mike!*@*.irssi.org
+ /MODE +b mike!*@*.irssi.org
+ /MODE -o mike
+ /MODE +impsnkl secret_hideout 100
+ /MODE mike +iw
+
+%9See also:%9 BAN, DEOP, DEVOICE, OP, UNBAN, VOICE
+
diff --git a/docs/help/in/motd.in b/docs/help/in/motd.in
new file mode 100644
index 0000000..6e86681
--- /dev/null
+++ b/docs/help/in/motd.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:motd@
+
+%9Parameters:%9
+
+ The server or the server the target nickname is on; if no parameter is
+ given, the active server will be used.
+
+%9Description:%9
+
+ Displays the welcome message of an IRC server.
+
+%9Examples:%9
+
+ /MOTD
+ /MOTD irc.libera.chat
+ /MOTD bob
+
+%9See also:%9 ADMIN, INFO, LINKS, MAP
+
diff --git a/docs/help/in/msg.in b/docs/help/in/msg.in
new file mode 100644
index 0000000..6c7dd70
--- /dev/null
+++ b/docs/help/in/msg.in
@@ -0,0 +1,33 @@
+
+%9Syntax:%9
+
+@SYNTAX:msg@
+
+%9Parameters:%9
+
+ -<server tag>: The server tag the targets are on.
+ -channel: Indicates that the target is a channel.
+ -nick: Indicates that the target is a nickname.
+
+ The target nickname or channel and the message to send.
+
+ The target can be a comma delimited list of targets, ie
+ nick1,nick2 or #chan1,#chan2
+
+ Or one of the following special targets:
+ * : Use the active nickname or channel
+ , : Last person who sent you a /msg
+ . : Last person you sent a /msg to
+
+%9Description:%9
+
+ Sends a message to a nickname or channel.
+
+%9Examples:%9
+
+ /MSG mike Hi, what's up?
+ /MSG #irssi I am awesome :)
+ /MSG * Do you want to build a snowman?
+
+%9See also:%9 ACTION, DCC, JOIN
+
diff --git a/docs/help/in/names.in b/docs/help/in/names.in
new file mode 100644
index 0000000..974b845
--- /dev/null
+++ b/docs/help/in/names.in
@@ -0,0 +1,27 @@
+
+%9Syntax:%9
+
+@SYNTAX:names@
+
+%9Parameters:%9
+
+ -count: Displays the amount of users in the channel.
+ -ops: Displays the channel operators.
+ -halfops: Displays the channel demi-operators.
+ -voices: Displays the users who are voiced in a channel.
+
+ The channels to report or ** for all channels you have joined; if no
+ arguments are given, the users in the active channel will be displayed.
+
+%9Description:%9
+
+ Displays the users who are in a channel; you can provide multiple channels
+ by separating them with a comma.
+
+%9Examples:%9
+
+ /NAMES -ops
+ /NAMES -voices #irssi,#libera
+
+%9See also:%9 JOIN, PART, WHO, WHOIS
+
diff --git a/docs/help/in/nctcp.in b/docs/help/in/nctcp.in
new file mode 100644
index 0000000..9f51673
--- /dev/null
+++ b/docs/help/in/nctcp.in
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+@SYNTAX:nctcp@
+
+%9Parameters:%9
+
+ A target nickname or channel, a command and the data.
+
+%9Description:%9
+
+ Sends a CTCP reply to a nickname or channel; you can provide multiple
+ targets by separating them with a comma.
+
+%9Examples:%9
+
+ /NCTCP #irssi VERSION King of the Jungle v1.0
+ /NCTCP bob,#libera USERINFO I am bob :p
+
+%9See also:%9 CTCP
+
diff --git a/docs/help/in/netsplit.in b/docs/help/in/netsplit.in
new file mode 100644
index 0000000..3578816
--- /dev/null
+++ b/docs/help/in/netsplit.in
@@ -0,0 +1,16 @@
+
+%9Syntax:%9
+
+@SYNTAX:netsplit@
+
+%9Description:%9
+
+ Displays some information about users who are currently lost in one or
+ more net splits.
+
+%9Examples:%9
+
+ /NETSPLIT
+
+%9See also:%9 JOIN, LINKS, MAP, PART
+
diff --git a/docs/help/in/network.in b/docs/help/in/network.in
new file mode 100644
index 0000000..788c1c6
--- /dev/null
+++ b/docs/help/in/network.in
@@ -0,0 +1,70 @@
+
+%9Syntax:%9
+
+@SYNTAX:network@
+
+%9Parameters:%9
+
+ LIST: Displays the list of configured networks.
+ ADD: Adds a network to your configuration.
+ MODIFY: Modifies a network in your configuration.
+ REMOVE: Removes a network from your configuration.
+
+ -nick: Specifies the nickname to use.
+ -alternate_nick Specifies the alternate nickname to use.
+ -user: Specifies the user identity to use.
+ -realname: Specifies the real name to use.
+ -host: Specifies the hostname to use.
+ -usermode: Specifies the user modes to set on yourself.
+ -autosendcmd: Specifies the commands, separated by the ';' character,
+ and enclosed within two "'" characters, to perform after
+ connecting.
+ (Some characters need to be escaped - see /help eval)
+ -querychans: Specifies the maximum number of channels to put in one MODE
+ or WHO command when synchronizing.
+ -whois: Specifies the maximum number of nicknames in one WHOIS
+ command.
+ -msgs: Specifies the maximum number of nicknames in one PRIVMSG
+ command.
+ -kicks: Specifies the maximum number of nicknames in one KICK
+ command.
+ -modes: Specifies the maximum number of nicknames in one MODE
+ command.
+ -cmdspeed: Specifies the minimum amount of time, expressed in
+ milliseconds, that the client must wait before sending
+ additional commands to the server.
+ -cmdmax: Specifies the maximum number of commands to perform before
+ starting the internal flood protection.
+ -sasl_mechanism Specifies the mechanism to use for the SASL authentication.
+ At the moment irssi only supports the 'plain' and the
+ 'external' mechanisms.
+ Use '' to disable the authentication.
+ -sasl_username Specifies the username to use during the SASL authentication.
+ -sasl_password Specifies the password to use during the SASL authentication.
+
+
+ The name of the network to add, edit or remove; if no parameter is given,
+ the list of networks will be displayed.
+
+%9Description:%9
+
+ Displays, adds, modifies or removes the network configuration of IRC
+ networks.
+
+ When using the ADD parameter on a network that already exists, the
+ configuration will be merged with each other.
+
+ We recommend using 'WAIT 2000' between the automated commands in order to
+ prevent you from being kicked from the network due to flooding commands.
+
+%9Examples:%9
+
+ /NETWORK ADD -usermode +giw EFnet
+ /NETWORK ADD -usermode +iw -nick mike -realname 'The one and only mike!' -host staff.irssi.org liberachat
+ /NETWORK ADD -autosendcmd '^MSG NickServ identify WzerT8zq' liberachat
+ /NETWORK ADD -autosendcmd '^MSG Q@CServe.quakenet.org AUTH mike WzerT8zq; WAIT 2000; OPER mike WzerT8zq; WAIT 2000; MODE mike +kXP' Quakenet
+ /NETWORK MODIFY -usermode +gi EFnet
+ /NETWORK REMOVE liberachat
+
+%9See also:%9 CHANNEL, CONNECT, SERVER
+
diff --git a/docs/help/in/nick.in b/docs/help/in/nick.in
new file mode 100644
index 0000000..59e15ca
--- /dev/null
+++ b/docs/help/in/nick.in
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+@SYNTAX:nick@
+
+%9Parameters:%9
+
+ Your new nickname.
+
+%9Description:%9
+
+ Changes your nickname on the active server.
+
+%9Examples:%9
+
+ /NICK mike
+ /NICK bob
+
+%9See also:%9 CONNECT, JOIN, MSG, PART
+
diff --git a/docs/help/in/notice.in b/docs/help/in/notice.in
new file mode 100644
index 0000000..4c8d213
--- /dev/null
+++ b/docs/help/in/notice.in
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+@SYNTAX:notice@
+
+%9Parameters:%9
+
+ The targets and the message to notify.
+
+%9Description:%9
+
+ Sends a notice to the target nickname or channel; these are often used in
+ automated bots or scripts.
+
+ You can provide multiple targets by separating them with a comma.
+
+%9Examples:%9
+
+ /NOTICE mike You sir, are just awesome!
+ /NOTICE bob,#irssi Fish go blub :p
+
+%9See also:%9 CTCP, MSG, NCTCP
+
diff --git a/docs/help/in/notify.in b/docs/help/in/notify.in
new file mode 100644
index 0000000..14253c1
--- /dev/null
+++ b/docs/help/in/notify.in
@@ -0,0 +1,29 @@
+
+%9Syntax:%9
+
+@SYNTAX:notify@
+
+%9Parameters:%9
+
+ -away: Notifies you if the target modifies its away status.
+ -list: Displays the list of notifications.
+
+ The nickname or mask to get a notification for; if no arguments are given,
+ the current matching notifications will be displayed.
+
+ You may also provide the network that the target must be on.
+
+%9Description:%9
+
+ Notifies you when a nickname or users matching a host on the notification
+ list comes online or offline.
+
+%9Examples:%9
+
+ /NOTIFY -list
+ /NOTIFY -away mike
+ /NOTIFY bob
+ /NOTIFY *!*@staff.irssi.org
+
+%9See also:%9 AWAY, HILIGHT, UNNOTIFY
+
diff --git a/docs/help/in/op.in b/docs/help/in/op.in
new file mode 100644
index 0000000..ff15c52
--- /dev/null
+++ b/docs/help/in/op.in
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+@SYNTAX:op@
+
+%9Parameters:%9
+
+ A list of nicknames to op.
+
+%9Description:%9
+
+ Grants the channel operator privileges to the given nicknames; you may use
+ the wildcard character '*' in a nickname.
+
+%9Examples:%9
+
+ /OP mike
+ /OP bob sarah
+ /OP jo*n
+ /OP *
+
+%9See also:%9 DEOP, DEVOICE, KICK, MODE, VOICE
+
diff --git a/docs/help/in/oper.in b/docs/help/in/oper.in
new file mode 100644
index 0000000..b89a65c
--- /dev/null
+++ b/docs/help/in/oper.in
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+@SYNTAX:oper@
+
+%9Parameters:%9
+
+ The username and password to identify yourself as an IRC operator; if no
+ password is given, you will be prompted to enter one.
+
+%9Description:%9
+
+ Grants you the IRC operator status.
+
+%9Examples:%9
+
+ /OPER bob
+ /OPER mike WzerT8zq
+
+%9See also:%9 DIE, KILL
+
diff --git a/docs/help/in/otr.in b/docs/help/in/otr.in
new file mode 100644
index 0000000..fcfcd87
--- /dev/null
+++ b/docs/help/in/otr.in
@@ -0,0 +1,111 @@
+
+OTR %|[OPTION]
+
+Command to control the OTR module. Without an option, /OTR INFO is printed.
+
+This help contains three sections which are %9options, quickstart and files.%n
+
+To add the OTR status bar (highly recommended):
+
+%9/statusbar window add otr%n
+
+%9Options:%n
+
+AUTH <secret>
+ Start or respond to an authentication process.
+
+AUTHQ <question> <secret>
+ Start a SMP authentication process.
+
+ Example: %9/otr authq "My question is" "this is the secret"%n
+
+AUTHABORT
+ Abort an ongoing authentication process.
+
+CONTEXTS
+ List known contexts which basically list the known fingerprints and their
+ state.
+
+DEBUG
+ Turn on debugging.
+
+DISTRUST <fingerprint>
+ Distrust a specific fingerprint. This command can be done inside a private
+ window for which the current fingerprint of the other person will be used
+ or else set fp to a human readable OTR fingerprint available with the above
+ contexts command.
+
+ Examples: %9/otr distrust 487FFADA 5073FEDD C5AB5C14 5BB6C1FF 6D40D48A%n
+
+FINISH
+ End the OTR session. This MUST be done inside a private conversation
+ window.
+
+FORGET <fingerprint>
+ Forget a specific fingerprint (deleted from the known fingerprints). The
+ behavior is the same as the distrust command explained above.
+
+GENKEY <name>
+ Generate OTR keys for a given account name. This is done automatically
+ if someone tries to establish a secure session.
+
+ This process is done in a background worker and can take an arbitrary
+ amount of time. The completion is checked when another irssi event is
+ caught.
+
+HELP
+ Print this help.
+
+INFO
+ Display the OTR fingerprint(s) of all your account(s).
+
+INIT
+ Initialize an OTR conversation within a private conversation window.
+
+TRUST <fingerprint>
+ Trust a specific fingerprint. The behavior is the same as the forget and
+ distrust commands explained above.
+
+VERSION
+ Print the version of the OTR module.
+
+%9Quickstart:%n
+
+Start a private conversation with the person you want to initiate a secure
+session. Once in the private message window:
+
+%9/otr init%n
+
+Key generation should start if no key is found for your account name. Once the
+process is done, either type a message which should automatically start the
+session or redo the init command.
+
+Time to authenticate the person. Either use a shared secret exchange through
+phone or GPG-signed email or use the socialist millionaire problem mechanism
+(SMP) which is basically to ask a question for which the answer can only be
+known by the other person.
+
+%9/otr auth <shared-secret>%n OR %9/otr authq "A question" <shared-secret>%n
+
+Or to respond to an authentication:
+
+%9/otr auth <secret>%n
+
+%9Files:%n
+
+This otr modules creates a directory in %9$HOME/.irssi/otr%n and creates three
+files:
+
+* %9otr.key%n
+ Contains your OTR private key(s). NEVER shared this directory with someone
+ else unless you know what you are doing.
+
+* %9otr.fp%n
+ The known fingerprints with their _trust_ status.
+
+* %9otr.instag
+ Instance tag of the libotr. This should NEVER be copied to an other
+ computer. If unsure, just ignore this file.
+
+For more information on OTR, see https://otr.cypherpunks.ca/
+
diff --git a/docs/help/in/part.in b/docs/help/in/part.in
new file mode 100644
index 0000000..f89769c
--- /dev/null
+++ b/docs/help/in/part.in
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+@SYNTAX:part@
+
+%9Parameters:%9
+
+ The channels, separated by a comma, to leave and the message to advertise.
+
+%9Description:%9
+
+ Leaves the given channels.
+
+%9Examples:%9
+
+ /PART #irssi
+ /PART #libera,#irssi
+
+%9See also:%9 JOIN, KICK
+
diff --git a/docs/help/in/ping.in b/docs/help/in/ping.in
new file mode 100644
index 0000000..11e618d
--- /dev/null
+++ b/docs/help/in/ping.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:ping@
+
+%9Parameters:%9
+
+ The nickname or channel to ping, you can use the asterisk '*' character to
+ ping every user on a channel.
+
+%9Description:%9
+
+ Sends a CTCP PING request to a nickname or a channel; this is used to find
+ out the latency on the network.
+
+%9Examples:%9
+
+ /PING bob
+ /PING #irssi
+
+%9See also:%9 CTCP, MSG
+
diff --git a/docs/help/in/query.in b/docs/help/in/query.in
new file mode 100644
index 0000000..a34f85e
--- /dev/null
+++ b/docs/help/in/query.in
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+@SYNTAX:query@
+
+%9Parameters:%9
+
+ -window: Uses the active window instead of opening a new one.
+ -<server tag>: The server tag the target nickname is on.
+
+ The nickname to query and the message.
+
+%9Description:%9
+
+ Starts a private conversation with a nickname.
+
+%9Examples:%9
+
+ /QUERY mike
+ /QUERY -liberachat bob
+ /QUERY -liberachat -window sarah
+
+%9See also:%9 MSG, UNQUERY, WINDOW
+
diff --git a/docs/help/in/quit.in b/docs/help/in/quit.in
new file mode 100644
index 0000000..1b9ca26
--- /dev/null
+++ b/docs/help/in/quit.in
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+@SYNTAX:quit@
+
+%9Parameters:%9
+
+ The message to advertise.
+
+%9Description:%9
+
+ Terminates the application and advertises the given message on all the
+ networks you are connected to.
+
+%9Examples:%9
+
+ /QUIT
+ /QUIT <@cartman> Screw you guys, I'm going home!
+
+%9See also:%9 DISCONNECT
+
diff --git a/docs/help/in/quote.in b/docs/help/in/quote.in
new file mode 100644
index 0000000..5b483a8
--- /dev/null
+++ b/docs/help/in/quote.in
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+@SYNTAX:quote@
+
+%9Parameters:%9
+
+ The text to send to the IRC server.
+
+%9Description:%9
+
+ Sends raw data to the server without any parsing.
+
+%9Examples:%9
+
+ /QUOTE PRIVMSG mike :Hey, this works!
+ /QUOTE OPERWALL :Meow!
+
+%9See also:%9 CONNECT, DISCONNECT, JOIN, MSG, PART
+
diff --git a/docs/help/in/rawlog.in b/docs/help/in/rawlog.in
new file mode 100644
index 0000000..1c2dafe
--- /dev/null
+++ b/docs/help/in/rawlog.in
@@ -0,0 +1,26 @@
+
+%9Syntax:%9
+
+@SYNTAX:rawlog@
+
+%9Parameters:%9
+
+ SAVE: Saves the raw server buffer into a file.
+ OPEN: Opens a log file and start logging all raw data.
+ CLOSE: Closes the log file
+
+ The filename to store the raw data into.
+
+%9Description:%9
+
+ Saves all the raw data that is received from and transmitted to the active
+ server into a log file.
+
+%9Examples:%9
+
+ /RAWLOG SAVE ~/server.log
+ /RAWLOG OPEN ~/debug.log
+ /RAWLOG CLOSE
+
+%9See also:%9 LOG
+
diff --git a/docs/help/in/recode.in b/docs/help/in/recode.in
new file mode 100644
index 0000000..760c66c
--- /dev/null
+++ b/docs/help/in/recode.in
@@ -0,0 +1,39 @@
+
+%9Syntax:%9
+
+@SYNTAX:recode@
+
+%9Parameters:%9
+
+ ADD: Adds an entry into the conversion database.
+ REMOVE: Removes an entry from the conversion database.
+
+ The network tag and channel or nickname to add or remove; if no target is
+ given, the active nickname or channel will be used.
+
+%9Description:%9
+
+ Recodes the data transmitted to and received from nicknames and channels
+ into a specific charset.
+
+ To get a list of supported charsets on your system, you can generally use
+ the 'iconv -l' command.
+
+%9Examples:%9
+
+ /RECODE
+ /RECODE ADD liberachat/mike utf-8
+ /RECODE ADD #korea euc-kr
+ /RECODE REMOVE #korea
+
+%9Special Examples:%9
+
+ /SET term_charset utf-8
+ /SET recode_fallback ISO-8859-15
+ /SET recode_out_default_charset ISO-8859-15
+
+ /TOGGLE recode_transliterate
+ /TOGGLE recode_autodetect_utf8
+
+%9See also:%9 CONNECT, MSG, NETWORK, SERVER
+
diff --git a/docs/help/in/reconnect.in b/docs/help/in/reconnect.in
new file mode 100644
index 0000000..87beb95
--- /dev/null
+++ b/docs/help/in/reconnect.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:reconnect@
+
+%9Parameters:%9
+
+ The network tag and message to advertise; if no arguments are given, the
+ active server and default message will be used.
+
+%9Description:%9
+
+ Disconnect and reconnect from a network.
+
+%9Examples:%9
+
+ /RECONNECT
+ /RECONNECT liberachat
+ /RECONNECT EFnet BRB :)
+
+%9See also:%9 CONNECT, DISCONNECT, NETWORK, RMRECONNS, SERVER
+
diff --git a/docs/help/in/rehash.in b/docs/help/in/rehash.in
new file mode 100644
index 0000000..a7e774e
--- /dev/null
+++ b/docs/help/in/rehash.in
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+@SYNTAX:rehash@
+
+%9Parameters:%9
+
+ The raw parameters to send to the server, if no arguments are given, none
+ will be sent to the server.
+
+%9Description:%9
+
+ Reloads the configuration of the IRC server you are are connected to; this
+ command is restricted to IRC operators.
+
+%9Examples:%9
+
+ /REHASH
+
+%9See also:%9 DIE, KILL, OPER
+
diff --git a/docs/help/in/reload.in b/docs/help/in/reload.in
new file mode 100644
index 0000000..80cfcc4
--- /dev/null
+++ b/docs/help/in/reload.in
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+@SYNTAX:reload@
+
+%9Parameters:%9
+
+ The filename of any Irssi configuration; if no parameter is given, the
+ active configuration file will be used.
+
+%9Description:%9
+
+ Reloads the Irssi configuration file.
+
+%9Examples:%9
+
+ /RELOAD
+ /RELOAD ~/test.irssi.conf
+
+%9See also:%9 SAVE
+
diff --git a/docs/help/in/restart.in b/docs/help/in/restart.in
new file mode 100644
index 0000000..6677b79
--- /dev/null
+++ b/docs/help/in/restart.in
@@ -0,0 +1,16 @@
+
+%9Syntax:%9
+
+@SYNTAX:restart@
+
+%9Description:%9
+
+ Restarts the active IRC server; this command is restricted to IRC
+ administrators.
+
+%9Examples:%9
+
+ /RESTART
+
+%9See also:%9 DIE, KILL, OPER, REHASH
+
diff --git a/docs/help/in/rmreconns.in b/docs/help/in/rmreconns.in
new file mode 100644
index 0000000..4295d4a
--- /dev/null
+++ b/docs/help/in/rmreconns.in
@@ -0,0 +1,15 @@
+
+%9Syntax:%9
+
+@SYNTAX:rmreconns@
+
+%9Description:%9
+
+ Removes all active and pending reconnections.
+
+%9Examples:%9
+
+ /RMRECONNS
+
+%9See also:%9 CONNECT, DISCONNECT, NETWORK, SERVER
+
diff --git a/docs/help/in/rmrejoins.in b/docs/help/in/rmrejoins.in
new file mode 100644
index 0000000..bfc4f86
--- /dev/null
+++ b/docs/help/in/rmrejoins.in
@@ -0,0 +1,15 @@
+
+%9Syntax:%9
+
+@SYNTAX:rmrejoins@
+
+%9Description:%9
+
+ Removes all active and pending join requests.
+
+%9Examples:%9
+
+ /RMREJOINS
+
+%9See also:%9 JOIN, PART
+
diff --git a/docs/help/in/save.in b/docs/help/in/save.in
new file mode 100644
index 0000000..0978597
--- /dev/null
+++ b/docs/help/in/save.in
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+@SYNTAX:save@
+
+%9Parameters:%9
+
+ -formats: Saves all the formats into the theme file.
+
+ The file to save the configuration or theme into; if no parameter is given,
+ the active configuration or theme file will be used.
+
+%9Description:%9
+
+ Saves the configuration file.
+
+%9Examples:%9
+
+ /SAVE
+ /SAVE -formats
+ /SAVE ~/.irssi/config-new
+
+%9See also:%9 RELOAD, SET
+
diff --git a/docs/help/in/sconnect.in b/docs/help/in/sconnect.in
new file mode 100644
index 0000000..47da885
--- /dev/null
+++ b/docs/help/in/sconnect.in
@@ -0,0 +1,25 @@
+
+%9Syntax:%9
+
+@SYNTAX:sconnect@
+
+%9Parameters:%9
+
+ The server to connect to, the connection port and the remote server that
+ initiates the connection attempt.
+
+ If no remote server is given, the server you are currently connected to will
+ be used.
+
+%9Description:%9
+
+ Connect a server to the IRC network; this command is restricted to IRC
+ operators.
+
+%9Examples:%9
+
+ /SCONNECT ircsource.irssi.org
+ /SCONNECT ircsource.irssi.org 6667 be.hub
+
+%9See also:%9 DIE, KILL, OPER, RESTART, SQUIT
+
diff --git a/docs/help/in/script.in b/docs/help/in/script.in
new file mode 100644
index 0000000..e90135a
--- /dev/null
+++ b/docs/help/in/script.in
@@ -0,0 +1,34 @@
+
+%9Syntax:%9
+
+@SYNTAX:script@
+
+%9Parameters:%9
+
+ LIST: Displays the list of loaded scripts.
+ EXEC: Executes the given code.
+ LOAD: Loads the given script into the memory and executes it.
+ UNLOAD: Unloads the given script from the memory.
+ RESET: Unloads all the scripts.
+ -permanent: In combination with EXEC, the code will be loaded into the
+ memory.
+ -autorun: When passed to RESET the scripts in the autorun folder are
+ reloaded.
+
+ If no argument is given, the list of active scripts will be displayed.
+
+%9Description:%9
+
+ Interact with the Perl engine to execute scripts.
+
+%9Examples:%9
+
+ /SCRIPT
+ /SCRIPT LIST
+ /SCRIPT LOAD ~/.irssi/scripts/nickserv.pl
+ /SCRIPT UNLOAD nickserv
+ /SCRIPT RESET
+ /SCRIPT EXEC foreach my $channel (Irssi::channels()) { Irssi::print($channel->{name} . ' @ ' . $channel->{server}->{tag}); }
+
+%9See also:%9 LOAD, SAVE, UNLOAD
+
diff --git a/docs/help/in/scrollback.in b/docs/help/in/scrollback.in
new file mode 100644
index 0000000..5f59d84
--- /dev/null
+++ b/docs/help/in/scrollback.in
@@ -0,0 +1,37 @@
+
+%9Syntax:%9
+
+@SYNTAX:scrollback@
+
+%9Parameters:%9
+
+ CLEAR: Clears the screen and the buffer of all text.
+ LEVELCLEAR: Clears the screen and the buffer of text matching the given
+ levels.
+ GOTO: Go to the given position.
+ HOME: Go to the start of the buffer.
+ END: Go to the end of the buffer.
+
+ -all: Applies to all windows instead of only the active one.
+ -level: The levels, separated by a comma, to match.
+
+ The line number, timestamp to jump to or the window reference number to
+ clear.
+
+%9Description:%9
+
+ Manipulate the text in the window to go to a to the given line number, or
+ clear the buffers.
+
+ The timestamp format is format is '[dd[.mm] | -<days ago>] hh:mi[:ss]'.
+
+%9Examples:%9
+
+ /SCROLLBACK CLEAR
+ /SCROLLBACK LEVELCLEAR -level NOTICES
+ /SCROLLBACK GOTO 100
+ /SCROLLBACK HOME
+ /SCROLLBACK END
+
+%9See also:%9 CLEAR, WINDOW
+
diff --git a/docs/help/in/server.in b/docs/help/in/server.in
new file mode 100644
index 0000000..84b5ad7
--- /dev/null
+++ b/docs/help/in/server.in
@@ -0,0 +1,78 @@
+
+%9Syntax:%9
+
+@SYNTAX:server@
+
+%9Parameters:%9
+
+ LIST: Displays the list of servers you have configured.
+ CONNECT: Connects to the given server.
+ ADD: Adds a server to your configuration.
+ MODIFY: Modifies a server in your configuration.
+ REMOVE: Removes a server from your configuration.
+ PURGE: Purges the commands queued to be sent to the server.
+
+ -!: Doesn't autojoin the channels.
+ -4: Connects using IPv4.
+ -6: Connects using IPv6.
+ -tls: Connects using TLS encryption.
+ -notls: Connect without TLS encrption.
+ -tls_cert: The TLS client certificate file.
+ -tls_pkey: The TLS client private key, if not included in the
+ certificate file.
+ -tls_pass: The password for the TLS client private key or certificate.
+ -tls_verify: Verifies the TLS certificate of the server.
+ -notls_verify: Doesn't verify the TLS certificate of the server.
+ -tls_cafile: The file with the list of CA certificates.
+ -tls_capath: The directory which contains the CA certificates.
+ -tls_ciphers: TLS cipher suite preference lists.
+ -tls_pinned_cert: Pinned x509 certificate fingerprint.
+ -tls_pinned_pubkey: Pinned public key fingerprint.
+ -auto: Automatically connects to the server on startup.
+ -noauto: Doesn't connect to the server on startup.
+ -cap: Enable CAPREQ for server.
+ -nocap: Disable CAPREQ for server.
+ -network: The network the server belongs to.
+ -host: The hostname you would like to connect from.
+ -cmdspeed: Specifies the minimum amount of time, expressed in
+ milliseconds, that the client must wait before sending
+ additional commands to the server.
+ -cmdmax: Specifies the maximum number of commands to perform
+ before starting the internal flood protection.
+ -port: Specifies the port to connect to the server.
+ -noproxy: Ignores the global proxy configuration.
+ -rawlog: Immediately open rawlog after connecting.
+ -noautosendcmd: Doesn't execute autosendcmd.
+
+ The server, port and network to add, modify or remove; if no argument is
+ given, the list of servers you are connected to will be returned.
+
+%9Description:%9
+
+ Displays, adds, modifies or removes the network configuration of IRC
+ servers.
+
+ When using the ADD parameter on a server that already exists, the
+ configuration will be merged with each other.
+
+ When using the CONNECT parameter, it will connect to the specified
+ server; the server in the active window will be disconnected
+ unless you prepend the server with the '+' character.
+
+ Specify '-' as password to remove a server password
+
+%9Examples:%9
+
+ /SERVER
+ /SERVER CONNECT irc.libera.chat
+ /SERVER CONNECT +irc.libera.chat
+ /SERVER ADD -network liberachat -noautosendcmd irc.libera.chat
+ /SERVER ADD -! -auto -host staff.irssi.org -4 -network liberachat -noproxy irc.libera.chat 6667
+ /SERVER MODIFY -network liberachat -noauto irc.libera.chat
+ /SERVER MODIFY -network liberachat irc.libera.chat 6697 -
+ /SERVER REMOVE irc.libera.chat 6667 liberachat
+ /SERVER PURGE
+ /SERVER PURGE irc.libera.chat
+
+%9See also:%9 CHANNEL, CONNECT, DISCONNECT, NETWORK, RECONNECT, RMRECONNS
+
diff --git a/docs/help/in/servlist.in b/docs/help/in/servlist.in
new file mode 100644
index 0000000..0a0d025
--- /dev/null
+++ b/docs/help/in/servlist.in
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+@SYNTAX:servlist@
+
+%9Parameters:%9
+
+ <mask> limits the output to the services which names matches
+ the mask.
+ <type> limits the output to the services of the specified type.
+
+%9Description:%9
+
+ List the network services currently present on the
+ IRC network.
+
+%9Examples:%9
+
+ /SERVLIST *@javairc.*
+ /SERVLIST * 0xD000
+
+%9See also:%9 SQUERY
+
diff --git a/docs/help/in/set.in b/docs/help/in/set.in
new file mode 100644
index 0000000..097ace7
--- /dev/null
+++ b/docs/help/in/set.in
@@ -0,0 +1,35 @@
+
+%9Syntax:%9
+
+@SYNTAX:set@
+
+%9Parameters:%9
+
+ -clear: Removes the setting's value from the configuration.
+ -default: Restore the setting to its default value.
+ -section: Print settings under the specified section
+
+ The setting and the value; if no value is given, the list of settings that
+ matched will be returned. If no arguments are given, all the settings will
+ be displayed.
+
+%9Description:%9
+
+ Modifies the value of a setting; boolean settings accept only ON, OFF and
+ TOGGLE.
+
+ Please remember that you need to use the SAVE command to store the changes
+ into your configuration.
+
+%9Examples:%9
+
+ /SET
+ /SET nick mike
+ /SET -clear nick
+ /SET log_timestamp %%H:%%H:%%S
+ /SET -default log_timestamp
+ /SET -section lookandfeel
+ /SET close
+
+%9See also:%9 SAVE, TOGGLE
+
diff --git a/docs/help/in/silence.in b/docs/help/in/silence.in
new file mode 100644
index 0000000..cc3c62d
--- /dev/null
+++ b/docs/help/in/silence.in
@@ -0,0 +1,29 @@
+
+%9Syntax:%9
+
+@SYNTAX:silence@
+
+%9Parameters:%9
+
+ The nickname or hostname to silence; you must prepend it by the '+' or '-'
+ character to indicate whether the entry should be added or removed.
+
+ If no arguments are given, the list of silence entries will be displayed.
+
+%9Description:%9
+
+ Manages the server side ignore list; users or hostnames that match an entry
+ on the list are not able to send you any messages or invites.
+
+ This command does not work on all IRC networks.
+
+%9Examples:%9
+
+ /SILENCE
+ /SILENCE +mike
+ /SILENCE -mike
+ /SILENCE +*!*@*.irssi.org
+ /SILENCE -*!*@*.irssi.org
+
+%9See also:%9 ACCEPT, IGNORE
+
diff --git a/docs/help/in/squery.in b/docs/help/in/squery.in
new file mode 100644
index 0000000..59ee800
--- /dev/null
+++ b/docs/help/in/squery.in
@@ -0,0 +1,16 @@
+
+%9Syntax:%9
+
+@SYNTAX:squery@
+
+%9Parameters:%9
+
+ <service> - Service nickname or full hostmask of service to query.
+ <message> - Message to send to the service.
+
+%9Description:%9
+
+ /SQUERY sends a query to the specified service.
+
+%9See also:%9 SERVLIST, LIST, MSG
+
diff --git a/docs/help/in/squit.in b/docs/help/in/squit.in
new file mode 100644
index 0000000..b45a308
--- /dev/null
+++ b/docs/help/in/squit.in
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+@SYNTAX:squit@
+
+%9Parameters:%9
+
+ The server and the disconnect reason.
+
+%9Description:%9
+
+ Disconnects a server from the IRC network; this command is restricted to
+ IRC operators.
+
+%9Examples:%9
+
+ /SQUIT ircsource.irssi.org I'm fixing a desync!
+
+%9See also:%9 DIE, OPER, SCONNECT
+
diff --git a/docs/help/in/stats.in b/docs/help/in/stats.in
new file mode 100644
index 0000000..80f1670
--- /dev/null
+++ b/docs/help/in/stats.in
@@ -0,0 +1,43 @@
+
+%9Syntax:%9
+
+@SYNTAX:stats@
+
+%9Parameters:%9
+
+ The statistic identifier and the remote server; if no remote server is
+ given, the active server will be used.
+
+%9Description:%9
+
+ Displays statistics from the IRC server; some statistics require you to have
+ IRC operators privileges and might differ between IRC networks.
+
+ Common statistics:
+
+ C: Displays the servers the server may connect to.
+ H: Displays hub server the server may connect to.
+ K: Displays the permanent blacklist of hostnames which are prohibited
+ from connecting to the server.
+ k: Displays the temporary blacklist of hostname which are prohibited
+ from connecting to the server.
+ I: Displays the list of hostnames which are allowed to connect to the
+ server.
+ L: Displays the list of connected users and servers.
+ M: Displays the list of commands and how many times they have been
+ issued.
+ O: Displays the list of hostnames and users which are allowed to
+ become IRC operators.
+ P: Displays the ports the server is listening on.
+ p: Displays the IRC operators and their idle time.
+ u: Displays the uptime of the server.
+ Y: Displays the list of connection groups users are placed into.
+ ?: Displays information about the utilized bandwidth.
+
+%9Examples:%9
+
+ /STATS p
+ /STATS I ircsource.irssi.org
+
+%9See also:%9 MOTD, OPER
+
diff --git a/docs/help/in/statusbar.in b/docs/help/in/statusbar.in
new file mode 100644
index 0000000..ac57ca5
--- /dev/null
+++ b/docs/help/in/statusbar.in
@@ -0,0 +1,65 @@
+
+%9Syntax:%9
+
+@SYNTAX:statusbar@
+
+%9Parameters:%9
+
+ ADD: Adds a statusbar to the list of statusbars.
+ MODIFY: Modifies the configuration of a statusbar.
+ RESET: Restores the default statusbar configuration.
+ ADDITEM: Adds an item to the specified statusbar. It can be set to
+ appear before/after another item and left/right aligned
+ on the screen.
+ MODIFYITEM: Changes an item position inside a bar.
+ REMOVEITEM: Removes an item from the specified statusbar.
+ INFO: List the current details and items of the specified
+ statusbar.
+
+ -disable: Removes a statusbar from the list.
+ -type: Sets the type of statusbar, for each split window or only
+ once at the root (very top or bottom) of the screen.
+ -placement: Sets the placement of the statusbar, either at the top or
+ the bottom of the screen or split window.
+ -position: Sets the position of the statusbar. Represented as a
+ number, with smaller numbers implying a position further
+ to the top.
+ -visible: Sets the visibility of the statusbar. If set to always,
+ it is visible on all split windows, otherwise if set to
+ inactive or active then it is only visible on inactive or
+ active split windows, respectively.
+ -before: This item is added before the other item.
+ -after: This item is added after the other item.
+ -priority: When the statusbar items overflow, the item with the
+ lowest priority is removed or truncated first.
+ Priority can be negative, in which case it'll have to be
+ quoted (e.g. -priority "-1")
+ -alignment: Display the item on the right side.
+
+ Where statusbar refers to the name of the statusbar; if no
+ argument is given, or `LIST` is given, the entire list of
+ statusbars along with a quick overview of their properties will be
+ displayed.
+
+%9Description:%9
+
+ Allows adjustment of the attributes and items of a statusbar, as well
+ as where it is located and whether or not it is currently visible.
+
+%9Examples:%9
+
+ /STATUSBAR
+ /STATUSBAR INFO window
+ /STATUSBAR REMOVEITEM time window
+ /STATUSBAR ADDITEM time window
+ /STATUSBAR RESET window
+ /STATUSBAR MODIFY -disable topic
+ /STATUSBAR MODIFY -nodisable topic
+
+%9Remarks:%9
+
+ Statusbar syntax was changed in Irssi 1.2. The old syntax is still
+ accepted for backward compatibility, but no longer documented.
+
+%9See also:%9 WINDOW
+
diff --git a/docs/help/in/time.in b/docs/help/in/time.in
new file mode 100644
index 0000000..90dd4ac
--- /dev/null
+++ b/docs/help/in/time.in
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+@SYNTAX:time@
+
+%9Parameters:%9
+
+ The channel or the nickname; if no argument is given, the active server
+ will be used.
+
+%9Description:%9
+
+ Displays the local time of a server or the server the target user is
+ connected to.
+
+%9Examples:%9
+
+ /TIME
+ /TIME mike
+ /TIME ircsource.irssi.org
+
+%9See also:%9 MAP, TRACE, WHOIS
+
diff --git a/docs/help/in/toggle.in b/docs/help/in/toggle.in
new file mode 100644
index 0000000..f87a646
--- /dev/null
+++ b/docs/help/in/toggle.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:toggle@
+
+%9Parameters:%9
+
+ The setting to modify and the new value; if no value is given, its opposite
+ will be used.
+
+%9Description:%9
+
+ Modifies a setting to its counter value; you can also give ON or OFF as a
+ value.
+
+%9Examples:%9
+
+ /TOGGLE resolve_prefer_ipv6
+ /TOGGLE channels_rejoin_unavailable ON
+
+%9See also:%9 SET
+
diff --git a/docs/help/in/topic.in b/docs/help/in/topic.in
new file mode 100644
index 0000000..68a60cc
--- /dev/null
+++ b/docs/help/in/topic.in
@@ -0,0 +1,25 @@
+
+%9Syntax:%9
+
+@SYNTAX:topic@
+
+%9Parameters:%9
+
+ -delete: Removes the topic.
+
+ The channel and topic; if no channel is given, the active channel will be
+ used. If no argument is given, the current topic will be displayed.
+
+%9Description:%9
+
+ Displays or modifies the topic of a channel.
+
+%9Examples:%9
+
+ /TOPIC
+ /TOPIC The robots are taking over!
+ /TOPIC -delete #irssi
+ /TOPIC #shakespeare /bb|[^b]{2}/
+
+%9See also:%9 CHANNEL, DEOP, DEVOICE, JOIN, OP, VOICE
+
diff --git a/docs/help/in/trace.in b/docs/help/in/trace.in
new file mode 100644
index 0000000..f3192f1
--- /dev/null
+++ b/docs/help/in/trace.in
@@ -0,0 +1,25 @@
+
+%9Syntax:%9
+
+@SYNTAX:trace@
+
+%9Parameters:%9
+
+ The channel or the nickname; if no argument is given, the active server
+ will be used.
+
+%9Description:%9
+
+ Displays the list of servers and users connects to a server, or a list of
+ the servers between yourself and the target user.
+
+ This command is usually restricted to IRC operators.
+
+%9Examples:%9
+
+ /TRACE
+ /TRACE mike
+ /TRACE ircsource.irssi.org
+
+%9See also:%9 MAP, TIME, WHOIS
+
diff --git a/docs/help/in/ts.in b/docs/help/in/ts.in
new file mode 100644
index 0000000..98861bb
--- /dev/null
+++ b/docs/help/in/ts.in
@@ -0,0 +1,15 @@
+
+%9Syntax:%9
+
+@SYNTAX:ts@
+
+%9Description:%9
+
+ Displays a list of the channels you are on and their topics.
+
+%9Examples:%9
+
+ /TS
+
+%9See also:%9 JOIN, TOPIC
+
diff --git a/docs/help/in/unalias.in b/docs/help/in/unalias.in
new file mode 100644
index 0000000..d610c3a
--- /dev/null
+++ b/docs/help/in/unalias.in
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+@SYNTAX:unalias@
+
+%9Parameters:%9
+
+ The name of the alias.
+
+%9Description:%9
+
+ Removes an alias.
+
+%9Examples:%9
+
+ /UNALIAS BAN
+ /UNALIAS K
+
+%9See also:%9 ALIAS
+
diff --git a/docs/help/in/unban.in b/docs/help/in/unban.in
new file mode 100644
index 0000000..2c0c8a5
--- /dev/null
+++ b/docs/help/in/unban.in
@@ -0,0 +1,45 @@
+
+%9Syntax:%9
+
+@SYNTAX:unban@
+
+%9Parameters:%9
+
+ -normal: Uses the *!*user@*.domain.tld format.
+ -user: Uses the *!*user@* format.
+ -host: Uses the *!*@host.domain.tld format.
+ -domain: Uses the *!*@*.domain.tld format.
+ -custom: Uses the custom format.
+ -first: Removes the first ban from the list.
+ -last: Removes the last ban from the list.
+
+ A channel and the nicknames, hostnames or ban identifier to unban; if no
+ channel is given, the active channel will be used.
+
+ If no ban format parameter is given, the value of the ban_type setting will
+ be used to generate the hostmask to ban.
+
+%9Description:%9
+
+ Removes one or more bans from a channel.
+
+%9Configuring the custom format:%9
+
+ You must set the custom ban_type to the format you would like to use. For
+ example, if you set the custom ban_type to 'nick domain', it will generate
+ a ban based on the nick!*@*.domain.tld format.
+
+%9Examples:%9
+
+ /UNBAN mike
+ /UNBAN -host bob
+ /UNBAN *!*@*.irssi.org
+ /UNBAN *!*@*.users.irssi.org *!*@*.staff.irssi.org
+ /UNBAN -first
+ /UNBAN 5
+
+ /SET ban_type custom nick domain
+ /SET ban_type custom user host
+
+%9See also:%9 BAN, DEOP, KICKBAN, KNOCKOUT, OP
+
diff --git a/docs/help/in/unignore.in b/docs/help/in/unignore.in
new file mode 100644
index 0000000..a353850
--- /dev/null
+++ b/docs/help/in/unignore.in
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+@SYNTAX:unignore@
+
+%9Parameters:%9
+
+ The ignore identifier or pattern to remove.
+
+%9Description:%9
+
+ Removes an entry from the ignore list.
+
+%9Examples:%9
+
+ /UNIGNORE 5
+ /UNIGNORE mike
+
+%9See also:%9 ACCEPT, IGNORE, SILENCE
+
diff --git a/docs/help/in/unload.in b/docs/help/in/unload.in
new file mode 100644
index 0000000..b804e09
--- /dev/null
+++ b/docs/help/in/unload.in
@@ -0,0 +1,19 @@
+
+%9Syntax:%9
+
+@SYNTAX:unload@
+
+%9Parameters:%9
+
+ The name of the module to unload.
+
+%9Description:%9
+
+ Removes a module from the memory.
+
+%9Examples:%9
+
+ /UNLOAD fish
+
+%9See also:%9 LOAD, SCRIPT
+
diff --git a/docs/help/in/unnotify.in b/docs/help/in/unnotify.in
new file mode 100644
index 0000000..1dfbb40
--- /dev/null
+++ b/docs/help/in/unnotify.in
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+@SYNTAX:unnotify@
+
+%9Parameters:%9
+
+ The notify pattern to remove.
+
+%9Description:%9
+
+ Removes an entry from the notify list.
+
+%9Examples:%9
+
+ /UNNOTIFY bob
+ /UNNOTIFY *!*@staff.irssi.org
+
+%9See also:%9 AWAY, HILIGHT, NOTIFY
+
diff --git a/docs/help/in/unquery.in b/docs/help/in/unquery.in
new file mode 100644
index 0000000..78f52b1
--- /dev/null
+++ b/docs/help/in/unquery.in
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+@SYNTAX:unquery@
+
+%9Parameters:%9
+
+ The nickname to close the query for; if no argument is given, the active
+ query will be used.
+
+%9Description:%9
+
+ Closes a query window for a nickname.
+
+%9Examples:%9
+
+ /UNQUERY
+ /UNQUERY mike
+
+%9See also:%9 MSG, QUERY, WINDOW
+
diff --git a/docs/help/in/unsilence.in b/docs/help/in/unsilence.in
new file mode 100644
index 0000000..1e6d226
--- /dev/null
+++ b/docs/help/in/unsilence.in
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+@SYNTAX:unsilence@
+
+%9Parameters:%9
+
+ The silence pattern to remove.
+
+%9Description:%9
+
+ Removes an entry from the silence list. This command does not work on all
+ IRC networks.
+
+%9Examples:%9
+
+ /UNSILENCE mike
+ /UNSILENCE *!*@*.irssi.org
+
+%9See also:%9 ACCEPT, IGNORE, SILENCE
+
diff --git a/docs/help/in/upgrade.in b/docs/help/in/upgrade.in
new file mode 100644
index 0000000..e182f7e
--- /dev/null
+++ b/docs/help/in/upgrade.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:upgrade@
+
+%9Parameters:%9
+
+ The location of the new binary; if no arguments are given, the current
+ binary file will be used.
+
+%9Description:%9
+
+ Upgrades to a new version without disconnecting from non-SSL servers; please
+ bear in mind that it does not download or compile a new version.
+
+%9Examples:%9
+
+ /UPGRADE
+ /UPGRADE /home/mike/irssi-dev/bin/irssi
+
+%9See also:%9 CONNECT, DISCONNECT, HELP
+
diff --git a/docs/help/in/uptime.in b/docs/help/in/uptime.in
new file mode 100644
index 0000000..7a2924e
--- /dev/null
+++ b/docs/help/in/uptime.in
@@ -0,0 +1,15 @@
+
+%9Syntax:%9
+
+@SYNTAX:uptime@
+
+%9Description:%9
+
+ Displays how long Irssi has been running.
+
+%9Examples:%9
+
+ /UPTIME
+
+%9See also:%9 CONNECT, EXIT
+
diff --git a/docs/help/in/userhost.in b/docs/help/in/userhost.in
new file mode 100644
index 0000000..4893649
--- /dev/null
+++ b/docs/help/in/userhost.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:userhost@
+
+%9Parameters:%9
+
+ One or more nicknames separated by space.
+
+%9Description:%9
+
+ Displays the user@host for the given nicknames; some common added attributes
+ are '*' to identify an IRC operator, '-' and '+' to indicate whether the
+ nickname is AWAY or available.
+
+%9Examples:%9
+
+ /USERHOST mike
+ /USERHOST bob sarah
+
+%9See also:%9 WHOIS
+
diff --git a/docs/help/in/ver.in b/docs/help/in/ver.in
new file mode 100644
index 0000000..1e1afcc
--- /dev/null
+++ b/docs/help/in/ver.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:ver@
+
+%9Parameters:%9
+
+ A nickname, channel or the wildcard character '*'.
+
+%9Description:%9
+
+ Send a CTCP VERION request to the target nickname, channel or to all the
+ users on the channel.
+
+%9Examples:%9
+
+ /VER *
+ /VER #irssi
+ /VER mike
+
+%9See also:%9 CTCP
+
diff --git a/docs/help/in/version.in b/docs/help/in/version.in
new file mode 100644
index 0000000..98891ca
--- /dev/null
+++ b/docs/help/in/version.in
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+@SYNTAX:version@
+
+%9Parameters:%9
+
+ A nickname or server; if no argument is given, the active server will be
+ used.
+
+%9Description:%9
+
+ Displays the version and compatibility parameters of the given server, or
+ for the server the target nickname is on.
+
+%9Examples:%9
+
+ /VERSION mike
+ /VERSION ircsource.irssi.org
+
+%9See also:%9 ADMIN, STATS
+
diff --git a/docs/help/in/voice.in b/docs/help/in/voice.in
new file mode 100644
index 0000000..33d1a37
--- /dev/null
+++ b/docs/help/in/voice.in
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+@SYNTAX:voice@
+
+%9Parameters:%9
+
+ A list of nicknames to voice.
+
+%9Description:%9
+
+ Grants the channel voice privileges to the given nicknames; you may use
+ the wildcard character '*' in a nickname.
+
+%9Examples:%9
+
+ /VOICE mike
+ /VOICE bob sarah
+ /VOICE jo*n
+ /VOICE *
+
+%9See also:%9 DEOP, DEVOICE, KICK, MODE, OP
+
diff --git a/docs/help/in/wait.in b/docs/help/in/wait.in
new file mode 100644
index 0000000..263b9fb
--- /dev/null
+++ b/docs/help/in/wait.in
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+@SYNTAX:wait@
+
+%9Parameters:%9
+
+ The amount of milliseconds.
+
+%9Description:%9
+
+ Waits the specified amount of milliseconds before sending the next command
+ to the server.
+
+%9Examples:%9
+
+ /WAIT 1000
+ /WAIT 5000
+
+%9See also:%9 ALIAS
+
diff --git a/docs/help/in/wall.in b/docs/help/in/wall.in
new file mode 100644
index 0000000..bf1fc12
--- /dev/null
+++ b/docs/help/in/wall.in
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+@SYNTAX:wall@
+
+%9Parameters:%9
+
+ The channel and the message; if no channel is given, the active channel
+ will be used.
+
+%9Description:%9
+
+ Sends a message to all channel operators. If the server doesn't support
+ WALLCHOPS or STATUSMSG it will send a notice to each channel operator
+ individually.
+
+%9Examples:%9
+
+ /WALL I'm off for today; take care! :)
+ /WALL #irssi I'm feeling supercalifragilisticexpialidocious today :D
+
+%9See also:%9 MSG, NOTICE
+
diff --git a/docs/help/in/wallops.in b/docs/help/in/wallops.in
new file mode 100644
index 0000000..dfc3f5d
--- /dev/null
+++ b/docs/help/in/wallops.in
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+@SYNTAX:wallops@
+
+%9Parameters:%9
+
+ The message to broadcast.
+
+%9Description:%9
+
+ Sends a network wide message to all the users which have the usermode 'w'
+ enabled; this command is restricted to IRC operators.
+
+%9Examples:%9
+
+ /WALLOPS Hi everybody!
+
+%9See also:%9 OPER, STATS
+
diff --git a/docs/help/in/who.in b/docs/help/in/who.in
new file mode 100644
index 0000000..d265fd2
--- /dev/null
+++ b/docs/help/in/who.in
@@ -0,0 +1,36 @@
+
+%9Syntax:%9
+
+@SYNTAX:who@
+
+%9Parameters:%9
+
+ The channel name or output filter; if no arguments are given, the current
+ channel will be used.
+
+%9Description:%9
+
+ Displays information about users in the specified channel. If you specify a
+ filter, all the users whose nick, userhost or realname matches the filter
+ will be returned.
+
+ If the channel is secret and you are not on it, you will not receive any
+ output.
+
+ Common flags:
+
+ H: The user is available.
+ G: The user is away.
+ *: The user is an IRC operator.
+ @: The user is a channel operator.
+ +: The user is a channel voice.
+
+%9Examples:%9
+
+ /WHO
+ /WHO #irssi
+ /WHO bob
+ /WHO sar*
+
+%9See also:%9 CHANNEL, NAMES, WHOIS
+
diff --git a/docs/help/in/whois.in b/docs/help/in/whois.in
new file mode 100644
index 0000000..b2801c5
--- /dev/null
+++ b/docs/help/in/whois.in
@@ -0,0 +1,30 @@
+
+%9Syntax:%9
+
+@SYNTAX:whois@
+
+%9Parameters:%9
+
+ -<server tag>: The server tag the target nickname is on.
+
+ The remote server to query and the nicknames; if no remote server is given,
+ the server you are connected to will be used. If no nickname is given, you
+ will query yourself.
+
+%9Description:%9
+
+ Displays information about users in the specified channel; you may give the
+ same nickname as the argument twice to also query the idle time.
+
+ If the nickname is not online, the WHOWAS command will be automatically
+ performed.
+
+%9Examples:%9
+
+ /WHOIS
+ /WHOIS mike
+ /WHOIS ircsource.irssi.org bob
+ /WHOIS sarah sarah
+
+%9See also:%9 CHANNEL, NAMES, WHO, WHOWAS
+
diff --git a/docs/help/in/whowas.in b/docs/help/in/whowas.in
new file mode 100644
index 0000000..3dec6d2
--- /dev/null
+++ b/docs/help/in/whowas.in
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+@SYNTAX:whowas@
+
+%9Parameters:%9
+
+ The nicknames, the maximum amount of results and the remote server. If no
+ arguments are given, your own nickname will be used. If no remote server is
+ given, the server you are connected to will be used.
+
+%9Description:%9
+
+ Displays historical user information.
+
+%9Examples:%9
+
+ /WHOWAS
+ /WHOWAS mike
+ /WHOWAS bob 10
+ /WHOWAS sarah 5 ircsource.irssi.org
+
+%9See also:%9 CHANNEL, NAMES, WHO, WHOIS
+
diff --git a/docs/help/in/window.in b/docs/help/in/window.in
new file mode 100644
index 0000000..2566668
--- /dev/null
+++ b/docs/help/in/window.in
@@ -0,0 +1,78 @@
+
+%9Syntax:%9
+
+@SYNTAX:window@
+
+%9Parameters:%9
+
+ LOG: %|Turn on or off logging of the active window, optionally specifying the log file to use.
+ LOGFILE: %|Sets the location of the log file to use for window logging without starting to log.
+ NEW: %|Creates a new hidden or split window.
+ CLOSE: %|Closes the current window, the specified one or all windows in the given range.
+ REFNUM: %|Go to the window with the given number.
+ GOTO: %|Go to the window with activity, with the given nickname, channel or with the specified number.
+ NEXT: %|Go to the next window numerically.
+ LAST: %|Go to the previously active window.
+ PREVIOUS: %|Go to the previous window numerically.
+ LEVEL: %|Changes the text levels to display in the window, or query the current level.
+ IMMORTAL: %|Modifies or queries the window mortality status. Immortal windows have an extra protection against WINDOW CLOSE.
+ SERVER: %|Change the active server of the window or the server stickyness. If the server is sticky, it cannot be cycled with next_window_item/previous_window_item
+ ITEM PREV: %|Make the previous item in this window active.
+ ITEM NEXT: %|Make the next item in this window active.
+ ITEM GOTO: %|Change to the query with the specified nickname, channel with the given name or window item number.
+ ITEM MOVE: %|Move the active window item to another window, or move the channel or query item specified by their name to the current window.
+ NUMBER: %|Change the active window number to the specified number, swapping the window already in that place if required. With -sticky, protect the window number from renumbering done by windows_auto_renumber. (To re-set the sticky attribute, use WINDOW NUMBER again without -sticky.)
+ NAME: %|Change or clear the window name. Window names must be unique.
+ HISTORY: %|Set or clear a specific named history to use for this window. All windows with the same named history will share a history.
+ MOVE PREV: %|Move the window to the place of the numerically previous window. At the first position, move the window to the end and renumber the consecutive block that it was part of.
+ MOVE NEXT: %|Move the window to the place of the numerically next window. At the last position, move the window to the first position and renumber the consecutive block at first position (if any)
+ MOVE FIRST: %|Move the window to the first position. Any windows inbetween are moved to their numerically next positions.
+ MOVE LAST: %|Move the window to the last position. Any windows inbetween are moved to their numerically previous positions.
+ MOVE: %|Move the window to the specified number or the first number that is in use when moving the window in the direction of the specified position. Any windows inbetween are shifted towards the old position of the window (unused positions remain empty)
+ LIST: %|List all the windows.
+ THEME: %|Applies or removes a per-window theme.
+ GROW: %|Increase the size of the active split window by the specified number of lines.
+ SHRINK: %|Decrease the size of the active split window by the specified number of lines.
+ SIZE: %|Set the current split window size to the specified number of lines.
+ BALANCE: %|Balance the heights of all split windows.
+ HIDE: %|Hides the current split window, or the split window specified by number or item name.
+ SHOW: %|Show the window specified by number or item name as a new split windows. It is made sticky when autostick_split_windows is turned on.
+ UP: %|Set the split window left or above the current one active. At the top, wraps to the bottom.
+ DOWN: %|Set the split window right or below the current one active. At the bottom, wraps left.
+ LEFT: %|Go to the previous window numerically that is part of the current sticky group (or not part of any sticky group).
+ RIGHT: %|Go to the next window numerically that is part of the current sticky group (or not part of any sticky group).
+ STICK: %|Make the currently active window sticky, or stick the window specified by number to the currently visible split window. Or turn off stickyness of the currently active window or the window specified by number.
+ HIDELEVEL: %|Changes the levels of text lines that should be hidden from view, or query the current hidden level.
+ MOVE LEFT: %|Move the window to the numerically previous location inside the current sticky group.
+ MOVE RIGHT: %|Move the window to the numerically next location inside the current sticky group.
+ MOVE UP: %|Move the current window to the sticky group of the previous split window. If no sticky group remains, the split window collapses.
+ MOVE DOWN: %|Move the current window to the sticky group of the next split window. If no sticky group remains, the split window collapses.
+
+ -right: %|Makes the command work on the width instead of height, or create the split window to the right instead of top.
+ -directional: %|Set the split window in the given direction to the current one active, or move the current window to the sticky group of the split window in the given direction. (If no sticky group remains, the split window collapses.)
+
+ %|Add the required arguments for the given command. Without arguments, the details (size, immortality, levels, server, name and sticky group) of the currently active window are displayed. If used with a number as argument, same as WINDOW REFNUM.
+
+ %|LEVEL and HIDELEVEL modify the currently set level. Without arguments, the current level is displayed. Levels listed starting with `+' are added to the current levels. Levels listed starting with `-' are removed from the current levels. To clear the levels, start the new level setting with `NONE'. Levels listed starting with `^' are either removed or added from the current setting, depending on whether they were previously set or not (since Irssi 1.4.4). Levels listed as is are also added to the current levels. Afterwards, the new level setting is displayed.
+
+%9Description:%9
+
+ Manipulates the window layout and positioning attributes.
+
+%9Examples:%9
+
+ /WINDOW CLOSE
+ /WINDOW ITEM MOVE 10
+ /WINDOW GOTO 15
+ /WINDOW GOTO ACTIVE
+ /WINDOW GOTO mike
+ /WINDOW GOTO #irssi
+ /WINDOW NEW HIDDEN
+ /WINDOW LOG OFF
+ /WINDOW LOG ON ~/logs/debug.log
+ /WINDOW LEVEL -ALL +NOTICES
+ /WINDOW HIDELEVEL ^JOINS ^PARTS ^QUITS
+ /WINDOW LOGFILE ~/logs/notices.log
+
+%9See also:%9 JOIN, LEVELS, LOG, QUERY
+
diff --git a/docs/help/info b/docs/help/info
new file mode 100644
index 0000000..b20694d
--- /dev/null
+++ b/docs/help/info
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+INFO %|[<server>]
+
+%9Parameters:%9
+
+ The server to display the information for; if no argument is given, the
+ active server will be used.
+
+%9Description:%9
+
+ Displays information about the IRC server software.
+
+%9Examples:%9
+
+ /INFO
+ /INFO irc.libera.chat
+
+%9See also:%9 ADMIN
+
diff --git a/docs/help/invite b/docs/help/invite
new file mode 100644
index 0000000..3c7a628
--- /dev/null
+++ b/docs/help/invite
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+INVITE %|<nick> [<channel>]
+
+%9Parameters:%9
+
+ The nickname to invite and the channel to invite him or her to; if no
+ channel is given, the active channel will be used.
+
+%9Description:%9
+
+ Invites the specified nick to a channel.
+
+%9Examples:%9
+
+ /INVITE mike
+ /INVITE bob #irssi
+
+%9See also:%9 MODE, WHOIS
+
diff --git a/docs/help/irssiproxy b/docs/help/irssiproxy
new file mode 100644
index 0000000..38ec89a
--- /dev/null
+++ b/docs/help/irssiproxy
@@ -0,0 +1,15 @@
+
+IRSSIPROXY STATUS%|
+IRSSIPROXY
+
+%9Description:%9
+
+ Displays the list of clients connected to irssiproxy.
+
+%9Examples:%9
+
+ /IRSSIPROXY
+ /IRSSIPROXY STATUS
+
+%9See also:%9 LOAD PROXY, SET irssiproxy
+
diff --git a/docs/help/ison b/docs/help/ison
new file mode 100644
index 0000000..bd445bc
--- /dev/null
+++ b/docs/help/ison
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+ISON %|<nicks>
+
+%9Parameters:%9
+
+ The nicknames, separated by space, to check.
+
+%9Description:%9
+
+ Displays whether the specified nicknames are online.
+
+%9Examples:%9
+
+ /ISON mike
+ /ISON sarah bob
+
+%9See also:%9 NOTIFY, WHOWAS, WHOIS
+
diff --git a/docs/help/join b/docs/help/join
new file mode 100644
index 0000000..65f6038
--- /dev/null
+++ b/docs/help/join
@@ -0,0 +1,26 @@
+
+%9Syntax:%9
+
+JOIN %|[-window] [-invite] [-<server tag>] <channels> [<keys>]
+
+%9Parameters:%9
+
+ -window Joins a channel in the active window.
+ -invite Joins the channel you were last invited to.
+ -<server tag> The server tag on which you want to join the channel.
+
+ The channel names, separated by a comma, to join and the channel key.
+
+%9Description:%9
+
+ Joins the given channels.
+
+%9Examples:%9
+
+ /JOIN #irssi
+ /JOIN #basementcat secret_lair
+ /JOIN -invite
+ /JOIN -liberachat #github,#libera,#irssi
+
+%9See also:%9 KICK, PART
+
diff --git a/docs/help/kick b/docs/help/kick
new file mode 100644
index 0000000..0b882cf
--- /dev/null
+++ b/docs/help/kick
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+KICK %|[<channel>] <nicks> [<reason>]
+
+%9Parameters:%9
+
+ The channel and the nicknames, separated by a comma, to kick from the
+ channel and the reason thereof; if no channel is given, the active channel
+ will be used.
+
+%9Description:%9
+
+ Removes the given nicknames from the specified channel; this command is
+ typically used to remove troublemakers, flooders or people otherwise making
+ a nuisance of themselves.
+
+%9Examples:%9
+
+ /KICK mike Please... chill down!
+ /KICK #irssi bob,sarah Stop flooding!
+
+%9See also:%9 BAN, KICKBAN, KNOCKOUT
+
diff --git a/docs/help/kickban b/docs/help/kickban
new file mode 100644
index 0000000..96c5161
--- /dev/null
+++ b/docs/help/kickban
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+KICKBAN %|[<channel>] <nicks> <reason>
+
+%9Parameters:%9
+
+ The channel and the nicknames, separated by a comma, to kick and ban from
+ the channel and the reason thereof; if no channel is given, the active
+ channel will be used.
+
+%9Description:%9
+
+ Removes and then bans the given nicknames from the specified channel.
+
+%9Examples:%9
+
+ /KICKBAN mike Please... chill down!
+ /KICKBAN #irssi bob,sarah You guys broke the rules for the last time.
+
+%9See also:%9 BAN, KICK, KNOCKOUT
+
diff --git a/docs/help/kill b/docs/help/kill
new file mode 100644
index 0000000..340c9ca
--- /dev/null
+++ b/docs/help/kill
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+KILL %|<nick> <reason>
+
+%9Parameters:%9
+
+ The nickname to remove from the network and the reason thereof.
+
+%9Description:%9
+
+ Terminates a nickname's connection from the network; this command is
+ reserved for IRC operators.
+
+ You should not use this command for personal vendettas or for trolling;
+ these practices are generally frowned upon.
+
+%9Examples:%9
+
+ /KILL mike Get off my lawn
+ /KILL bob Stop breaking the network rules!
+
+%9See also:%9 DIE, OPER, WALLOPS
+
diff --git a/docs/help/knock b/docs/help/knock
new file mode 100644
index 0000000..b861f4e
--- /dev/null
+++ b/docs/help/knock
@@ -0,0 +1,30 @@
+
+%9Syntax:%9
+
+KNOCK %|<channel>
+
+%9Parameters:%9
+
+ The channel you wish to get invited to.
+
+%9Description:%9
+
+ Sends an invitation request to the channel operators of the target channel;
+ this command may not work on all IRC servers.
+
+ The following conditions must be met:
+
+ * You are not banned from the channel.
+ * The channel is not private.
+ * You may not be already in the channel.
+ * The channel must be invite only, have a key or has exceeded its user
+ limit.
+
+%9Examples:%9
+
+ /KNOCK #irssi
+ /KNOCK #libera
+ /KNOCK #github
+
+%9See also:%9 INVITE, JOIN
+
diff --git a/docs/help/knockout b/docs/help/knockout
new file mode 100644
index 0000000..2aed4e0
--- /dev/null
+++ b/docs/help/knockout
@@ -0,0 +1,26 @@
+
+%9Syntax:%9
+
+KNOCKOUT %|[<time>] <nicks> <reason>
+
+%9Parameters:%9
+
+ The time, expressed in seconds, the nicknames, separated by a comma, and the
+ reason thereof; if no time is provided, the ban will be lifted after 5
+ minutes.
+
+%9Description:%9
+
+ Removes and then bans the given nicknames from the active channel; the ban
+ will be automatically lifted after the specified time.
+
+ The ban will not be lifted if you leave the channel or disconnect from the
+ network.
+
+%9Examples:%9
+
+ /KNOCKOUT 3600 mike Your connection is unstable.
+ /KNOCKOUT bob,sarah Chill down a bit.
+
+%9See also:%9 BAN, KICK, KICKBAN
+
diff --git a/docs/help/lastlog b/docs/help/lastlog
new file mode 100644
index 0000000..6e8a6ec
--- /dev/null
+++ b/docs/help/lastlog
@@ -0,0 +1,43 @@
+
+%9Syntax:%9
+
+LASTLOG %|[-] [-file <filename>] [-window <ref#|name>] [-new | -away] [-<level> -<level...>] [-clear] [-count] [-case] [-date] [-regexp | -word] [-before [<#>]] [-after [<#>]] [-<# before+after>] [<pattern>] [<count> [<start>]]
+
+%9Parameters:%9
+
+ -: Doesn't print the 'Lastlog:' and 'End of Lastlog' messages.
+ -file: Output the lastlog to a file instead of the active window.
+ -window: Specifies the window to check.
+ -new: Only displays results since the previous lastlog.
+ -away: Only displays results since you previous away status.
+ -<level>: Specifies the levels to check (e.g. -joins -quits -hilight)
+ -clear: Removes the previous results from the active window.
+ -count: Displays how many lines match.
+ -case: Performs a case-sensitive matching.
+ -date: Prepends each row with the message's date
+ -regexp: The given text pattern is a regular expression.
+ -word: The text must match full words.
+ -force: Forces to display the lastlog, even if it exceeds 1000 lines.
+ -after: Include this many lines of content after the match.
+ -before: Include this many lines of content before the match.
+ -<#>: Include this many lines of content around the match.
+ <count>: Display a maximum number of `count' lines.
+ <start>: Skip the last `start' lines.
+
+ The pattern to search for and the maximum of lines to display; if no
+ parameter is given, the entire window buffer will be displayed.
+
+%9Description:%9
+
+ Searches the active window for a pattern and displays the result.
+
+%9Examples:%9
+
+ /LASTLOG holiday
+ /LASTLOG 'is on vacation' 10
+ /LASTLOG -force -file ~/mike.log 'mike'
+ /LASTLOG -hilight
+ /LASTLOG -5 searchterm
+
+%9See also:%9 HILIGHT, SCROLLBACK
+
diff --git a/docs/help/layout b/docs/help/layout
new file mode 100644
index 0000000..477fdc4
--- /dev/null
+++ b/docs/help/layout
@@ -0,0 +1,29 @@
+
+%9Syntax:%9
+
+LAYOUT SAVE%|
+LAYOUT RESET
+
+%9Parameters:%9
+
+ SAVE: Saves your layout to the configuration.
+ RESET: Removes the saved layout from the configuration.
+
+%9Description:%9
+
+ Saves the layout of your window configuration; the next time you connect
+ to the server, you will join the channels in the same window as before.
+
+ This method enables you to keep the same window layout when you start Irssi
+ the next time.
+
+ You will need to use the SAVE command to confirm and commit the changes
+ into the configuration file.
+
+%9Examples:%9
+
+ /LAYOUT SAVE
+ /LAYOUT RESET
+
+%9See also:%9 SAVE, WINDOW
+
diff --git a/docs/help/levels b/docs/help/levels
new file mode 100644
index 0000000..b6eb9fb
--- /dev/null
+++ b/docs/help/levels
@@ -0,0 +1,42 @@
+
+%9Description:%9
+
+ These are the message levels that are used throughout Irssi; they describe
+ what kind of message is displayed.
+
+ These are the common levels you can use:
+
+ ACTIONS Actions by a nickname.
+ CLIENTCRAP Irssi's internal messages.
+ CLIENTERROR Irssi's internal error messages.
+ CLIENTNOTICE Irssi's internal notices.
+ CRAP Can be almost anything.
+ CTCPS CTCP messages.
+ DCC DCC protocol related messages.
+ DCCMSGS DCC chat messages.
+ INVITES An invite is received.
+ JOINS A nickname joins a channel.
+ KICKS A nickname gets kicked from a channel.
+ MODES A channel mode is modified.
+ MSGS Private messages.
+ NICKS A nickname changes to another nickname.
+ NOTICES Notices sent from a nickname.
+ PARTS A nickname leaves a channel.
+ PUBLIC Public messages in a channel.
+ QUITS A nickname disconnects from IRC.
+ SNOTES Notices sent from a server.
+ TOPICS A channel topic is modified.
+ WALLOPS A wallop is received.
+
+ These are the special levels you can use:
+
+ HILIGHT The text is highlighted.
+ NEVER Never ignores or logs the message.
+ HIDDEN Hides the message when window HIDELEVEL includes HIDDEN.
+ NO_ACT Doesn't trigger any activity in the statusbar.
+ NOHILIGHT The text is not highlighted.
+ Suppresses hilights when used with /ignore.
+
+ When using levels from Irssi scripts, you need to prepend the level with
+ 'MSGLEVEL_'; for example 'CRAP' becomes 'MSGLEVEL_CRAP'.
+
diff --git a/docs/help/links b/docs/help/links
new file mode 100644
index 0000000..fdcf9df
--- /dev/null
+++ b/docs/help/links
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+LINKS %|[[<server>] <mask>]
+
+%9Parameters:%9
+
+ The server to search on and the string to match on; if no arguments are
+ given, the list of links of the active server will be displayed.
+
+%9Description:%9
+
+ Displays the links between an IRC server and its connections.
+
+%9Examples:%9
+
+ /LINKS
+ /LINKS ircsource.irssi.org
+ /LINKS ircsource.irssi.org *.hub
+
+%9See also:%9 LUSERS, MAP
+
diff --git a/docs/help/list b/docs/help/list
new file mode 100644
index 0000000..cabd022
--- /dev/null
+++ b/docs/help/list
@@ -0,0 +1,38 @@
+
+%9Syntax:%9
+
+LIST %|[-yes] [<channel>]
+
+%9Parameters:%9
+
+ -yes: Confirms that you want to receive a large amount of data.
+
+ If the exact name of a channel is given, the only information about this
+ channel is requested; otherwise, a list of all channels will be displayed.
+
+%9Description:%9
+
+ Displays the channel names that match your request; requesting all channels
+ may cause the server to disconnect you for flooding.
+
+%9Examples:%9
+
+ /LIST
+ /LIST -yes
+ /LIST #ubuntu
+ /LIST #*ubuntu*,>1
+
+%9Remarks:%9
+
+ Not all networks support server-side filtering. Some provide a network
+ service or service bot instead; on IRCnet, you may use the List service:
+
+ /SQUERY Alis HELP
+
+ Other networks with service bots (like ChanServ) may also provide a list
+ service bot (confirm with /WHOIS ALIS):
+
+ /MSG Alis HELP
+
+%9See also:%9 STATS, SQUERY, WHOIS
+
diff --git a/docs/help/load b/docs/help/load
new file mode 100644
index 0000000..9cdde01
--- /dev/null
+++ b/docs/help/load
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+LOAD %|[-silent] <module> [<submodule>]
+
+%9Parameters:%9
+
+ The name of the module and submodule to load.
+
+%9Description:%9
+
+ Loads a plugin; if the full path isn't given, it will attempt to load from
+ common directories in your installation path.
+
+ To load a perl script, you must use the SCRIPT command.
+
+%9Examples:%9
+
+ /LOAD fish
+ /LOAD ~/irssi-fish/libfish.so
+
+%9See also:%9 SCRIPT, UNLOAD
+
diff --git a/docs/help/log b/docs/help/log
new file mode 100644
index 0000000..f76ea30
--- /dev/null
+++ b/docs/help/log
@@ -0,0 +1,51 @@
+
+%9Syntax:%9
+
+LOG OPEN %|[-noopen] [-autoopen] [-window] [-<server tag>] [-targets <targets>] [-colors] <fname> [<levels>]
+LOG CLOSE %|<id>|<file>
+LOG START %|<id>|<file>
+LOG STOP %|<id>|<file>
+
+%9Parameters:%9
+
+ OPEN: Opens a log file.
+ CLOSE: Closes a log file.
+ START: Starts logging a log entry.
+ STOP: Stops logging a log entry.
+
+ -noopen: Saves the entry in the configuration, but doesn't actually
+ start logging.
+ -autoopen: Automatically opens the log at startup.
+ -window: Displays the output to the active window, or the window
+ specified in the targets parameter.
+ -<server tag>: The server tag the targets must be on.
+ -targets: Logs the specified nicknames or channels.
+ -colors: Also log the color codes of the messages.
+
+ The filename of the log and the levels to match; if no argument is given,
+ the list of open logs will be displayed.
+
+%9Description:%9
+
+ Opens a log file and stores the messages of the given targets into it; the
+ log files will be locked so multiple clients cannot log to the same file.
+
+ You may use any of the date formats to create a log rotation; we strongly
+ recommend you to enable autolog if you are interested in keeping logs.
+
+%9Examples:%9
+
+ /LOG OPEN -targets mike ~/irclogs/mike.log MSGS
+ /LOG OPEN -targets #irssi ~/irclogs/liberachat/irssi-%%Y-%%m-%%d
+ /LOG CLOSE ~/irclogs/liberachat/irssi-%%Y-%%m-%%d
+ /LOG STOP ~/irclogs/liberachat/irssi-%%Y-%%m-%%d
+ /LOG START ~/irclogs/liberachat/irssi-%%Y-%%m-%%d
+
+ /SET autolog ON
+
+%9References:%9
+
+ https://github.com/irssi/irssi/blob/master/docs/formats.txt
+
+%9See also:%9 SET LOG, WINDOW LOG
+
diff --git a/docs/help/lusers b/docs/help/lusers
new file mode 100644
index 0000000..5c94060
--- /dev/null
+++ b/docs/help/lusers
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+LUSERS %|[<server mask> [<remote server>]]
+
+%9Parameters:%9
+
+ The server to search on and the remote sever to search on; if no arguments
+ are given, the active server will be used.
+
+%9Description:%9
+
+ Displays the user statistics of the active or remote server.
+
+ The parameters to search on a remote server are no longer supported on most
+ IRC servers; we no longer provide examples for remote LUSERS to avoid all
+ confusion.
+
+%9Examples:%9
+
+ /LUSERS
+
+%9See also:%9 LINKS, MAP
+
diff --git a/docs/help/map b/docs/help/map
new file mode 100644
index 0000000..e6ea4eb
--- /dev/null
+++ b/docs/help/map
@@ -0,0 +1,16 @@
+
+%9Syntax:%9
+
+MAP
+
+%9Description:%9
+
+ Displays the network map of an IRC network; this command is usually
+ reserved for IRC operators and does not work on all servers.
+
+%9Examples:%9
+
+ /MAP
+
+%9See also:%9 DIE, LINKS, LUSERS
+
diff --git a/docs/help/me b/docs/help/me
new file mode 100644
index 0000000..52158a5
--- /dev/null
+++ b/docs/help/me
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+ME %|<message>
+
+%9Parameters:%9
+
+ The message to emote.
+
+%9Description:%9
+
+ Sends an action emote to the active nickname or channel.
+
+%9Examples:%9
+
+ /ME is hungry!
+ /ME had an awesome day @ work
+ /ME is happy it's Friday
+
+%9See also:%9 ACTION, CTCP
+
diff --git a/docs/help/meson.build b/docs/help/meson.build
new file mode 100644
index 0000000..7fe95d4
--- /dev/null
+++ b/docs/help/meson.build
@@ -0,0 +1,121 @@
+install_data(
+ files(
+ 'accept',
+ 'action',
+ 'admin',
+ 'alias',
+ 'away',
+ 'ban',
+ 'beep',
+ 'bind',
+ 'cat',
+ 'cd',
+ 'channel',
+ 'clear',
+ 'completion',
+ 'connect',
+ 'ctcp',
+ 'cycle',
+ 'dcc',
+ 'dehilight',
+ 'deop',
+ 'devoice',
+ 'die',
+ 'disconnect',
+ 'echo',
+ 'eval',
+ 'exec',
+ 'flushbuffer',
+ 'format',
+ 'hash',
+ 'help',
+ 'hilight',
+ 'ignore',
+ 'info',
+ 'invite',
+ 'irssiproxy',
+ 'ison',
+ 'join',
+ 'kick',
+ 'kickban',
+ 'kill',
+ 'knock',
+ 'knockout',
+ 'lastlog',
+ 'layout',
+ 'levels',
+ 'links',
+ 'list',
+ 'load',
+ 'log',
+ 'lusers',
+ 'map',
+ 'me',
+ 'mircdcc',
+ 'mode',
+ 'motd',
+ 'msg',
+ 'names',
+ 'nctcp',
+ 'netsplit',
+ 'network',
+ 'nick',
+ 'notice',
+ 'notify',
+ 'op',
+ 'oper',
+ 'otr',
+ 'part',
+ 'ping',
+ 'query',
+ 'quit',
+ 'quote',
+ 'rawlog',
+ 'recode',
+ 'reconnect',
+ 'rehash',
+ 'reload',
+ 'restart',
+ 'rmreconns',
+ 'rmrejoins',
+ 'save',
+ 'sconnect',
+ 'script',
+ 'scrollback',
+ 'server',
+ 'servlist',
+ 'set',
+ 'silence',
+ 'squery',
+ 'squit',
+ 'stats',
+ 'statusbar',
+ 'time',
+ 'toggle',
+ 'topic',
+ 'trace',
+ 'ts',
+ 'unalias',
+ 'unban',
+ 'unignore',
+ 'unload',
+ 'unnotify',
+ 'unquery',
+ 'unsilence',
+ 'upgrade',
+ 'uptime',
+ 'userhost',
+ 'ver',
+ 'version',
+ 'voice',
+ 'wait',
+ 'wall',
+ 'wallops',
+ 'who',
+ 'whois',
+ 'whowas',
+ 'window',
+ ),
+ install_dir : helpdir)
+
+# subdir('in')
diff --git a/docs/help/mircdcc b/docs/help/mircdcc
new file mode 100644
index 0000000..7449e76
--- /dev/null
+++ b/docs/help/mircdcc
@@ -0,0 +1,28 @@
+
+%9Syntax:%9
+
+MIRCDCC ON%||OFF
+
+%9Parameters:%9
+
+ ON: Enables mIRC compatibility mode.
+ OFF: Disables mIRC compatibility mode.
+
+%9Description:%9
+
+ After establishing a DCC CHAT connection that you initiated, you might
+ encounter some protocol issues if the target is using mIRC.
+
+ If you or your target sees some unexpected output or behavior inside a DCC
+ CHAT session, use this command to enable mIRC compatibility mode.
+
+ When receiving a connection from an mIRC user, the compatibility mode will
+ automatically be enabled.
+
+%9Examples:%9
+
+ /MIRCDCC ON
+ /MIRCDCC OFF
+
+%9See also:%9 ACTION, CTCP, DCC
+
diff --git a/docs/help/mode b/docs/help/mode
new file mode 100644
index 0000000..ed47ed7
--- /dev/null
+++ b/docs/help/mode
@@ -0,0 +1,77 @@
+
+%9Syntax:%9
+
+MODE %|<your nick>|<channel> [<mode> [<mode parameters>]]
+
+%9Parameters:%9
+
+ The target nickname or channel and the modes with their parameters to set or
+ remove.
+
+ If the target nickname or channel is omitted, the active nickname or channel
+ will be used.
+
+%9Description:%9
+
+ Modifies the user or channel modes for which you are privileged to modify.
+
+ You can specify multiple modes in one command and prepend them by using the
+ '+' sign to set or '-' sign to unset; modes that require a parameter will be
+ retrieved from the argument list.
+
+ Some common channel modes are:
+
+ b <mask>: Adds or removes a ban; a ban will prevent a user who
+ matches the given mask from joining the channel unless
+ he or she is invited or in the exempt list.
+ e <mask>: Adds or removes a ban exception; users who match a mask
+ on the exempt list are able to join a channel even if
+ they also match an entry on the ban list.
+ i: When enabled, users need to be invited into the channel
+ or have a matching entry in the invite list.
+ I <mask>: Adds or removes an invite; users who match a mask on
+ the invite list are able to join even if the channel is
+ set to invite only.
+ k <key>: Adds or removes a channel key, aka a password; users
+ will not be able to join the channel without providing
+ the key.
+ l <count>: Adds, removes or updates the maximum amount of users
+ that may join the channel.
+ m: When enabled, users who are not opped or voiced cannot
+ send messages to the channel.
+ n: When enabled, users who are not on the channel cannot
+ send messages to it.
+ p: When enabled, the channel will not be displayed in your
+ WHOIS output.
+ s: When enabled, the channel will not be displayed in the
+ LIST output.
+ t: When enabled, users who are not opped or voices cannot
+ modify the channel topic.
+ o <nickname>: Adds or removes the operator status from a nickname.
+ v <nickname>: Adds or removes the voice status from a nickname.
+
+ Some common user modes are:
+
+ i: When enabled, other users will not be able to see you
+ on a WHO output unless they are in the channel
+ themselves.
+ w: When enabled, you will receive WALLOP messages from IRC
+ operators.
+ s: When enabled, you will receive special notices or debug
+ messages from the server.
+
+ Many networks have additional user and channel modes; we highly recommend
+ you to read the documentation of the networks you frequently connect to and
+ maximize your IRC experience.
+
+%9Examples:%9
+
+ /MODE #irssi +o mike
+ /MODE #irssi -o+iI mike mike!*@*.irssi.org
+ /MODE +b mike!*@*.irssi.org
+ /MODE -o mike
+ /MODE +impsnkl secret_hideout 100
+ /MODE mike +iw
+
+%9See also:%9 BAN, DEOP, DEVOICE, OP, UNBAN, VOICE
+
diff --git a/docs/help/motd b/docs/help/motd
new file mode 100644
index 0000000..650bbf6
--- /dev/null
+++ b/docs/help/motd
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+MOTD %|[<server>|<nick>]
+
+%9Parameters:%9
+
+ The server or the server the target nickname is on; if no parameter is
+ given, the active server will be used.
+
+%9Description:%9
+
+ Displays the welcome message of an IRC server.
+
+%9Examples:%9
+
+ /MOTD
+ /MOTD irc.libera.chat
+ /MOTD bob
+
+%9See also:%9 ADMIN, INFO, LINKS, MAP
+
diff --git a/docs/help/msg b/docs/help/msg
new file mode 100644
index 0000000..b8587c6
--- /dev/null
+++ b/docs/help/msg
@@ -0,0 +1,33 @@
+
+%9Syntax:%9
+
+MSG %|[-<server tag>] [-channel | -nick] *|<targets> <message>
+
+%9Parameters:%9
+
+ -<server tag>: The server tag the targets are on.
+ -channel: Indicates that the target is a channel.
+ -nick: Indicates that the target is a nickname.
+
+ The target nickname or channel and the message to send.
+
+ The target can be a comma delimited list of targets, ie
+ nick1,nick2 or #chan1,#chan2
+
+ Or one of the following special targets:
+ * : Use the active nickname or channel
+ , : Last person who sent you a /msg
+ . : Last person you sent a /msg to
+
+%9Description:%9
+
+ Sends a message to a nickname or channel.
+
+%9Examples:%9
+
+ /MSG mike Hi, what's up?
+ /MSG #irssi I am awesome :)
+ /MSG * Do you want to build a snowman?
+
+%9See also:%9 ACTION, DCC, JOIN
+
diff --git a/docs/help/names b/docs/help/names
new file mode 100644
index 0000000..6cb295c
--- /dev/null
+++ b/docs/help/names
@@ -0,0 +1,27 @@
+
+%9Syntax:%9
+
+NAMES %|[-count | -ops -halfops -voices -normal] [<channels> | **]
+
+%9Parameters:%9
+
+ -count: Displays the amount of users in the channel.
+ -ops: Displays the channel operators.
+ -halfops: Displays the channel demi-operators.
+ -voices: Displays the users who are voiced in a channel.
+
+ The channels to report or ** for all channels you have joined; if no
+ arguments are given, the users in the active channel will be displayed.
+
+%9Description:%9
+
+ Displays the users who are in a channel; you can provide multiple channels
+ by separating them with a comma.
+
+%9Examples:%9
+
+ /NAMES -ops
+ /NAMES -voices #irssi,#libera
+
+%9See also:%9 JOIN, PART, WHO, WHOIS
+
diff --git a/docs/help/nctcp b/docs/help/nctcp
new file mode 100644
index 0000000..e0c94a1
--- /dev/null
+++ b/docs/help/nctcp
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+NCTCP %|<targets> <ctcp command> [<ctcp data>]
+
+%9Parameters:%9
+
+ A target nickname or channel, a command and the data.
+
+%9Description:%9
+
+ Sends a CTCP reply to a nickname or channel; you can provide multiple
+ targets by separating them with a comma.
+
+%9Examples:%9
+
+ /NCTCP #irssi VERSION King of the Jungle v1.0
+ /NCTCP bob,#libera USERINFO I am bob :p
+
+%9See also:%9 CTCP
+
diff --git a/docs/help/netsplit b/docs/help/netsplit
new file mode 100644
index 0000000..e253f23
--- /dev/null
+++ b/docs/help/netsplit
@@ -0,0 +1,16 @@
+
+%9Syntax:%9
+
+NETSPLIT
+
+%9Description:%9
+
+ Displays some information about users who are currently lost in one or
+ more net splits.
+
+%9Examples:%9
+
+ /NETSPLIT
+
+%9See also:%9 JOIN, LINKS, MAP, PART
+
diff --git a/docs/help/network b/docs/help/network
new file mode 100644
index 0000000..7d33400
--- /dev/null
+++ b/docs/help/network
@@ -0,0 +1,71 @@
+
+%9Syntax:%9
+
+NETWORK ADD%||MODIFY [-nick <nick>] [-alternate_nick <nick>] [-user <user>] [-realname <name>] [-host <host>] [-usermode <mode>] [-autosendcmd <cmd>] [-querychans <count>] [-whois <count>] [-msgs <count>] [-kicks <count>] [-modes <count>] [-cmdspeed <ms>] [-cmdmax <count>] [-sasl_mechanism <mechanism>] [-sasl_username <username>] [-sasl_password <password>] <name>
+NETWORK REMOVE %|<network>
+
+%9Parameters:%9
+
+ LIST: Displays the list of configured networks.
+ ADD: Adds a network to your configuration.
+ MODIFY: Modifies a network in your configuration.
+ REMOVE: Removes a network from your configuration.
+
+ -nick: Specifies the nickname to use.
+ -alternate_nick Specifies the alternate nickname to use.
+ -user: Specifies the user identity to use.
+ -realname: Specifies the real name to use.
+ -host: Specifies the hostname to use.
+ -usermode: Specifies the user modes to set on yourself.
+ -autosendcmd: Specifies the commands, separated by the ';' character,
+ and enclosed within two "'" characters, to perform after
+ connecting.
+ (Some characters need to be escaped - see /help eval)
+ -querychans: Specifies the maximum number of channels to put in one MODE
+ or WHO command when synchronizing.
+ -whois: Specifies the maximum number of nicknames in one WHOIS
+ command.
+ -msgs: Specifies the maximum number of nicknames in one PRIVMSG
+ command.
+ -kicks: Specifies the maximum number of nicknames in one KICK
+ command.
+ -modes: Specifies the maximum number of nicknames in one MODE
+ command.
+ -cmdspeed: Specifies the minimum amount of time, expressed in
+ milliseconds, that the client must wait before sending
+ additional commands to the server.
+ -cmdmax: Specifies the maximum number of commands to perform before
+ starting the internal flood protection.
+ -sasl_mechanism Specifies the mechanism to use for the SASL authentication.
+ At the moment irssi only supports the 'plain' and the
+ 'external' mechanisms.
+ Use '' to disable the authentication.
+ -sasl_username Specifies the username to use during the SASL authentication.
+ -sasl_password Specifies the password to use during the SASL authentication.
+
+
+ The name of the network to add, edit or remove; if no parameter is given,
+ the list of networks will be displayed.
+
+%9Description:%9
+
+ Displays, adds, modifies or removes the network configuration of IRC
+ networks.
+
+ When using the ADD parameter on a network that already exists, the
+ configuration will be merged with each other.
+
+ We recommend using 'WAIT 2000' between the automated commands in order to
+ prevent you from being kicked from the network due to flooding commands.
+
+%9Examples:%9
+
+ /NETWORK ADD -usermode +giw EFnet
+ /NETWORK ADD -usermode +iw -nick mike -realname 'The one and only mike!' -host staff.irssi.org liberachat
+ /NETWORK ADD -autosendcmd '^MSG NickServ identify WzerT8zq' liberachat
+ /NETWORK ADD -autosendcmd '^MSG Q@CServe.quakenet.org AUTH mike WzerT8zq; WAIT 2000; OPER mike WzerT8zq; WAIT 2000; MODE mike +kXP' Quakenet
+ /NETWORK MODIFY -usermode +gi EFnet
+ /NETWORK REMOVE liberachat
+
+%9See also:%9 CHANNEL, CONNECT, SERVER
+
diff --git a/docs/help/nick b/docs/help/nick
new file mode 100644
index 0000000..a55a3dd
--- /dev/null
+++ b/docs/help/nick
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+NICK %|<new nick>
+
+%9Parameters:%9
+
+ Your new nickname.
+
+%9Description:%9
+
+ Changes your nickname on the active server.
+
+%9Examples:%9
+
+ /NICK mike
+ /NICK bob
+
+%9See also:%9 CONNECT, JOIN, MSG, PART
+
diff --git a/docs/help/notice b/docs/help/notice
new file mode 100644
index 0000000..67c4dd9
--- /dev/null
+++ b/docs/help/notice
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+NOTICE %|<targets> <message>
+
+%9Parameters:%9
+
+ The targets and the message to notify.
+
+%9Description:%9
+
+ Sends a notice to the target nickname or channel; these are often used in
+ automated bots or scripts.
+
+ You can provide multiple targets by separating them with a comma.
+
+%9Examples:%9
+
+ /NOTICE mike You sir, are just awesome!
+ /NOTICE bob,#irssi Fish go blub :p
+
+%9See also:%9 CTCP, MSG, NCTCP
+
diff --git a/docs/help/notify b/docs/help/notify
new file mode 100644
index 0000000..51f9c85
--- /dev/null
+++ b/docs/help/notify
@@ -0,0 +1,29 @@
+
+%9Syntax:%9
+
+NOTIFY %|[-away] <mask> [<ircnets>]
+
+%9Parameters:%9
+
+ -away: Notifies you if the target modifies its away status.
+ -list: Displays the list of notifications.
+
+ The nickname or mask to get a notification for; if no arguments are given,
+ the current matching notifications will be displayed.
+
+ You may also provide the network that the target must be on.
+
+%9Description:%9
+
+ Notifies you when a nickname or users matching a host on the notification
+ list comes online or offline.
+
+%9Examples:%9
+
+ /NOTIFY -list
+ /NOTIFY -away mike
+ /NOTIFY bob
+ /NOTIFY *!*@staff.irssi.org
+
+%9See also:%9 AWAY, HILIGHT, UNNOTIFY
+
diff --git a/docs/help/op b/docs/help/op
new file mode 100644
index 0000000..ed0198c
--- /dev/null
+++ b/docs/help/op
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+OP %|<nicks>
+
+%9Parameters:%9
+
+ A list of nicknames to op.
+
+%9Description:%9
+
+ Grants the channel operator privileges to the given nicknames; you may use
+ the wildcard character '*' in a nickname.
+
+%9Examples:%9
+
+ /OP mike
+ /OP bob sarah
+ /OP jo*n
+ /OP *
+
+%9See also:%9 DEOP, DEVOICE, KICK, MODE, VOICE
+
diff --git a/docs/help/oper b/docs/help/oper
new file mode 100644
index 0000000..0bbd031
--- /dev/null
+++ b/docs/help/oper
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+OPER %|[<nick> [<password>]]
+
+%9Parameters:%9
+
+ The username and password to identify yourself as an IRC operator; if no
+ password is given, you will be prompted to enter one.
+
+%9Description:%9
+
+ Grants you the IRC operator status.
+
+%9Examples:%9
+
+ /OPER bob
+ /OPER mike WzerT8zq
+
+%9See also:%9 DIE, KILL
+
diff --git a/docs/help/otr b/docs/help/otr
new file mode 100644
index 0000000..ddad457
--- /dev/null
+++ b/docs/help/otr
@@ -0,0 +1,104 @@
+
+OTR %|[OPTION]
+
+Command to control the OTR module. Without an option, /OTR INFO is printed.
+
+This help contains three sections which are %9options, quickstart and files.%n
+
+To add the OTR status bar (highly recommended):
+
+%9/statusbar window add otr%n
+
+%9Options:%n
+
+AUTH <secret>
+ Start or respond to an authentication process.
+
+AUTHQ <question> <secret>
+ Start a SMP authentication process.
+
+ Example: %9/otr authq "My question is" "this is the secret"%n
+
+AUTHABORT
+ Abort an ongoing authentication process.
+
+CONTEXTS
+ List known contexts which basically list the known fingerprints and their
+ state.
+
+DEBUG
+ Turn on debugging.
+
+DISTRUST <fingerprint>
+ Distrust a specific fingerprint. This command can be done inside a private
+ window for which the current fingerprint of the other person will be used
+ or else set fp to a human readable OTR fingerprint available with the above
+ contexts command.
+
+ Examples: %9/otr distrust 487FFADA 5073FEDD C5AB5C14 5BB6C1FF 6D40D48A%n
+
+FINISH
+ End the OTR session. This MUST be done inside a private conversation
+ window.
+
+FORGET <fingerprint>
+ Forget a specific fingerprint (deleted from the known fingerprints). The
+ behavior is the same as the distrust command explained above.
+
+GENKEY <name>
+ Generate OTR keys for a given account name. This is done automatically
+ if someone tries to establish a secure session.
+
+ This process is done in a background worker and can take an arbitrary
+ amount of time. The completion is checked when another irssi event is
+ caught.
+
+HELP
+ Print this help.
+
+INFO
+ Display the OTR fingerprint(s) of all your account(s).
+
+INIT
+ Initialize an OTR conversation within a private conversation window.
+
+TRUST <fingerprint>
+ Trust a specific fingerprint. The behavior is the same as the forget and
+ distrust commands explained above.
+
+VERSION
+ Print the version of the OTR module.
+
+%9Quickstart:%n
+
+Start a private conversation with the person you want to initiate a secure session. Once in the private message window:
+
+%9/otr init%n
+
+Key generation should start if no key is found for your account name. Once the process is done, either type a message which should automatically start the session or redo the init command.
+
+Time to authenticate the person. Either use a shared secret exchange through phone or GPG-signed email or use the socialist millionaire problem mechanism (SMP) which is basically to ask a question for which the answer can only be known by the other person.
+
+%9/otr auth <shared-secret>%n OR %9/otr authq "A question" <shared-secret>%n
+
+Or to respond to an authentication:
+
+%9/otr auth <secret>%n
+
+%9Files:%n
+
+This otr modules creates a directory in %9$HOME/.irssi/otr%n and creates three files:
+
+* %9otr.key%n
+ Contains your OTR private key(s). NEVER shared this directory with someone
+ else unless you know what you are doing.
+
+* %9otr.fp%n
+ The known fingerprints with their _trust_ status.
+
+* %9otr.instag
+ Instance tag of the libotr. This should NEVER be copied to an other
+ computer. If unsure, just ignore this file.
+
+For more information on OTR, see https://otr.cypherpunks.ca/
+
diff --git a/docs/help/part b/docs/help/part
new file mode 100644
index 0000000..5f7e54b
--- /dev/null
+++ b/docs/help/part
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+PART %|[<channels>] [<message>]
+
+%9Parameters:%9
+
+ The channels, separated by a comma, to leave and the message to advertise.
+
+%9Description:%9
+
+ Leaves the given channels.
+
+%9Examples:%9
+
+ /PART #irssi
+ /PART #libera,#irssi
+
+%9See also:%9 JOIN, KICK
+
diff --git a/docs/help/ping b/docs/help/ping
new file mode 100644
index 0000000..1ac5c59
--- /dev/null
+++ b/docs/help/ping
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+PING %|[<nick> | <channel> | *]
+
+%9Parameters:%9
+
+ The nickname or channel to ping, you can use the asterisk '*' character to
+ ping every user on a channel.
+
+%9Description:%9
+
+ Sends a CTCP PING request to a nickname or a channel; this is used to find
+ out the latency on the network.
+
+%9Examples:%9
+
+ /PING bob
+ /PING #irssi
+
+%9See also:%9 CTCP, MSG
+
diff --git a/docs/help/query b/docs/help/query
new file mode 100644
index 0000000..536b97c
--- /dev/null
+++ b/docs/help/query
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+QUERY %|[-window] [-<server tag>] <nick> [<message>]
+
+%9Parameters:%9
+
+ -window: Uses the active window instead of opening a new one.
+ -<server tag>: The server tag the target nickname is on.
+
+ The nickname to query and the message.
+
+%9Description:%9
+
+ Starts a private conversation with a nickname.
+
+%9Examples:%9
+
+ /QUERY mike
+ /QUERY -liberachat bob
+ /QUERY -liberachat -window sarah
+
+%9See also:%9 MSG, UNQUERY, WINDOW
+
diff --git a/docs/help/quit b/docs/help/quit
new file mode 100644
index 0000000..9110990
--- /dev/null
+++ b/docs/help/quit
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+QUIT %|[<message>]
+
+%9Parameters:%9
+
+ The message to advertise.
+
+%9Description:%9
+
+ Terminates the application and advertises the given message on all the
+ networks you are connected to.
+
+%9Examples:%9
+
+ /QUIT
+ /QUIT <@cartman> Screw you guys, I'm going home!
+
+%9See also:%9 DISCONNECT
+
diff --git a/docs/help/quote b/docs/help/quote
new file mode 100644
index 0000000..918ac7c
--- /dev/null
+++ b/docs/help/quote
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+QUOTE %|<data>
+
+%9Parameters:%9
+
+ The text to send to the IRC server.
+
+%9Description:%9
+
+ Sends raw data to the server without any parsing.
+
+%9Examples:%9
+
+ /QUOTE PRIVMSG mike :Hey, this works!
+ /QUOTE OPERWALL :Meow!
+
+%9See also:%9 CONNECT, DISCONNECT, JOIN, MSG, PART
+
diff --git a/docs/help/rawlog b/docs/help/rawlog
new file mode 100644
index 0000000..ef3dac5
--- /dev/null
+++ b/docs/help/rawlog
@@ -0,0 +1,28 @@
+
+%9Syntax:%9
+
+RAWLOG SAVE %|<file>
+RAWLOG OPEN %|<file>
+RAWLOG CLOSE
+
+%9Parameters:%9
+
+ SAVE: Saves the raw server buffer into a file.
+ OPEN: Opens a log file and start logging all raw data.
+ CLOSE: Closes the log file
+
+ The filename to store the raw data into.
+
+%9Description:%9
+
+ Saves all the raw data that is received from and transmitted to the active
+ server into a log file.
+
+%9Examples:%9
+
+ /RAWLOG SAVE ~/server.log
+ /RAWLOG OPEN ~/debug.log
+ /RAWLOG CLOSE
+
+%9See also:%9 LOG
+
diff --git a/docs/help/recode b/docs/help/recode
new file mode 100644
index 0000000..c55c142
--- /dev/null
+++ b/docs/help/recode
@@ -0,0 +1,41 @@
+
+%9Syntax:%9
+
+RECODE%|
+RECODE ADD %|[[<tag>/]<target>] <charset>
+RECODE REMOVE %|[<target>]
+
+%9Parameters:%9
+
+ ADD: Adds an entry into the conversion database.
+ REMOVE: Removes an entry from the conversion database.
+
+ The network tag and channel or nickname to add or remove; if no target is
+ given, the active nickname or channel will be used.
+
+%9Description:%9
+
+ Recodes the data transmitted to and received from nicknames and channels
+ into a specific charset.
+
+ To get a list of supported charsets on your system, you can generally use
+ the 'iconv -l' command.
+
+%9Examples:%9
+
+ /RECODE
+ /RECODE ADD liberachat/mike utf-8
+ /RECODE ADD #korea euc-kr
+ /RECODE REMOVE #korea
+
+%9Special Examples:%9
+
+ /SET term_charset utf-8
+ /SET recode_fallback ISO-8859-15
+ /SET recode_out_default_charset ISO-8859-15
+
+ /TOGGLE recode_transliterate
+ /TOGGLE recode_autodetect_utf8
+
+%9See also:%9 CONNECT, MSG, NETWORK, SERVER
+
diff --git a/docs/help/reconnect b/docs/help/reconnect
new file mode 100644
index 0000000..9d9f738
--- /dev/null
+++ b/docs/help/reconnect
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+RECONNECT %|<tag> [<quit message>]
+
+%9Parameters:%9
+
+ The network tag and message to advertise; if no arguments are given, the
+ active server and default message will be used.
+
+%9Description:%9
+
+ Disconnect and reconnect from a network.
+
+%9Examples:%9
+
+ /RECONNECT
+ /RECONNECT liberachat
+ /RECONNECT EFnet BRB :)
+
+%9See also:%9 CONNECT, DISCONNECT, NETWORK, RMRECONNS, SERVER
+
diff --git a/docs/help/rehash b/docs/help/rehash
new file mode 100644
index 0000000..5803203
--- /dev/null
+++ b/docs/help/rehash
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+REHASH %|[<option>]
+
+%9Parameters:%9
+
+ The raw parameters to send to the server, if no arguments are given, none
+ will be sent to the server.
+
+%9Description:%9
+
+ Reloads the configuration of the IRC server you are are connected to; this
+ command is restricted to IRC operators.
+
+%9Examples:%9
+
+ /REHASH
+
+%9See also:%9 DIE, KILL, OPER
+
diff --git a/docs/help/reload b/docs/help/reload
new file mode 100644
index 0000000..dd8815c
--- /dev/null
+++ b/docs/help/reload
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+RELOAD %|[<file>]
+
+%9Parameters:%9
+
+ The filename of any Irssi configuration; if no parameter is given, the
+ active configuration file will be used.
+
+%9Description:%9
+
+ Reloads the Irssi configuration file.
+
+%9Examples:%9
+
+ /RELOAD
+ /RELOAD ~/test.irssi.conf
+
+%9See also:%9 SAVE
+
diff --git a/docs/help/restart b/docs/help/restart
new file mode 100644
index 0000000..4fac06a
--- /dev/null
+++ b/docs/help/restart
@@ -0,0 +1,16 @@
+
+%9Syntax:%9
+
+RESTART
+
+%9Description:%9
+
+ Restarts the active IRC server; this command is restricted to IRC
+ administrators.
+
+%9Examples:%9
+
+ /RESTART
+
+%9See also:%9 DIE, KILL, OPER, REHASH
+
diff --git a/docs/help/rmreconns b/docs/help/rmreconns
new file mode 100644
index 0000000..6d0974c
--- /dev/null
+++ b/docs/help/rmreconns
@@ -0,0 +1,15 @@
+
+%9Syntax:%9
+
+RMRECONNS
+
+%9Description:%9
+
+ Removes all active and pending reconnections.
+
+%9Examples:%9
+
+ /RMRECONNS
+
+%9See also:%9 CONNECT, DISCONNECT, NETWORK, SERVER
+
diff --git a/docs/help/rmrejoins b/docs/help/rmrejoins
new file mode 100644
index 0000000..b82e458
--- /dev/null
+++ b/docs/help/rmrejoins
@@ -0,0 +1,14 @@
+
+%9Syntax:%9
+
+
+%9Description:%9
+
+ Removes all active and pending join requests.
+
+%9Examples:%9
+
+ /RMREJOINS
+
+%9See also:%9 JOIN, PART
+
diff --git a/docs/help/save b/docs/help/save
new file mode 100644
index 0000000..b22c4d1
--- /dev/null
+++ b/docs/help/save
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+SAVE %|[<file>]
+
+%9Parameters:%9
+
+ -formats: Saves all the formats into the theme file.
+
+ The file to save the configuration or theme into; if no parameter is given,
+ the active configuration or theme file will be used.
+
+%9Description:%9
+
+ Saves the configuration file.
+
+%9Examples:%9
+
+ /SAVE
+ /SAVE -formats
+ /SAVE ~/.irssi/config-new
+
+%9See also:%9 RELOAD, SET
+
diff --git a/docs/help/sconnect b/docs/help/sconnect
new file mode 100644
index 0000000..12c46c4
--- /dev/null
+++ b/docs/help/sconnect
@@ -0,0 +1,25 @@
+
+%9Syntax:%9
+
+SCONNECT %|<new server> [[<port>] <existing server>]
+
+%9Parameters:%9
+
+ The server to connect to, the connection port and the remote server that
+ initiates the connection attempt.
+
+ If no remote server is given, the server you are currently connected to will
+ be used.
+
+%9Description:%9
+
+ Connect a server to the IRC network; this command is restricted to IRC
+ operators.
+
+%9Examples:%9
+
+ /SCONNECT ircsource.irssi.org
+ /SCONNECT ircsource.irssi.org 6667 be.hub
+
+%9See also:%9 DIE, KILL, OPER, RESTART, SQUIT
+
diff --git a/docs/help/script b/docs/help/script
new file mode 100644
index 0000000..1c562df
--- /dev/null
+++ b/docs/help/script
@@ -0,0 +1,33 @@
+
+%9Syntax:%9
+
+
+%9Parameters:%9
+
+ LIST: Displays the list of loaded scripts.
+ EXEC: Executes the given code.
+ LOAD: Loads the given script into the memory and executes it.
+ UNLOAD: Unloads the given script from the memory.
+ RESET: Unloads all the scripts.
+ -permanent: In combination with EXEC, the code will be loaded into the
+ memory.
+ -autorun: When passed to RESET the scripts in the autorun folder are
+ reloaded.
+
+ If no argument is given, the list of active scripts will be displayed.
+
+%9Description:%9
+
+ Interact with the Perl engine to execute scripts.
+
+%9Examples:%9
+
+ /SCRIPT
+ /SCRIPT LIST
+ /SCRIPT LOAD ~/.irssi/scripts/nickserv.pl
+ /SCRIPT UNLOAD nickserv
+ /SCRIPT RESET
+ /SCRIPT EXEC foreach my $channel (Irssi::channels()) { Irssi::print($channel->{name} . ' @ ' . $channel->{server}->{tag}); }
+
+%9See also:%9 LOAD, SAVE, UNLOAD
+
diff --git a/docs/help/scrollback b/docs/help/scrollback
new file mode 100644
index 0000000..daf6332
--- /dev/null
+++ b/docs/help/scrollback
@@ -0,0 +1,42 @@
+
+%9Syntax:%9
+
+SCROLLBACK CLEAR %|[-all] [<refnum>]
+SCROLLBACK LEVELCLEAR %|[-all] [-level <level>] [<refnum>]
+SCROLLBACK GOTO %|<+|-linecount>|<linenum>|<timestamp>
+SCROLLBACK HOME%|
+SCROLLBACK END%|
+SCROLLBACK REDRAW
+
+%9Parameters:%9
+
+ CLEAR: Clears the screen and the buffer of all text.
+ LEVELCLEAR: Clears the screen and the buffer of text matching the given
+ levels.
+ GOTO: Go to the given position.
+ HOME: Go to the start of the buffer.
+ END: Go to the end of the buffer.
+
+ -all: Applies to all windows instead of only the active one.
+ -level: The levels, separated by a comma, to match.
+
+ The line number, timestamp to jump to or the window reference number to
+ clear.
+
+%9Description:%9
+
+ Manipulate the text in the window to go to a to the given line number, or
+ clear the buffers.
+
+ The timestamp format is format is '[dd[.mm] | -<days ago>] hh:mi[:ss]'.
+
+%9Examples:%9
+
+ /SCROLLBACK CLEAR
+ /SCROLLBACK LEVELCLEAR -level NOTICES
+ /SCROLLBACK GOTO 100
+ /SCROLLBACK HOME
+ /SCROLLBACK END
+
+%9See also:%9 CLEAR, WINDOW
+
diff --git a/docs/help/server b/docs/help/server
new file mode 100644
index 0000000..4a9e5ae
--- /dev/null
+++ b/docs/help/server
@@ -0,0 +1,82 @@
+
+%9Syntax:%9
+
+SERVER CONNECT %|[-4 | -6] [-tls | -notls] [-tls_cert <cert>] [-tls_pkey <pkey>] [-tls_pass <password>] [-tls_verify | -notls_verify] [-tls_cafile <cafile>] [-tls_capath <capath>] [-tls_ciphers <list>] [-tls_pinned_cert <fingerprint>] [-tls_pinned_pubkey <fingerprint>] [-!] [-noautosendcmd] [-nocap] [-noproxy] [-network <network>] [-host <hostname>] [-rawlog <file>] [+]<address>|<chatnet> [<port> [<password> [<nick>]]]
+SERVER REMOVE %|<address> [<port>] [<network>]
+SERVER ADD%||MODIFY [-4 | -6] [-cap | -nocap] [-tls_cert <cert>] [-tls_pkey <pkey>] [-tls_pass <password>] [-tls_verify] [-tls_cafile <cafile>] [-tls_capath <capath>] [-tls_ciphers <list>] [-tls | -notls] [-starttls | -nostarttls | -disallow_starttls | -nodisallow_starttls] [-auto | -noauto] [-network <network>] [-host <hostname>] [-cmdspeed <ms>] [-cmdmax <count>] [-port <port>] <address> [<port> [<password>]]
+SERVER LIST%|
+SERVER PURGE %|[<target>]
+
+%9Parameters:%9
+
+ LIST: Displays the list of servers you have configured.
+ CONNECT: Connects to the given server.
+ ADD: Adds a server to your configuration.
+ MODIFY: Modifies a server in your configuration.
+ REMOVE: Removes a server from your configuration.
+ PURGE: Purges the commands queued to be sent to the server.
+
+ -!: Doesn't autojoin the channels.
+ -4: Connects using IPv4.
+ -6: Connects using IPv6.
+ -tls: Connects using TLS encryption.
+ -notls: Connect without TLS encrption.
+ -tls_cert: The TLS client certificate file.
+ -tls_pkey: The TLS client private key, if not included in the
+ certificate file.
+ -tls_pass: The password for the TLS client private key or certificate.
+ -tls_verify: Verifies the TLS certificate of the server.
+ -notls_verify: Doesn't verify the TLS certificate of the server.
+ -tls_cafile: The file with the list of CA certificates.
+ -tls_capath: The directory which contains the CA certificates.
+ -tls_ciphers: TLS cipher suite preference lists.
+ -tls_pinned_cert: Pinned x509 certificate fingerprint.
+ -tls_pinned_pubkey: Pinned public key fingerprint.
+ -auto: Automatically connects to the server on startup.
+ -noauto: Doesn't connect to the server on startup.
+ -cap: Enable CAPREQ for server.
+ -nocap: Disable CAPREQ for server.
+ -network: The network the server belongs to.
+ -host: The hostname you would like to connect from.
+ -cmdspeed: Specifies the minimum amount of time, expressed in
+ milliseconds, that the client must wait before sending
+ additional commands to the server.
+ -cmdmax: Specifies the maximum number of commands to perform
+ before starting the internal flood protection.
+ -port: Specifies the port to connect to the server.
+ -noproxy: Ignores the global proxy configuration.
+ -rawlog: Immediately open rawlog after connecting.
+ -noautosendcmd: Doesn't execute autosendcmd.
+
+ The server, port and network to add, modify or remove; if no argument is
+ given, the list of servers you are connected to will be returned.
+
+%9Description:%9
+
+ Displays, adds, modifies or removes the network configuration of IRC
+ servers.
+
+ When using the ADD parameter on a server that already exists, the
+ configuration will be merged with each other.
+
+ When using the CONNECT parameter, it will connect to the specified
+ server; the server in the active window will be disconnected
+ unless you prepend the server with the '+' character.
+
+ Specify '-' as password to remove a server password
+
+%9Examples:%9
+
+ /SERVER
+ /SERVER CONNECT irc.libera.chat
+ /SERVER CONNECT +irc.libera.chat
+ /SERVER ADD -network liberachat -noautosendcmd irc.libera.chat
+ /SERVER ADD -! -auto -host staff.irssi.org -4 -network liberachat -noproxy irc.libera.chat 6667
+ /SERVER MODIFY -network liberachat -noauto irc.libera.chat
+ /SERVER MODIFY -network liberachat irc.libera.chat 6697 -
+ /SERVER REMOVE irc.libera.chat 6667 liberachat
+ /SERVER PURGE
+ /SERVER PURGE irc.libera.chat
+
+%9See also:%9 CHANNEL, CONNECT, DISCONNECT, NETWORK, RECONNECT, RMRECONNS
+
diff --git a/docs/help/servlist b/docs/help/servlist
new file mode 100644
index 0000000..a02d229
--- /dev/null
+++ b/docs/help/servlist
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+SERVLIST %|[<mask> [<type>]]
+
+%9Parameters:%9
+
+ <mask> limits the output to the services which names matches
+ the mask.
+ <type> limits the output to the services of the specified type.
+
+%9Description:%9
+
+ List the network services currently present on the
+ IRC network.
+
+%9Examples:%9
+
+ /SERVLIST *@javairc.*
+ /SERVLIST * 0xD000
+
+%9See also:%9 SQUERY
+
diff --git a/docs/help/set b/docs/help/set
new file mode 100644
index 0000000..cd0ca51
--- /dev/null
+++ b/docs/help/set
@@ -0,0 +1,35 @@
+
+%9Syntax:%9
+
+SET %|[-clear | -default | -section] [<key> [<value>]]
+
+%9Parameters:%9
+
+ -clear: Removes the setting's value from the configuration.
+ -default: Restore the setting to its default value.
+ -section: Print settings under the specified section
+
+ The setting and the value; if no value is given, the list of settings that
+ matched will be returned. If no arguments are given, all the settings will
+ be displayed.
+
+%9Description:%9
+
+ Modifies the value of a setting; boolean settings accept only ON, OFF and
+ TOGGLE.
+
+ Please remember that you need to use the SAVE command to store the changes
+ into your configuration.
+
+%9Examples:%9
+
+ /SET
+ /SET nick mike
+ /SET -clear nick
+ /SET log_timestamp %%H:%%H:%%S
+ /SET -default log_timestamp
+ /SET -section lookandfeel
+ /SET close
+
+%9See also:%9 SAVE, TOGGLE
+
diff --git a/docs/help/silence b/docs/help/silence
new file mode 100644
index 0000000..bdacb06
--- /dev/null
+++ b/docs/help/silence
@@ -0,0 +1,30 @@
+
+%9Syntax:%9
+
+SILENCE %|[[+|-]<nick!user@host>]
+SILENCE %|[<nick>]
+
+%9Parameters:%9
+
+ The nickname or hostname to silence; you must prepend it by the '+' or '-'
+ character to indicate whether the entry should be added or removed.
+
+ If no arguments are given, the list of silence entries will be displayed.
+
+%9Description:%9
+
+ Manages the server side ignore list; users or hostnames that match an entry
+ on the list are not able to send you any messages or invites.
+
+ This command does not work on all IRC networks.
+
+%9Examples:%9
+
+ /SILENCE
+ /SILENCE +mike
+ /SILENCE -mike
+ /SILENCE +*!*@*.irssi.org
+ /SILENCE -*!*@*.irssi.org
+
+%9See also:%9 ACCEPT, IGNORE
+
diff --git a/docs/help/squery b/docs/help/squery
new file mode 100644
index 0000000..bb5498e
--- /dev/null
+++ b/docs/help/squery
@@ -0,0 +1,16 @@
+
+%9Syntax:%9
+
+SQUERY %|<service> [<message>]
+
+%9Parameters:%9
+
+ <service> - Service nickname or full hostmask of service to query.
+ <message> - Message to send to the service.
+
+%9Description:%9
+
+ /SQUERY sends a query to the specified service.
+
+%9See also:%9 SERVLIST, LIST, MSG
+
diff --git a/docs/help/squit b/docs/help/squit
new file mode 100644
index 0000000..d414ee3
--- /dev/null
+++ b/docs/help/squit
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+SQUIT %|<server>|<mask> <reason>
+
+%9Parameters:%9
+
+ The server and the disconnect reason.
+
+%9Description:%9
+
+ Disconnects a server from the IRC network; this command is restricted to
+ IRC operators.
+
+%9Examples:%9
+
+ /SQUIT ircsource.irssi.org I'm fixing a desync!
+
+%9See also:%9 DIE, OPER, SCONNECT
+
diff --git a/docs/help/stats b/docs/help/stats
new file mode 100644
index 0000000..027bb3a
--- /dev/null
+++ b/docs/help/stats
@@ -0,0 +1,43 @@
+
+%9Syntax:%9
+
+STATS %|<type> [<server>]
+
+%9Parameters:%9
+
+ The statistic identifier and the remote server; if no remote server is
+ given, the active server will be used.
+
+%9Description:%9
+
+ Displays statistics from the IRC server; some statistics require you to have
+ IRC operators privileges and might differ between IRC networks.
+
+ Common statistics:
+
+ C: Displays the servers the server may connect to.
+ H: Displays hub server the server may connect to.
+ K: Displays the permanent blacklist of hostnames which are prohibited
+ from connecting to the server.
+ k: Displays the temporary blacklist of hostname which are prohibited
+ from connecting to the server.
+ I: Displays the list of hostnames which are allowed to connect to the
+ server.
+ L: Displays the list of connected users and servers.
+ M: Displays the list of commands and how many times they have been
+ issued.
+ O: Displays the list of hostnames and users which are allowed to
+ become IRC operators.
+ P: Displays the ports the server is listening on.
+ p: Displays the IRC operators and their idle time.
+ u: Displays the uptime of the server.
+ Y: Displays the list of connection groups users are placed into.
+ ?: Displays information about the utilized bandwidth.
+
+%9Examples:%9
+
+ /STATS p
+ /STATS I ircsource.irssi.org
+
+%9See also:%9 MOTD, OPER
+
diff --git a/docs/help/statusbar b/docs/help/statusbar
new file mode 100644
index 0000000..8a4711b
--- /dev/null
+++ b/docs/help/statusbar
@@ -0,0 +1,69 @@
+
+%9Syntax:%9
+
+STATUSBAR ADD%||MODIFY [-disable | -nodisable] [-type window|root] [-placement top|bottom] [-position #] [-visible always|active|inactive] <statusbar>
+STATUSBAR RESET %|<statusbar>
+STATUSBAR ADDITEM%||MODIFYITEM [-before | -after <item>] [-priority #] [-alignment left|right] <item> <statusbar>
+STATUSBAR REMOVEITEM %|<item> <statusbar>
+STATUSBAR INFO %|<statusbar>
+
+%9Parameters:%9
+
+ ADD: Adds a statusbar to the list of statusbars.
+ MODIFY: Modifies the configuration of a statusbar.
+ RESET: Restores the default statusbar configuration.
+ ADDITEM: Adds an item to the specified statusbar. It can be set to
+ appear before/after another item and left/right aligned
+ on the screen.
+ MODIFYITEM: Changes an item position inside a bar.
+ REMOVEITEM: Removes an item from the specified statusbar.
+ INFO: List the current details and items of the specified
+ statusbar.
+
+ -disable: Removes a statusbar from the list.
+ -type: Sets the type of statusbar, for each split window or only
+ once at the root (very top or bottom) of the screen.
+ -placement: Sets the placement of the statusbar, either at the top or
+ the bottom of the screen or split window.
+ -position: Sets the position of the statusbar. Represented as a
+ number, with smaller numbers implying a position further
+ to the top.
+ -visible: Sets the visibility of the statusbar. If set to always,
+ it is visible on all split windows, otherwise if set to
+ inactive or active then it is only visible on inactive or
+ active split windows, respectively.
+ -before: This item is added before the other item.
+ -after: This item is added after the other item.
+ -priority: When the statusbar items overflow, the item with the
+ lowest priority is removed or truncated first.
+ Priority can be negative, in which case it'll have to be
+ quoted (e.g. -priority "-1")
+ -alignment: Display the item on the right side.
+
+ Where statusbar refers to the name of the statusbar; if no
+ argument is given, or `LIST` is given, the entire list of
+ statusbars along with a quick overview of their properties will be
+ displayed.
+
+%9Description:%9
+
+ Allows adjustment of the attributes and items of a statusbar, as well
+ as where it is located and whether or not it is currently visible.
+
+%9Examples:%9
+
+ /STATUSBAR
+ /STATUSBAR INFO window
+ /STATUSBAR REMOVEITEM time window
+ /STATUSBAR ADDITEM time window
+ /STATUSBAR RESET window
+ /STATUSBAR MODIFY -disable topic
+ /STATUSBAR MODIFY -nodisable topic
+
+%9Remarks:%9
+
+ Statusbar syntax was changed in Irssi 1.2. The old syntax is still
+ accepted for backward compatibility, but no longer documented.
+
+%9See also:%9 WINDOW
+
diff --git a/docs/help/time b/docs/help/time
new file mode 100644
index 0000000..25c488b
--- /dev/null
+++ b/docs/help/time
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+TIME %|[<server>|<nick>]
+
+%9Parameters:%9
+
+ The channel or the nickname; if no argument is given, the active server
+ will be used.
+
+%9Description:%9
+
+ Displays the local time of a server or the server the target user is
+ connected to.
+
+%9Examples:%9
+
+ /TIME
+ /TIME mike
+ /TIME ircsource.irssi.org
+
+%9See also:%9 MAP, TRACE, WHOIS
+
diff --git a/docs/help/toggle b/docs/help/toggle
new file mode 100644
index 0000000..e6a1e3a
--- /dev/null
+++ b/docs/help/toggle
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+TOGGLE %|<key> [on|off|toggle]
+
+%9Parameters:%9
+
+ The setting to modify and the new value; if no value is given, its opposite
+ will be used.
+
+%9Description:%9
+
+ Modifies a setting to its counter value; you can also give ON or OFF as a
+ value.
+
+%9Examples:%9
+
+ /TOGGLE resolve_prefer_ipv6
+ /TOGGLE channels_rejoin_unavailable ON
+
+%9See also:%9 SET
+
diff --git a/docs/help/topic b/docs/help/topic
new file mode 100644
index 0000000..a75933e
--- /dev/null
+++ b/docs/help/topic
@@ -0,0 +1,25 @@
+
+%9Syntax:%9
+
+TOPIC %|[-delete] [<channel>] [<topic>]
+
+%9Parameters:%9
+
+ -delete: Removes the topic.
+
+ The channel and topic; if no channel is given, the active channel will be
+ used. If no argument is given, the current topic will be displayed.
+
+%9Description:%9
+
+ Displays or modifies the topic of a channel.
+
+%9Examples:%9
+
+ /TOPIC
+ /TOPIC The robots are taking over!
+ /TOPIC -delete #irssi
+ /TOPIC #shakespeare /bb|[^b]{2}/
+
+%9See also:%9 CHANNEL, DEOP, DEVOICE, JOIN, OP, VOICE
+
diff --git a/docs/help/trace b/docs/help/trace
new file mode 100644
index 0000000..c4f42fa
--- /dev/null
+++ b/docs/help/trace
@@ -0,0 +1,25 @@
+
+%9Syntax:%9
+
+TRACE %|[<server>|<nick>]
+
+%9Parameters:%9
+
+ The channel or the nickname; if no argument is given, the active server
+ will be used.
+
+%9Description:%9
+
+ Displays the list of servers and users connects to a server, or a list of
+ the servers between yourself and the target user.
+
+ This command is usually restricted to IRC operators.
+
+%9Examples:%9
+
+ /TRACE
+ /TRACE mike
+ /TRACE ircsource.irssi.org
+
+%9See also:%9 MAP, TIME, WHOIS
+
diff --git a/docs/help/ts b/docs/help/ts
new file mode 100644
index 0000000..80ca17c
--- /dev/null
+++ b/docs/help/ts
@@ -0,0 +1,15 @@
+
+%9Syntax:%9
+
+TS
+
+%9Description:%9
+
+ Displays a list of the channels you are on and their topics.
+
+%9Examples:%9
+
+ /TS
+
+%9See also:%9 JOIN, TOPIC
+
diff --git a/docs/help/unalias b/docs/help/unalias
new file mode 100644
index 0000000..f2dde72
--- /dev/null
+++ b/docs/help/unalias
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+UNALIAS %|<alias>
+
+%9Parameters:%9
+
+ The name of the alias.
+
+%9Description:%9
+
+ Removes an alias.
+
+%9Examples:%9
+
+ /UNALIAS BAN
+ /UNALIAS K
+
+%9See also:%9 ALIAS
+
diff --git a/docs/help/unban b/docs/help/unban
new file mode 100644
index 0000000..19abff1
--- /dev/null
+++ b/docs/help/unban
@@ -0,0 +1,45 @@
+
+%9Syntax:%9
+
+UNBAN %|-first | -last | <id> | <masks>
+
+%9Parameters:%9
+
+ -normal: Uses the *!*user@*.domain.tld format.
+ -user: Uses the *!*user@* format.
+ -host: Uses the *!*@host.domain.tld format.
+ -domain: Uses the *!*@*.domain.tld format.
+ -custom: Uses the custom format.
+ -first: Removes the first ban from the list.
+ -last: Removes the last ban from the list.
+
+ A channel and the nicknames, hostnames or ban identifier to unban; if no
+ channel is given, the active channel will be used.
+
+ If no ban format parameter is given, the value of the ban_type setting will
+ be used to generate the hostmask to ban.
+
+%9Description:%9
+
+ Removes one or more bans from a channel.
+
+%9Configuring the custom format:%9
+
+ You must set the custom ban_type to the format you would like to use. For
+ example, if you set the custom ban_type to 'nick domain', it will generate
+ a ban based on the nick!*@*.domain.tld format.
+
+%9Examples:%9
+
+ /UNBAN mike
+ /UNBAN -host bob
+ /UNBAN *!*@*.irssi.org
+ /UNBAN *!*@*.users.irssi.org *!*@*.staff.irssi.org
+ /UNBAN -first
+ /UNBAN 5
+
+ /SET ban_type custom nick domain
+ /SET ban_type custom user host
+
+%9See also:%9 BAN, DEOP, KICKBAN, KNOCKOUT, OP
+
diff --git a/docs/help/unignore b/docs/help/unignore
new file mode 100644
index 0000000..070900e
--- /dev/null
+++ b/docs/help/unignore
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+UNIGNORE %|<id>|<mask>
+
+%9Parameters:%9
+
+ The ignore identifier or pattern to remove.
+
+%9Description:%9
+
+ Removes an entry from the ignore list.
+
+%9Examples:%9
+
+ /UNIGNORE 5
+ /UNIGNORE mike
+
+%9See also:%9 ACCEPT, IGNORE, SILENCE
+
diff --git a/docs/help/unload b/docs/help/unload
new file mode 100644
index 0000000..fc1aaee
--- /dev/null
+++ b/docs/help/unload
@@ -0,0 +1,19 @@
+
+%9Syntax:%9
+
+UNLOAD %|<module> [<submodule>]
+
+%9Parameters:%9
+
+ The name of the module to unload.
+
+%9Description:%9
+
+ Removes a module from the memory.
+
+%9Examples:%9
+
+ /UNLOAD fish
+
+%9See also:%9 LOAD, SCRIPT
+
diff --git a/docs/help/unnotify b/docs/help/unnotify
new file mode 100644
index 0000000..6df266c
--- /dev/null
+++ b/docs/help/unnotify
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+UNNOTIFY %|<mask>
+
+%9Parameters:%9
+
+ The notify pattern to remove.
+
+%9Description:%9
+
+ Removes an entry from the notify list.
+
+%9Examples:%9
+
+ /UNNOTIFY bob
+ /UNNOTIFY *!*@staff.irssi.org
+
+%9See also:%9 AWAY, HILIGHT, NOTIFY
+
diff --git a/docs/help/unquery b/docs/help/unquery
new file mode 100644
index 0000000..8bb0483
--- /dev/null
+++ b/docs/help/unquery
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+UNQUERY %|[<nick>]
+
+%9Parameters:%9
+
+ The nickname to close the query for; if no argument is given, the active
+ query will be used.
+
+%9Description:%9
+
+ Closes a query window for a nickname.
+
+%9Examples:%9
+
+ /UNQUERY
+ /UNQUERY mike
+
+%9See also:%9 MSG, QUERY, WINDOW
+
diff --git a/docs/help/unsilence b/docs/help/unsilence
new file mode 100644
index 0000000..f8e2252
--- /dev/null
+++ b/docs/help/unsilence
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+UNSILENCE %|<nick!user@host>
+
+%9Parameters:%9
+
+ The silence pattern to remove.
+
+%9Description:%9
+
+ Removes an entry from the silence list. This command does not work on all
+ IRC networks.
+
+%9Examples:%9
+
+ /UNSILENCE mike
+ /UNSILENCE *!*@*.irssi.org
+
+%9See also:%9 ACCEPT, IGNORE, SILENCE
+
diff --git a/docs/help/upgrade b/docs/help/upgrade
new file mode 100644
index 0000000..b113af5
--- /dev/null
+++ b/docs/help/upgrade
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+UPGRADE %|[<irssi binary path>]
+
+%9Parameters:%9
+
+ The location of the new binary; if no arguments are given, the current
+ binary file will be used.
+
+%9Description:%9
+
+ Upgrades to a new version without disconnecting from non-SSL servers; please
+ bear in mind that it does not download or compile a new version.
+
+%9Examples:%9
+
+ /UPGRADE
+ /UPGRADE /home/mike/irssi-dev/bin/irssi
+
+%9See also:%9 CONNECT, DISCONNECT, HELP
+
diff --git a/docs/help/uptime b/docs/help/uptime
new file mode 100644
index 0000000..3e62767
--- /dev/null
+++ b/docs/help/uptime
@@ -0,0 +1,15 @@
+
+%9Syntax:%9
+
+UPTIME
+
+%9Description:%9
+
+ Displays how long Irssi has been running.
+
+%9Examples:%9
+
+ /UPTIME
+
+%9See also:%9 CONNECT, EXIT
+
diff --git a/docs/help/userhost b/docs/help/userhost
new file mode 100644
index 0000000..7c7e914
--- /dev/null
+++ b/docs/help/userhost
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+USERHOST %|<nicks>
+
+%9Parameters:%9
+
+ One or more nicknames separated by space.
+
+%9Description:%9
+
+ Displays the user@host for the given nicknames; some common added attributes
+ are '*' to identify an IRC operator, '-' and '+' to indicate whether the
+ nickname is AWAY or available.
+
+%9Examples:%9
+
+ /USERHOST mike
+ /USERHOST bob sarah
+
+%9See also:%9 WHOIS
+
diff --git a/docs/help/ver b/docs/help/ver
new file mode 100644
index 0000000..8464dfb
--- /dev/null
+++ b/docs/help/ver
@@ -0,0 +1,22 @@
+
+%9Syntax:%9
+
+VER %|[<nick> | <channel> | *]
+
+%9Parameters:%9
+
+ A nickname, channel or the wildcard character '*'.
+
+%9Description:%9
+
+ Send a CTCP VERION request to the target nickname, channel or to all the
+ users on the channel.
+
+%9Examples:%9
+
+ /VER *
+ /VER #irssi
+ /VER mike
+
+%9See also:%9 CTCP
+
diff --git a/docs/help/version b/docs/help/version
new file mode 100644
index 0000000..7e67385
--- /dev/null
+++ b/docs/help/version
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+VERSION%|
+VERSION %|[<server>|<nick>]
+
+%9Parameters:%9
+
+ A nickname or server; if no argument is given, the active server will be
+ used.
+
+%9Description:%9
+
+ Displays the version and compatibility parameters of the given server, or
+ for the server the target nickname is on.
+
+%9Examples:%9
+
+ /VERSION mike
+ /VERSION ircsource.irssi.org
+
+%9See also:%9 ADMIN, STATS
+
diff --git a/docs/help/voice b/docs/help/voice
new file mode 100644
index 0000000..481686e
--- /dev/null
+++ b/docs/help/voice
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+VOICE %|<nicks>
+
+%9Parameters:%9
+
+ A list of nicknames to voice.
+
+%9Description:%9
+
+ Grants the channel voice privileges to the given nicknames; you may use
+ the wildcard character '*' in a nickname.
+
+%9Examples:%9
+
+ /VOICE mike
+ /VOICE bob sarah
+ /VOICE jo*n
+ /VOICE *
+
+%9See also:%9 DEOP, DEVOICE, KICK, MODE, OP
+
diff --git a/docs/help/wait b/docs/help/wait
new file mode 100644
index 0000000..a19db97
--- /dev/null
+++ b/docs/help/wait
@@ -0,0 +1,21 @@
+
+%9Syntax:%9
+
+WAIT %|[-<server tag>] <milliseconds>
+
+%9Parameters:%9
+
+ The amount of milliseconds.
+
+%9Description:%9
+
+ Waits the specified amount of milliseconds before sending the next command
+ to the server.
+
+%9Examples:%9
+
+ /WAIT 1000
+ /WAIT 5000
+
+%9See also:%9 ALIAS
+
diff --git a/docs/help/wall b/docs/help/wall
new file mode 100644
index 0000000..f1f2da1
--- /dev/null
+++ b/docs/help/wall
@@ -0,0 +1,23 @@
+
+%9Syntax:%9
+
+WALL %|[<channel>] <message>
+
+%9Parameters:%9
+
+ The channel and the message; if no channel is given, the active channel
+ will be used.
+
+%9Description:%9
+
+ Sends a message to all channel operators. If the server doesn't support
+ WALLCHOPS or STATUSMSG it will send a notice to each channel operator
+ individually.
+
+%9Examples:%9
+
+ /WALL I'm off for today; take care! :)
+ /WALL #irssi I'm feeling supercalifragilisticexpialidocious today :D
+
+%9See also:%9 MSG, NOTICE
+
diff --git a/docs/help/wallops b/docs/help/wallops
new file mode 100644
index 0000000..b9c8752
--- /dev/null
+++ b/docs/help/wallops
@@ -0,0 +1,20 @@
+
+%9Syntax:%9
+
+WALLOPS %|<message>
+
+%9Parameters:%9
+
+ The message to broadcast.
+
+%9Description:%9
+
+ Sends a network wide message to all the users which have the usermode 'w'
+ enabled; this command is restricted to IRC operators.
+
+%9Examples:%9
+
+ /WALLOPS Hi everybody!
+
+%9See also:%9 OPER, STATS
+
diff --git a/docs/help/who b/docs/help/who
new file mode 100644
index 0000000..0b0b412
--- /dev/null
+++ b/docs/help/who
@@ -0,0 +1,36 @@
+
+%9Syntax:%9
+
+WHO %|[<nicks> | <channels> | **]
+
+%9Parameters:%9
+
+ The channel name or output filter; if no arguments are given, the current
+ channel will be used.
+
+%9Description:%9
+
+ Displays information about users in the specified channel. If you specify a
+ filter, all the users whose nick, userhost or realname matches the filter
+ will be returned.
+
+ If the channel is secret and you are not on it, you will not receive any
+ output.
+
+ Common flags:
+
+ H: The user is available.
+ G: The user is away.
+ *: The user is an IRC operator.
+ @: The user is a channel operator.
+ +: The user is a channel voice.
+
+%9Examples:%9
+
+ /WHO
+ /WHO #irssi
+ /WHO bob
+ /WHO sar*
+
+%9See also:%9 CHANNEL, NAMES, WHOIS
+
diff --git a/docs/help/whois b/docs/help/whois
new file mode 100644
index 0000000..40bbaa3
--- /dev/null
+++ b/docs/help/whois
@@ -0,0 +1,30 @@
+
+%9Syntax:%9
+
+WHOIS %|[-<server tag>] [<server>] [<nicks>]
+
+%9Parameters:%9
+
+ -<server tag>: The server tag the target nickname is on.
+
+ The remote server to query and the nicknames; if no remote server is given,
+ the server you are connected to will be used. If no nickname is given, you
+ will query yourself.
+
+%9Description:%9
+
+ Displays information about users in the specified channel; you may give the
+ same nickname as the argument twice to also query the idle time.
+
+ If the nickname is not online, the WHOWAS command will be automatically
+ performed.
+
+%9Examples:%9
+
+ /WHOIS
+ /WHOIS mike
+ /WHOIS ircsource.irssi.org bob
+ /WHOIS sarah sarah
+
+%9See also:%9 CHANNEL, NAMES, WHO, WHOWAS
+
diff --git a/docs/help/whowas b/docs/help/whowas
new file mode 100644
index 0000000..0fbc545
--- /dev/null
+++ b/docs/help/whowas
@@ -0,0 +1,24 @@
+
+%9Syntax:%9
+
+WHOWAS %|[<nicks> [<count> [server]]]
+
+%9Parameters:%9
+
+ The nicknames, the maximum amount of results and the remote server. If no
+ arguments are given, your own nickname will be used. If no remote server is
+ given, the server you are connected to will be used.
+
+%9Description:%9
+
+ Displays historical user information.
+
+%9Examples:%9
+
+ /WHOWAS
+ /WHOWAS mike
+ /WHOWAS bob 10
+ /WHOWAS sarah 5 ircsource.irssi.org
+
+%9See also:%9 CHANNEL, NAMES, WHO, WHOIS
+
diff --git a/docs/help/window b/docs/help/window
new file mode 100644
index 0000000..424be94
--- /dev/null
+++ b/docs/help/window
@@ -0,0 +1,119 @@
+
+%9Syntax:%9
+
+WINDOW LOG %|on|off|toggle [<filename>]
+WINDOW LOGFILE %|<file>
+WINDOW NEW %|[HIDDEN|SPLIT|-right SPLIT]
+WINDOW CLOSE %|[<first> [<last>]]
+WINDOW REFNUM %|<number>
+WINDOW GOTO %|active|<number>|<name>
+WINDOW NEXT%|
+WINDOW LAST%|
+WINDOW PREVIOUS%|
+WINDOW LEVEL %|[<levels>]
+WINDOW IMMORTAL %|on|off|toggle
+WINDOW SERVER %|[-sticky | -unsticky] <tag>
+WINDOW ITEM PREV%|
+WINDOW ITEM NEXT%|
+WINDOW ITEM GOTO %|<number>|<name>
+WINDOW ITEM MOVE %|<number>|<name>
+WINDOW NUMBER %|[-sticky] <number>
+WINDOW NAME %|<name>
+WINDOW HISTORY %|[-clear] <name>
+WINDOW MOVE PREV%|
+WINDOW MOVE NEXT%|
+WINDOW MOVE FIRST%|
+WINDOW MOVE LAST%|
+WINDOW MOVE %|<number>|<direction>
+WINDOW LIST%|
+WINDOW THEME %|[-delete] [<name>]
+WINDOW HIDE %|[<number>|<name>]
+WINDOW SHOW %|[-right] <number>|<name>
+WINDOW GROW %|[-right] [<lines>|<columns>]
+WINDOW SHRINK %|[-right] [<lines>|<columns>]
+WINDOW SIZE %|[-right] <lines>|<columns>
+WINDOW BALANCE %|[-right]
+WINDOW UP %|[-directional]
+WINDOW DOWN %|[-directional]
+WINDOW LEFT %|[-directional]
+WINDOW RIGHT %|[-directional]
+WINDOW STICK %|[<ref#>] [ON|OFF]
+WINDOW MOVE LEFT %|[-directional]
+WINDOW MOVE RIGHT %|[-directional]
+WINDOW MOVE UP %|[-directional]
+WINDOW MOVE DOWN %|[-directional]
+WINDOW HIDELEVEL %|[<levels>]
+
+%9Parameters:%9
+
+ LOG: %|Turn on or off logging of the active window, optionally specifying the log file to use.
+ LOGFILE: %|Sets the location of the log file to use for window logging without starting to log.
+ NEW: %|Creates a new hidden or split window.
+ CLOSE: %|Closes the current window, the specified one or all windows in the given range.
+ REFNUM: %|Go to the window with the given number.
+ GOTO: %|Go to the window with activity, with the given nickname, channel or with the specified number.
+ NEXT: %|Go to the next window numerically.
+ LAST: %|Go to the previously active window.
+ PREVIOUS: %|Go to the previous window numerically.
+ LEVEL: %|Changes the text levels to display in the window, or query the current level.
+ IMMORTAL: %|Modifies or queries the window mortality status. Immortal windows have an extra protection against WINDOW CLOSE.
+ SERVER: %|Change the active server of the window or the server stickyness. If the server is sticky, it cannot be cycled with next_window_item/previous_window_item
+ ITEM PREV: %|Make the previous item in this window active.
+ ITEM NEXT: %|Make the next item in this window active.
+ ITEM GOTO: %|Change to the query with the specified nickname, channel with the given name or window item number.
+ ITEM MOVE: %|Move the active window item to another window, or move the channel or query item specified by their name to the current window.
+ NUMBER: %|Change the active window number to the specified number, swapping the window already in that place if required. With -sticky, protect the window number from renumbering done by windows_auto_renumber. (To re-set the sticky attribute, use WINDOW NUMBER again without -sticky.)
+ NAME: %|Change or clear the window name. Window names must be unique.
+ HISTORY: %|Set or clear a specific named history to use for this window. All windows with the same named history will share a history.
+ MOVE PREV: %|Move the window to the place of the numerically previous window. At the first position, move the window to the end and renumber the consecutive block that it was part of.
+ MOVE NEXT: %|Move the window to the place of the numerically next window. At the last position, move the window to the first position and renumber the consecutive block at first position (if any)
+ MOVE FIRST: %|Move the window to the first position. Any windows inbetween are moved to their numerically next positions.
+ MOVE LAST: %|Move the window to the last position. Any windows inbetween are moved to their numerically previous positions.
+ MOVE: %|Move the window to the specified number or the first number that is in use when moving the window in the direction of the specified position. Any windows inbetween are shifted towards the old position of the window (unused positions remain empty)
+ LIST: %|List all the windows.
+ THEME: %|Applies or removes a per-window theme.
+ GROW: %|Increase the size of the active split window by the specified number of lines.
+ SHRINK: %|Decrease the size of the active split window by the specified number of lines.
+ SIZE: %|Set the current split window size to the specified number of lines.
+ BALANCE: %|Balance the heights of all split windows.
+ HIDE: %|Hides the current split window, or the split window specified by number or item name.
+ SHOW: %|Show the window specified by number or item name as a new split windows. It is made sticky when autostick_split_windows is turned on.
+ UP: %|Set the split window left or above the current one active. At the top, wraps to the bottom.
+ DOWN: %|Set the split window right or below the current one active. At the bottom, wraps left.
+ LEFT: %|Go to the previous window numerically that is part of the current sticky group (or not part of any sticky group).
+ RIGHT: %|Go to the next window numerically that is part of the current sticky group (or not part of any sticky group).
+ STICK: %|Make the currently active window sticky, or stick the window specified by number to the currently visible split window. Or turn off stickyness of the currently active window or the window specified by number.
+ HIDELEVEL: %|Changes the levels of text lines that should be hidden from view, or query the current hidden level.
+ MOVE LEFT: %|Move the window to the numerically previous location inside the current sticky group.
+ MOVE RIGHT: %|Move the window to the numerically next location inside the current sticky group.
+ MOVE UP: %|Move the current window to the sticky group of the previous split window. If no sticky group remains, the split window collapses.
+ MOVE DOWN: %|Move the current window to the sticky group of the next split window. If no sticky group remains, the split window collapses.
+
+ -right: %|Makes the command work on the width instead of height, or create the split window to the right instead of top.
+ -directional: %|Set the split window in the given direction to the current one active, or move the current window to the sticky group of the split window in the given direction. (If no sticky group remains, the split window collapses.)
+
+ %|Add the required arguments for the given command. Without arguments, the details (size, immortality, levels, server, name and sticky group) of the currently active window are displayed. If used with a number as argument, same as WINDOW REFNUM.
+
+ %|LEVEL and HIDELEVEL modify the currently set level. Without arguments, the current level is displayed. Levels listed starting with `+' are added to the current levels. Levels listed starting with `-' are removed from the current levels. To clear the levels, start the new level setting with `NONE'. Levels listed starting with `^' are either removed or added from the current setting, depending on whether they were previously set or not (since Irssi 1.4.4). Levels listed as is are also added to the current levels. Afterwards, the new level setting is displayed.
+
+%9Description:%9
+
+ Manipulates the window layout and positioning attributes.
+
+%9Examples:%9
+
+ /WINDOW CLOSE
+ /WINDOW ITEM MOVE 10
+ /WINDOW GOTO 15
+ /WINDOW GOTO ACTIVE
+ /WINDOW GOTO mike
+ /WINDOW GOTO #irssi
+ /WINDOW NEW HIDDEN
+ /WINDOW LOG OFF
+ /WINDOW LOG ON ~/logs/debug.log
+ /WINDOW LEVEL -ALL +NOTICES
+ /WINDOW HIDELEVEL ^JOINS ^PARTS ^QUITS
+ /WINDOW LOGFILE ~/logs/notices.log
+
+%9See also:%9 JOIN, LEVELS, LOG, QUERY
+
diff --git a/docs/irssi.1 b/docs/irssi.1
new file mode 100644
index 0000000..08be69f
--- /dev/null
+++ b/docs/irssi.1
@@ -0,0 +1,88 @@
+.TH Irssi 1 "June 2015" "Irssi IRC client"
+.SH NAME
+Irssi \- a modular IRC client for UNIX
+.SH SYNOPSIS
+.B irssi
+[--config=PATH] [--home=PATH] [-dv!?] [-c server] [-p port] [-n nickname]
+[-w password] [-h hostname]
+.SH DESCRIPTION
+.B Irssi
+is a modular Internet Relay Chat client; it is highly extensible and
+very secure. Being a fullscreen, termcap based client with many
+features,
+.B Irssi
+is easily extensible through scripts and modules.
+.SH OPTIONS
+.TP
+.BI "\-\-config="FILE
+use
+.I FILE
+instead of ~/.irssi/config
+.TP
+.BI "\-\-home="PATH
+.I PATH
+specifies the home directory of Irssi; default is
+.BR ~/.irssi
+.TP
+.BI "\-c, \-\-connect="SERVER
+connect to
+.I SERVER
+.TP
+.BI "\-w, \-\-password="PASSWORD
+use
+.I PASSWORD
+for authentication.
+.TP
+.BI "\-p, \-\-port="PORT
+automatically connect to
+.I PORT
+on server.
+.TP
+.BI "\-!, \-\-noconnect"
+disable autoconnecting of servers
+.TP
+.BI "\-n, \-\-nick="NICKNAME
+specify
+.I NICKNAME
+as your nick
+.TP
+.BI "\-h, \-\-hostname="HOSTNAME
+use
+.I HOSTNAME
+for your irc session
+.TP
+.BI "\-v, \-\-version"
+display the version of Irssi
+.TP
+.BI "\-?, \-\-help"
+show a help message
+.SH SEE ALSO
+.B Irssi
+has a solid amount of documentation available; check /HELP or look online
+at https://irssi.org
+.SH FILES
+.TP
+.I ~/.irssi/config
+personal configuration file
+.TP
+.I ~/.irssi/config.autosave
+automatic save of the personal config file when it was changed externally
+.TP
+.I ~/.irssi/default.theme
+default irssi theme
+.TP
+.I ~/.irssi/away.log
+logged messages in away status
+.TP
+.I ~/.irssi/scripts/
+default scripts directory
+.TP
+.I ~/.irssi/scripts/autorun/
+directory containing links to scripts that should be loaded
+automatically on startup
+.TP
+.I ~/.irssi/startup
+file containing a list of commands to execute on startup
+.SH AUTHORS/CREDITS
+.B Irssi
+was written by Timo Sirainen; this manpage was written by Istvan Sebestyen, Stefan Tomanek, Geert Hauwaerts.
diff --git a/docs/manual.txt b/docs/manual.txt
new file mode 100644
index 0000000..d55e362
--- /dev/null
+++ b/docs/manual.txt
@@ -0,0 +1,957 @@
+
+ Irssi 0.8 documentation - https://irssi.org/
+
+ Copyright(c) 2000 Timo Sirainen <cras@irssi.org>
+
+
+ Index
+
+ 0. Generic babbling
+ 1. Command line parameters
+ 2. Message levels
+ 3. Flood protection
+ 4. Configuration
+ 5. Servers
+ 6. Channels
+ 7. IRC commands and features
+ 8. Notify list
+ 9. Text highlighting
+ 10. Ignoring
+ 11. Logging
+ 12. Commands
+ 14. Last log (currently text version only)
+ 15. Word completion
+ 16. Recode
+ 18. Key bindings (text version)
+ 19. Perl scripting
+
+ ( not written yet: )
+ 13. Themes
+ 17. Windowing system (text version)
+
+
+
+ 0. Generic babbling
+
+ 0.1 History
+
+ Hello. I'm Timo Sirainen aka. cras, and I'm an IRC addict. :)
+
+ I'm actually quite new in IRC, I got my first internet connection
+ sometimes around fall 1997 and I started actively IRCing around
+ christmas. I used EPIC and BitchX mostly at the start, but soon
+ found some nice KDE IRC client which name I can't remember anymore.
+ It's author however stopped developing it after I had been using it
+ a few months. And since it had bugs and all, I wanted another nice
+ GUI IRC client. I didn't find any.
+
+ Since I've always been a coder and do-it-yourself guy (my own
+ offline reader and BBS software in the BBS ages), I started my own
+ IRC client at spring 1998. I called it yagIRC standing for "Yet
+ another GTK IRC client". GTK was in around version 1.0 back then,
+ and it had a lot of features/bugs which I found all the time as I
+ tried to do some "different" things than other people. These
+ sometimes prevented me of doing something some feature I wanted.
+
+ So, in summer 1998 I went to army and I passed development of yagIRC
+ to two guys, they did a few new features and released a version or
+ two, but finally (in summer 1999?) they put a message to web page
+ which told that they finally had stopped developing it entirely,
+ also saying that my code was a total mess :) (yes, it was a mess)
+
+ I got out of the army 1.1.1999. I promised to myself that I wouldn't
+ do another IRC client, but after trying to use BitchX a while, I
+ started dreaming about an IRC client which would have an excellent
+ look and feel. After trying various things, I only came up with the
+ GNOME panel applet which people still tell me that it's a great
+ feature. I was more like thinking some pretty little icons in
+ some corner telling me about new messages and other stuff..
+
+ I thought that I would keep Irssi a small project, just doing a few
+ little features that *I* wanted, nothing for others. But after few
+ versions and few interested people, I started coding it more and
+ more generic..
+
+ Finally, after releasing version 0.6.0 (february, 1999) I realized
+ that things were getting into a big mess again. I started a rewrite,
+ I organized the code into irc-base, irc-extra, user interface and
+ GUI directories, created the signalling system for letting them
+ communicate themselves easily and released 0.7.0. This was the base
+ for the rest of the 0.7.x releases, and it did work pretty well.
+ The signalling system was excellent, for example creating text mode
+ version was really easy and you didn't need tens of (empty) gui_xxx()
+ functions like in the yagIRC days. Maintaining the text and GTK
+ versions separately was really easy too.
+
+ About a year later after releasing Irssi 0.7.0, I started having
+ dreams about an IRC client that would be extremely modular, like you
+ could upgrade the client to newer version ON THE FLY without needing
+ to even disconnect from the servers. I started a project codenamed
+ i2k, I took the code from Irssi, split it into more directories and
+ changed quite a lot of the code to work a bit differently.
+
+ I developed i2k quite a long, until I finally gave up with it since
+ it could do only some basic things, and Irssi 0.7 really needed
+ maintaining. After a while I got an idea, maybe I could merge the
+ code from the i2k to Irssi more easily than rewriting the whole
+ client. This was more easier than I thought. It's now been two
+ months since I started it, and Irssi 0.8 is looking absolutely
+ excellent.
+
+ 0.2 Irssi 0.8
+
+ Irssi 0.8 is my fourth try to create the perfect IRC client.
+ This time I'm concentrating to the code. I try to avoid kludges, I
+ try to make as simple code as I can, and I try to provide enough
+ easy to use functions so that extending Irssi is as simple as
+ possible. I also try to keep the "bloat" features in scripts or
+ modules instead of build-in.
+
+ I think I'm succeeded with these goals pretty well, there's some
+ small problems but everything in the big picture looks great.
+
+ 0.3 Future
+
+ What about Irssi 1.0, what will it look like?
+
+ I was thinking about the Linux kernel versioning and keeping
+ Irssi 0.8 a stable version all the time while developing new
+ features only to Irssi 0.9. After 0.9 is finished, it will be
+ called 0.10 or 1.0 depending if I think it's ready to be called 1.0.
+
+ 1.0's goal is that it has all the possible features anyone will
+ ever need. If not build-in, then in scripts or loadable modules.
+ Not very small goal :)
+
+ 0.4 This documentation
+
+ Strange, I just created the index list and started writing this.
+ I've never been too good at documentation and I usually don't like
+ writing it, but after coding so much recently and seeing that the
+ NEWS file was getting *SO* large, I thought that I had to put all
+ these features down somewhere so people (and me!) would find them.
+
+
+ 1. Command line parameters
+
+ --connect -c <server> Connect to server at startup
+ --port -p <port> - specify port
+ --noconnect -! Don't autoconnect to any servers at startup
+ --nick -n Specify what nick to use
+ --hostname -h Specify what host name to use
+
+
+ 2. Message levels <https://irssi.org/documentation/help/levels/>
+
+ 3. Flood protection
+
+ 3.1 Command flood protection
+
+ Most (all?) IRC servers' flood protection works like this
+ (from RFC 1459):
+
+ --------
+ * check to see if client's `message timer' is less than
+ current time (set to be equal if it is);
+
+ * read any data present from the client;
+
+ * while the timer is less than ten seconds ahead of the current
+ time, parse any present messages and penalize the client by
+ 2 seconds for each message;
+
+ which in essence means that the client may send 1 message every 2
+ seconds without being adversely affected.
+ --------
+
+ Irssi's flood protection works the same way, except it penalizes
+ 2.2 seconds by default for each message (helps with some servers).
+ You can change it with /SET cmd_queue_speed <milliseconds>. You can
+ also change the number of commands before flood protection activates
+ (ie. the burst count) with /SET cmds_max_at_once <count>.
+
+ IRC servers also have an input buffer where the client's commands
+ are saved before processed. It's size is server specific (can be as
+ low as 1k!) If it gets full, the server kicks you out (the
+ "Excess flood" quit message). Irssi's flood protecion protects this
+ pretty well with small commands, but if you send many big commands
+ (like >400 char long messages) fast, you could get easily kicked out.
+ Normally this isn't problem, but if you have scripts sending long
+ messages, you should remember this. I'm not sure how much you should
+ wait between the long messages, but 2 seconds isn't enough.
+
+ This protection is used with all commands sent to server, so you
+ don't need to worry about it with your scripts.
+
+ 3.2 CTCP flood protection
+
+ Other people can pretty easily flood you with CTCP requests, and
+ even if you wouldn't get kicked out from the server, they could
+ easily grow your command queue. So, Irssi's CTCP flood protection
+ works like this:
+
+ First it checks how big the CTCP reply queue is, if it's longer
+ than `max_ctcp_queue', the CTCP is ignored. You can change it with
+ /SET max_ctcp_queue <count> (default is 5).
+
+ After this the CTCP reply is placed to server's "idle queue", so
+ the reply is sent "when there's extra time", this means that if
+ you are busy sending other commands, it might take a while before
+ the reply is sent.
+
+ 3.3 Detecting floods
+
+ Irssi is all the time automatically checking different flooding,
+ when flood is noticed, it sends "flood" signal. This can be easily
+ used for example to create a script for kicking channel flooders.
+ Autoignore uses this also, see section 10.2.
+
+ Flood is detected when more than `flood_max_msgs' same kind of
+ messages arrives in `flood_timecheck' seconds to same target
+ (channel or private msg) so it isn't flooding if same user sends a
+ message to 10 different channels you are on, but it is flooding if
+ 10 messages are sent to same channel by the same user.
+
+ Currently only messages, notices and ctcps are checked for
+ flooding.
+
+ /SET flood_max_msgs <count>, default is 4
+ /SET flood_timecheck <seconds>, default is 5 seconds
+ If either of these is 0, the flood checking is disabled.
+
+
+ 4. Configuration <https://irssi.org/documentation/manual/configuration/>
+
+ 5. Servers
+
+ 5.1 Generic
+
+ Irssi is multi-server friendly. You can be connected to multiple
+ different servers, or the same server multiple times. Most of the
+ settings that let you specify the channel, let you also specify IRC
+ network.
+
+ Servers are referenced by a "server tag". If the server is known
+ to belong to some IRC network, the tag is the IRC network's name,
+ like "IRCnet". If the IRC network is unknown, the tag is created
+ from the server's name, like irc.funet.fi -> funet. If the tag
+ already exists, a number is added to the end of it and raised until
+ unused tag is found.
+
+ Quit messages have a small problem if there's already a few
+ commands in server's input command queue. If the server's socket is
+ disconnected immediately after QUIT message is sent, it is possible
+ that the server didn't yet process the quit command and your quit
+ message will be "broken pipe" or something similiar. The right thing
+ to do is to let the server disconnect you, but what if the
+ connection to server is broken and the server never disconnects you?
+ I solved the problem by waiting a few seconds to see if the server
+ disconnects us. If it didn't, force the disconnect. This explains
+ the (a bit annoying) "waiting for servers to close connections"
+ message when quiting Irssi. Most IRC clients just ignore this whole
+ problem, but I hate it if my quit message isn't displayed right.
+
+ 5.2 IRC networks
+
+ Different IRC networks behave a bit differently, and to be as
+ efficient as possible, Irssi needs to know a few things about them
+ or the safe defaults will be used. The default configuration file
+ contains the settings for the biggest IRC networks.
+
+ /NETWORK ADD [-kicks <count>] [-msgs <count>] [-modes <count>]
+ [-whois <count>] [-cmdspeed <ms>] [-cmdmax <count>]
+ [-nick <nick>] [-user <user>] [-realname <name>]
+ [-host <host>] [-autosendcmd <cmd>] <name>
+
+ -kicks: Maximum number of nicks in one /KICK command
+ -msgs: Maximum number of nicks in one /MSG command
+ -modes: Maximum number of mode changes in one /MODE command
+ -whois: Maximum number of nicks in one /WHOIS command
+ -cmdspeed: Same as /SET cmd_queue_speed, see section 3.1
+ -cmdmax: Same as /SET cmds_max_at_once, see section 3.1
+ -nick, -user, -realname: Specify what nick/user/name to use
+ -host: Specify what host name to use, if you have multiple
+ -autosendcmd: Command to send after connecting to a server
+
+ With -autosendcmd argument you can automatically run any commands
+ after connecting to the network. This is useful for automatically
+ identifying yourself to NickServ, for example
+
+ /NETWORK ADD -autosendcmd "/^msg NickServ identify secret" liberachat
+
+ /NETWORK REMOVE <name>
+
+ 5.3 Manually connecting and disconnecting
+
+ To connect to a new server, use:
+ /CONNECT [-network <network>] [-host <hostname>] <address>|<network>
+ [<port> [<password> [<nick>]]]
+
+ If there's no password, set it to -. You can directly connect to
+ IRC server in specified address, or you can connect to some IRC
+ network and Irssi will pick the server for you.
+
+ You don't need to specify the IRC network, password, nick, etc. if
+ you setup the server using /SERVER ADD (see next section). If the
+ settings can't be found there either, Irssi will use the defaults:
+
+ /SET default_nick <nick>, defaults to user_name
+ /SET alternate_nick <nick>, defaults to <default_nick>_
+ /SET user_name <user>, defaults to your login name
+ /SET real_name <name>, taken from /etc/passwd by default
+ /SET hostname <host>, what host name to use when connecting
+ /SET skip_motd ON|OFF|TOGGLE - Don't show server's MOTD
+
+ NOTE: /CONNECT is also a command for IRC operators to connect IRC
+ servers to other IRC servers. If you want to use it, use /SCONNECT
+ instead.
+
+ You can disconnect from the server with:
+ /DISCONNECT *|<tag> [message]
+
+ If message isn't given, Irssi will use the default quit message. You
+ can set it with /SET quit_message <message>, default is "leaving".
+
+ /SERVER disconnects the server in active window and connects to new
+ one. It will take the same arguments as /CONNECT. If you prefix the
+ address with + character, Irssi won't disconnect the active server,
+ and it will create a new window where the server is connected
+ (ie. /window new hide;/connect address)
+
+ /SERVER without any arguments displays list of connected servers.
+
+ 5.4 Server settings
+
+ /SERVER ADD [-tls] [-tls_cert <cert>] [-tls_pkey <pkey>]
+ [-tls_pass <password>] [-tls_verify] [-tls_cafile <cafile>]
+ [-tls_capath <capath>] [-tls_ciphers <list>]
+ [-tls_pinned_cert <fingerprint>] [-tls_pinned_pubkey <fingerprint>]
+ [-auto | -noauto] [-network <network>] [-host <hostname>]
+ [-cmdspeed <ms>] [-cmdmax <count>] [-port <port>]
+ <address> [<port> [<password>]]
+
+ -tls: Connects using TLS encryption.
+ -tls_cert: The TLS client certificate file.
+ -tls_pkey: The TLS client private key, if not included in the
+ certificate file.
+ -tls_pass: The password for the TLS client private key or
+ certificate.
+ -tls_verify: Verifies the TLS certificate of the server.
+ -tls_cafile: The file with the list of CA certificates.
+ -tls_capath: The directory which contains the CA certificates.
+ -tls_ciphers: TLS cipher suite preference lists.
+ -tls_pinned_cert: Pinned x509 certificate fingerprint.
+ -tls_pinned_pubkey: Pinned public key fingerprint.
+ -auto: Automatically connect to server at startup
+ -noauto: Don't connect to server at startup (default)
+ -network: Specify what IRC network this server belongs to
+ -ircnet: Same as -network. Deprecated. Do not use.
+ -host: Specify what host name to use, if you have multiple
+ -cmdspeed: Same as /SET cmd_queue_speed, see section 3.1
+ -cmdmax: Same as /SET cmds_max_at_once, see section 3.1
+ -port: This is pretty much like the port argument later, except
+ this can be used to modify existing server's port.
+
+ /SERVER REMOVE <address> [<port>]
+
+ /SERVER LIST
+
+ Servers are identified by their name and port. You can have multiple
+ entries for the same server name but in different ports. This is
+ useful for IRC proxies, in one port you could have IRCNet proxy,
+ another port would have EFNet, etc.
+
+ If you wish to change existing server's port to something else, use
+ -port command. For example if you had irc.server.org in port 6667
+ and you wanted to change it to port 6668, use command:
+
+ /SERVER ADD -port 6668 irc.server.org 6667
+
+ If you want to remove some settings from existing server, for
+ example hostname, just give -host "" parameters to it.
+
+ After connected to server, Irssi can automatically change your user
+ mode. You can set it with /SET usermode <mode>, default is +i.
+
+ /SET resolve_prefer_ipv6 - If ON, prefer IPv6 for hosts that
+ have both v4 and v6 addresses.
+
+ 5.5 Automatic reconnecting
+
+ If you get disconnected from server, Irssi will try to reconnect
+ back to some of the servers in the same IRC network. To prevent
+ flooding the server that doesn't let you in (and avoiding K-lines),
+ Irssi won't try to reconnect to the same server more often than
+ once in `server_reconnect_time' seconds. You can change it with
+ /SET server_reconnect_time <seconds>, default is 5 minutes.
+
+ After reconnected to server, Irssi will re-set your user mode, away
+ message and will join you back to the same channels where you were
+ before the connection was lost.
+
+ You can see list of the reconnections with /SERVER. The servers
+ that have tag as RECON-n are the reconnections. You can remove them
+ with /DISCONNECT <tag>, and you can reconnect to them immediately
+ with /RECONNECT <n>. /RECONNECT without any arguments will
+ disconnect from the active server and reconnect back immediately.
+
+ 5.6 Server redirections
+
+ Getting replies matched to IRC commands can be quite complicated.
+ Server redirection allow this in a relatively easy way. They are
+ used internally and are available to scripts; see Server redirections
+ in perl.txt for details.
+
+ 5.7 Server idle command queue
+
+ There's some situations when you want to ask something from the
+ server which isn't really important. For example when connected
+ to server and you didn't get your nick, Irssi asks with /WHOIS
+ who has your nick and displays it. But if you already have a lot of
+ commands in buffer, like you just autojoined to many channels,
+ you'd rather first let the JOIN commands to be sent to server
+
+ This is where server idle queue gets into picture. Commands in
+ idle queue are sent to server when there's nothing else in the
+ normal command queue.
+
+ Idle queue works with server redirections, so you can ask something
+ from server when it has time and your function is called when the
+ reply is received.
+
+ 5.8 Net splits
+
+ Irssi keeps track of people who were lost in net splits. You can
+ get a list of them with /NETSPLIT command.
+
+ Another use for this is with bots. Channel master can op anyone in
+ the channel and the bot happily accepts it. But if the opped user
+ is lost behind a net split and in netjoin the server gives ops for
+ the user, the bot should decide if the user (who isn't in bot's user
+ database) is a malicious attacker who should be deopped, or if
+ he/she/it is just some user that already had ops before the net
+ split.
+
+ /SET hide_netsplit_quits - If ON, hide all netsplit quit messages
+ and display only "Netsplit host1 host2: nicks".
+
+ /SET netsplit_max_nicks - If non-zero, limit the number of nicks
+ printed in netsplit message and add "(+<n> more, use /NETSPLIT
+ to show all of them)" text.
+
+ 5.9 Lag checking
+
+ Irssi will constantly check how big the lag to the server is. It is
+ done by sending PING commands. Lag checking is disabled for broken
+ servers that do not support PING.
+
+ If the lag is too big, Irssi will reconnect to different IRC server.
+ This is sometimes useful if the connection has been stuck for 30
+ minutes but it still hasn't been closed.
+
+ /SET lag_check_time <time> - Specifies how often to check the lag.
+ If it is set to 0, the lag detection is disabled. Default
+ is 1 minute.
+ /SET lag_max_before_disconnect <time> - Specifies how big the lag
+ can be before reconnecting to another server. Default is 5
+ minutes.
+ /SET lag_min_show <time> - Specifies the minimum lag to display
+ in status bar. Default is 1 second.
+
+ 5.10 Raw log
+
+ All data that is received or sent to server is kept in a raw log
+ buffer for a while. Also event redirections are kept there. This is
+ very useful for debugging purposes.
+
+ /RAWLOG SAVE <filename> - Save the current raw log buffer to file
+ /RAWLOG OPEN <filename> - Like /RAWLOG SAVE, but keep the log file
+ open and write all new log to it.
+ /RAWLOG CLOSE - Close the open raw log
+
+ /SET rawlog_lines <count> - Specify the number of raw log lines to
+ keep in memory.
+
+
+ 6. Channels
+
+ 6.1 Generic
+
+ There's several types of channels you can join, here's a list of
+ the ones that Irssi supports:
+
+ #channel - Normal channels, most commonly used
+ +channel - Modeless channels, channel has no modes, no channel
+ operators and no topic. This way no-one is above others
+ and there's no operator-wars etc. But on the other hand,
+ you can't kick any troublemakers..
+ &channel - Local channels, these channels aren't distributed outside
+ the IRC server. IRCNet has replaced server notices with
+ several different &channels (&ERRORS, &NOTICES, etc.)
+ !channel - New channels, currently supported only by IRCNet. These
+ channels are designed so that they can't be taken over
+ with net splits. /JOIN !channel joins to existing
+ !channel, /JOIN !!channel creates a new channel.
+
+ Most of the commands that take channel name as parameter, can also
+ accept * as the channel name, which means the active channel.
+
+
+ 6.2 Joining, parting
+
+ Channels can be joined with /JOIN command. You can join to multiple
+ channels with one /JOIN by giving it a comma-separated list of
+ channels, like /JOIN #channel1,#channel2. If you don't give the
+ channel mode character (#+&!) before the channel name, Irssi
+ automatically uses # channels.
+
+ Channel names may contain any characters except SPACE, BELL, NUL,
+ CR, LF or comma (','). On IRCnet and a few other networks, you can
+ also restrict the channel to only certain servers by adding the
+ mask to the end of the channel name separated with a ':'
+ character, for example #channel:*.fi lets only people on .fi
+ servers join the channel. Other servers will not even know about
+ the channel. This is pretty difficult to use, since everyone will
+ have to always join #channel:*.fi; #channel and #channel:*.fi are
+ different channels. Ban exceptions (+e) and especially invite
+ lists (+I) replace this functionality pretty well, see section 6.5.
+
+ If channel has a password (aka. key), you can join it with
+ /JOIN #channel pass, or multiple channels with passwords with
+
+ /JOIN #secret1,#public,#secret2 pass1,x,pass2
+
+ #public didn't have any password, so we used "x" as it's password.
+ It doesn't really matter what password you send with channels that
+ don't have passwords.
+
+ If you want to join to channel in different server than active one
+ in window, you can do it with /JOIN -<server tag> #channel, like
+ /JOIN -efnet #irssi.
+
+ You can leave channels with /PART [<channels>] [<part message>].
+ For example "/PART byebye all" leaves the active channel with
+ "byebye all" message, or /PART #chan1,#chan2 leaves those channels.
+
+ NOTE: Sending JOIN 0 directly to server (/quote join 0) leaves all
+ the channels you are joined. There's been some jokes about joining
+ for example to #2000,0 where the server actually leaves you from all
+ channels. With Irssi this isn't really a problem, since irssi would
+ happily join to channels #2000 and #0.
+
+ 6.3 Automatic joining
+
+ Irssi can automatically join to specified channels in specified
+ IRC networks. It can also automatically send the password when
+ manually joining to channel without specifying the password.
+
+ /CHANNEL ADD [-auto | -noauto] [-bots <masks>] [-botcmd <command>]
+ <channel> <network> [<password>]
+
+ With -bots and -botcmd arguments you can automatically send
+ commands to someone in channel. This is useful for automatically
+ getting ops for channels, for example
+
+ /CHANNEL ADD -auto -bots "*!bot@bothost.org bot*!*@host2.org"
+ -botcmd "msg $0 op mypass" #channel ircnet
+
+ You can also use the -botcmd without -bots argument. The command is
+ then sent whenever you join the channel.
+
+ If you want to remove some settings from existing channel record,
+ for example bots, just give the -bots "" parameters to it. Password
+ can be removed by setting it to - (or actually, "" works too).
+
+ You can remove the channels with
+ /CHANNEL REMOVE <channel> <network>
+
+ /CHANNEL LIST displays list of channels with settings.
+ /CHANNEL without any arguments displays list of channels you have
+ joined. You can also use /CHANNEL to join to channels just as with
+ /JOIN, like /CHANNEL #a.
+
+ 6.4 After-join automation
+
+ When joined to channel, Irssi asks some information about it.
+ After it has got all of it, it prints the "Channel synchronized"
+ text. The following information is asked:
+
+ - Channel mode
+ - WHO list to get nicks' hosts - useful for /BAN for example
+ - Ban list - useful for allowing /UNBAN to use wildcards
+
+ If you have joined many channels at once, Irssi tries to optimize
+ the commands it sends to server. Instead of sending two commands
+ to ask two channels' mode, it just sends MODE #a,#b. Same thing with
+ WHO list and ban lists. Some servers do not support this and they
+ reply with different kinds of error messages, Irssi tries to deal
+ with them all right and resend the commands again separately.
+ However, some strange servers sometimes use some weird error replies
+ that Irssi doesn't know about, and the channel never gets
+ synchronized. If this happens with some server you know, please
+ let the Irssi's author know about it.
+
+ 6.5 Channel modes
+
+ Common channel modes are:
+
+ i - Invite only - People can't join to channel without being
+ /INVITEd, or being in invite list (+I, see below).
+ m - Moderated - People who don't have voices (+v) can't send
+ messages to channel
+ p - Private - People who aren't joined to channel can't see it
+ for example with /WHOISing people who are in channel.
+ s - Secret - Like private, but the channel isn't displayed in
+ /LIST's output.
+ n - No external msgs - Without this mode, anyone can send messages
+ to channel without even being joined.
+ t - Topic can be changed only by channel operators.
+
+ k <key> - Channel password (aka. key) - The channel can't be joined
+ without specifying the channel key (see section 6.2).
+
+ l <count> - User limit - No more than <count> people can join to
+ channel. This can be overridden with /INVITE with some
+ servers.
+
+ This is usually used for protecting channel from join
+ flooding, like some bot allows max. 5 users to join in
+ one minute or so.
+
+ b - Set/remove ban. For example MODE #channel +b *!*@*.org bans
+ everyone from .org domain.
+
+ If someone from .org domain was already in channel before the
+ ban was set, he/she cannot send any messages to channel (doesn't
+ work with all servers).
+
+ Bans can also be overridden with /INVITE, although many stupid
+ IRC clients automatically kick the user out because they see
+ the ban and think that because of it the user shouldn't be in
+ the channel (doesn't work with all servers).
+
+ e - Ban exceptions. You could for example ban everyone from
+ *!*@*.org but set ban exception to *!*@*.host.org - does not work
+ with all servers.
+
+ I - Invite list. If channel is invite only (+i), people in this
+ list can join it without being /INVITEd - does not work with all
+ servers.
+
+ This is excellent for in-country channels that don't want
+ foreigners (spammers!) to join the channel, for example setting
+ channel's mode to +i and +I *!*@*.fi allows only finnish people
+ to join the channel. In addition to this, there's usually a bot
+ in the channels and sending /MSG bot invite command to it
+ /INVITEs you to the channel.
+
+ On IRCnet, the ':' feature in channel names can also be used for
+ a similar effect, see section 6.2.
+
+ o <nick> - Grant or revoke channel operator status from nick
+ v <nick> - Grant or revoke voice status from nick, only people with
+ +v (or +o) can talk to channel when it's moderated (+m).
+
+ You can send multiple mode changes with one mode command:
+
+ /MODE #channel +nto-o+v nick1,nick2,nick3
+
+ This would set channel's mode to +nt, give ops to nick1, take ops
+ from nick2 and give voices to nick3.
+
+ You can set only limited number of modes that requires argument in
+ one command. In IRCnet it's 3, in EFnet it's 4 and in many others
+ it's 6. If it's not known, Irssi defaults to 3. Irssi will also
+ automatically split them, so you can use /MODE +oooooo n1,n2,..
+ command to op 6 people and Irssi will split it to two commands in
+ IRCnet/EFnet.
+
+ Many networks have additional modes and/or change the meaning of existing
+ modes. Check the documentation for the network or the server software in
+ use for details.
+
+ Instead of manually setting o, v and b modes you probably want to
+ use /OP, /DEOP, /VOICE, /DEVOICE, /BAN and /UNBAN commands.
+
+ /OP, /DEOP, /VOICE and /DEVOICE commands allows wildcards as their
+ argument. So /OP ni* will op all non-opped people whose nick start
+ with "ni". /DEOP * will deop everyone else except you. /VOICE and
+ /DEVOICE work the same way.
+
+ 6.6 Bans
+
+ You can give /BAN a list of nicks or whole ban masks. /UNBAN
+ accepts wildcards, so if you have ban nick!user@reallylonghost.org,
+ you can simply unban it with /UNBAN *really*
+
+ Using /BAN <nicks>, Irssi will automatically create the mask. You
+ can change the way it's created with the ban_type setting:
+
+ /SET ban_type normal|host|domain|custom
+
+ Normal - *!user@*.domain.net
+ Host - *!*@host.domain.net
+ Domain - *!*@*.domain.net
+ Custom [nick] [user] [host] [domain]
+ eg. /SET ban_type custom nick domain - nick!*@*.domain.net
+ eg. /SET ban_type custom user host - *!user@host.domain.net
+
+ Irssi has also a couple of commands to help banning people:
+
+ /KICKBAN [<channel>] <nick> <reason> - ban and kick the nick
+ /KNOCKOUT [<seconds>] <nick> <reason> - kickban the nick, unban
+ after waiting <seconds>, default is 5 minutes.
+
+ 6.7 Massjoins
+
+ Automatic opping the nick right after joined to channel is a pretty
+ commonly used. What mostly irritates me with this is that the nick
+ may be opped multiple times by different people, or after netsplits
+ when the people join back, the server will op them, but still the
+ bots op the people again, even if it was just done by the server.
+
+ Irssi has this feature that it sends a "massjoin" signal a while
+ after the real join. If someone has already opped the nick, you can
+ easily check it in the massjoin signal handler.
+
+ The default is to report maximum of 5 joins in one massjoin signal.
+ If the 5 joins don't come in 5 seconds, the signal is sent anyway.
+ You can change these with /SET massjoin_max_wait <milliseconds> and
+ /SET massjoin_max_joins <count>.
+
+
+ 7. IRC commands and features <https://irssi.org/documentation/help/>
+
+ 8. Notify list
+
+ Notify list is generally used for knowing when someone you know
+ comes to IRC or leaves from IRC. Traditionally notify list can
+ handle only a list of nicks, no nick masks etc. I lost interest to
+ traditional notify lists long time ago, since the people I know
+ are in IRC all the time. So I made a bit more featureful notify
+ list:
+
+ /NOTIFY [-list] [-away] <mask> [network [network...]]
+
+ -away: Notifies about away-status changes
+ -list: Lists the notify list entries with all their settings
+ <mask>: Either a simple "nick" or "nick!*@*blah.org". The nick
+ can't contain wildcards, but the user/host can.
+
+ /UNNOTIFY <mask>
+
+ /NOTIFY without any arguments displays if the people in notify
+ list are online or offline.
+
+
+ 9. Text highlighting
+
+ Irssi supports highlighting lines that match the specified pattern.
+ You can also change the color of the nicks that match specified nick
+ mask, so you could for example show your friends' nicks with
+ different color.
+
+ /HILIGHT [-mask | -regexp | -word] [-nick] [-color <color>]
+ [-level <level>] [-channels <channels>] <text>
+
+ -mask: Match only for nick, <text> is a nick mask
+ -regexp: <text> is a regular expression
+ -word: <text> must match to full words
+ -nick: Hilight only the nick, not the whole line
+ -color: Print the reply with <color>. color is in %code format
+ (see docs/formats.txt)
+ -level: Match only for <level> messages, default is
+ publics,msgs,notices,actions
+ -channels: Match only in <channels>
+
+ /DEHILIGHT <ref#> | <text>
+
+ /HILIGHT without any arguments displays list of the hilights.
+
+ If <color> is a number, Irssi will treat it as a MIRC color
+ code. You can also use bolds (^B), underlines (^_) etc. as
+ <color> if you like.
+
+
+ 10. Ignoring
+
+ 10.1 Manual ignoring
+
+ Irssi's ignoring options should be enough for everyone :)
+
+ /IGNORE [-regexp | -word] [-pattern <pattern>] [-replies] [-except]
+ [-channels <channel>] <mask> <levels> <^levels>
+
+ -regexp: <pattern> is a regular expression
+ -word: <pattern> must match to full words
+ -pattern: <pattern> must match to the message's text
+ -replies: Ignore replies to nick in channels. For example
+ "/IGNORE -replies *!*@*.fi PUBLIC" ignores everyone
+ from Finland, but also anyone sending message
+ "tofinnishnick: blahblah".
+ -except: *DON'T* ignore
+ -channels: Ignore only in channels
+ <mask>: Either a nick mask or list of channels
+ <levels>: List of levels to ignore
+ <^levels>: List of levels to NOT ignore
+ (/ignore -except nick notices = /ignore nick ^notices)
+
+ /UNIGNORE <ref#> | <mask>
+
+ /IGNORE without any arguments displays list of ignores.
+
+ The best match always wins, so you can have:
+
+ /IGNORE * CTCPS
+ /IGNORE -except *!*@host.org CTCPS
+
+ 10.2 Automatic ignoring
+
+ Irssi can automatically set ignores for people who flood you.
+ Currently you can autoignore MSGS, NOTICES, CTCPS and PUBLIC.
+ Actions are placed to either MSGS or PUBLIC. See section 3.3 for
+ definition of the flood.
+
+ /SET autoignore_time <seconds> specifies how long to ignore the
+ user.
+
+ /SET autoignore_levels <levels> specifies what levels to ignore
+ automatically, default is to ignore only CTCPS.
+
+
+ 11. Logging
+
+ 11.1 Basic logging
+
+ /LOG OPEN [-noopen] [-autoopen] [-targets <targets>]
+ [-window] <filename> [<levels>]
+
+ -noopen: Create the entry to log list, but don't start logging
+ -autoopen: Automatically open this log file at startup
+ -targets: Log only in specified channels/nicks
+ -window: Log the active window
+ <filename>: File name where to log, it is parsed with
+ strftime(), so %d=day, etc. see "man strftime" for
+ more info. Irssi will automatically check every hour
+ if log should be rotated.
+ <levels>: Defaults to ALL
+
+ /LOG CLOSE <ref#> | <fname> - Close log and remove from log list
+ /LOG START <ref#> | <fname> - Start logging to file
+ /LOG STOP <ref#> | <fname> - Stop logging to file
+ /LOG without any arguments displays the log list
+
+ /SET log_create_mode <mode> - Specifies what file mode to use with
+ the created log files. Default is 0644.
+
+ All of these are parsed with strftime():
+ /SET log_timestamp <text> - Specifies the time stamp format.
+ Default is "%H:%M ".
+ /SET log_open_string <text> - Text written to log when it's opened
+ /SET log_close_string <text> - Text written to log when it's closed
+ /SET log_day_changed <text> - Text written to log when day changes
+
+ NOTE: Log files are locked after opened, so two Irssis can't
+ accidentally try to write to the same log file.
+
+ Examples:
+
+ /LOG OPEN -targets cras ~/irclogs/cras.log MSGS
+ - Logs all messages from/to nick `cras'
+
+ /LOG OPEN -targets #linux ~/irclogs/linux/linux-%Y-%m-%d
+ - Logs all messages in channel #linux. Log is rotated daily, so
+ logs in 1. May 2000 goes to file "linux-2000-05-01", when the
+ day is changed, Irssi closes the log and starts logging to
+ "linux-2000-05-02" etc.
+
+ 11.2 Window logging
+
+ /WINDOW LOG ON|OFF|TOGGLE [<filename>]
+
+ Start/stop logging the active window. This works exactly like
+ /LOG OPEN -window.
+
+ /WINDOW LOGFILE <filename>
+
+ Sets the default log file to use in the window, it can be
+ overridden with specifying the file name in /WINDOW LOG. If no file
+ name isn't given, Irssi defaults to ~/irc.log.<windowname> or
+ ~/irc.log.Window<ref#> if window doesn't have name.
+
+ Creates the entry to log list, same as /LOG OPEN -window -noopen.
+ Also, if /WINDOW LOG ON is used it starts logging to this file.
+
+ 11.3 Automatic logging
+
+ This is the logging method that I had been asked to implement for
+ ages, and it is really simple to use too. It logs only messages
+ that have "targets", ie. private messages and channel specific
+ messages (msgs, modes, topics, etc). WHOIS replies and such aren't
+ logged. If you with to log them too, use the /LOG command.
+
+ So, when for example a private messages comes to you from "guy"
+ nick, Irssi creates a log file ~/irclogs/guy.log for it. After few
+ minutes of inactivity, the log file is closed.
+
+ /SET AUTOLOG ON|OFF|TOGGLE - Enable/disable autolog.
+
+ /SET AUTOLOG_LEVEL <level> - Specifies what levels to log, default
+ is ALL.
+
+ /SET AUTOLOG_PATH <path> - expandos (see special_vars.txt) can be
+ used, $0 is the target. If you are using multiple servers, it makes
+ sense to use the server tag as part of the file name, for example
+ ~/irclogs/$tag/$0.log (this is the default). The directories are
+ created automatically.
+
+ 11.4 Awaylog
+
+ Irssi logs specified messages when you're away. After you set
+ yourself unaway, Irssi will display all the messages in the awaylog.
+
+ /SET awaylog_level <level> - Default is MSGS HILIGHT
+ /SET awaylog_file <filename> - Default is ~/.irssi/away.log
+
+ You can disable this feature by setting awaylog_level to NONE.
+
+ 12. Commands <https://irssi.org/documentation/manual/commands/>
+
+ 13. Themes
+
+ 14. Last log <https://irssi.org/documentation/help/lastlog/>
+
+ 15. Word completion <https://irssi.org/documentation/help/completion/>
+
+ 16. Recode
+
+ Irssi supports selective encoding of incoming/outgoing messages
+ through the recode system. All incoming/outgoing messages can be
+ optionally converted to/from the charset specified by the
+ `term_charset' variable (which defaults to the locale encoding and
+ should _not_ be changed in most cases), by setting the `recode'
+ variable to 'ON'.
+ Since there is no way in IRC to know the encoding associated to a
+ message, for incoming messages Irssi uses the following algorithm:
+
+ if `recode_autodetect_utf8' is 'ON' and the message is valid UTF-8 the
+ encoding is assumed to be UTF-8.
+ if an encoding is set for the target (through /recode) use it,
+ otherwise fallback to the value of `recode_fallback'.
+
+ For outgoing messages it is simpler:
+
+ if an encoding is set for the target (through /recode) use it,
+ otherwise fallback to the value of `recode_out_default_charset'.
+
+ /SET recode_transliterate - Append '//TRANSLIT' to the destination
+ encoding for both incoming/outgoing messages. '//TRANSLIT' is a GNU
+ iconv specific extension to peform transliteration (locale dependent)
+ when a character is not representable in the destination encoding.
+
+ 18. Key bindings <https://irssi.org/documentation/help/bind_-list/>
+
+ 19. Scripting <https://irssi.org/documentation/scripting/>
+
+.. no, the docs end here, I got bored of writing these after a few days and
+haven't touched these since then.
diff --git a/docs/meson.build b/docs/meson.build
new file mode 100644
index 0000000..a58faed
--- /dev/null
+++ b/docs/meson.build
@@ -0,0 +1,18 @@
+install_data(
+ files(
+ 'capsicum.txt',
+ 'design.html',
+ 'design.txt',
+ 'faq.html',
+ 'faq.txt',
+ 'formats.txt',
+ 'manual.txt',
+ 'perl.txt',
+ 'signals.txt',
+ 'special_vars.txt',
+ 'startup-HOWTO.html',
+ 'startup-HOWTO.txt',
+ ),
+ install_dir : docdir)
+
+subdir('help')
diff --git a/docs/perl.txt b/docs/perl.txt
new file mode 100644
index 0000000..761b2f4
--- /dev/null
+++ b/docs/perl.txt
@@ -0,0 +1,1203 @@
+ Installation problems
+ ---------------------
+
+You'll need to have perl support compiled with irssi. If "/LOAD"
+doesn't show perl in list of loaded modules, you have a problem. See
+INSTALL file for information about perl problems.
+
+
+ Running scripts
+ ---------------
+
+Scripts are run with /SCRIPT LOAD command, or the default /RUN alias.
+"/SCRIPT" shows list of running scripts, and /SCRIPT UNLOAD can unload
+scripts.
+
+Scripts should be placed to ~/.irssi/scripts/ or
+/usr/local/lib/irssi/scripts/ (or depending on where irssi was
+installed) directories. After that /RUN script_name should work, you
+don't need to add the .pl suffix.
+
+
+ Irssi's signals
+ ---------------
+
+Irssi is pretty much based on sending and handling different signals.
+Like when you receive a message from server, say
+
+ :nick!user@there.org PRIVMSG you :blahblah
+
+Irssi will first send a signal:
+
+ "server incoming", SERVER_REC, "nick!user@there PRIVMSG ..."
+
+You probably don't want to use this signal. Default handler for this
+signal interprets the header and sends a signal:
+
+ "server event", SERVER_REC, "PRIVMSG ...", "nick", "user@there.org"
+
+You probably don't want to use this either, since this signal's default
+handler parses the event string and sends a signal:
+
+ "event privmsg", SERVER_REC, "you :blahblah", "nick", "user@there.org"
+
+You can at any point grab the signal, do whatever you want to do with
+it and optionally stop it from going any further by calling
+Irssi::signal_stop();
+
+For example:
+
+ sub event_privmsg {
+ # $data = "nick/#channel :text"
+ my ($server, $data, $nick, $address) = @_;
+ my ($target, $text) = split(/ :/, $data, 2);
+
+ Irssi::signal_stop() if ($text =~ /free.*porn/ || $nick =~ /idiot/);
+ }
+
+Irssi::signal_add("event privmsg", "event_privmsg")
+
+This will hide all public or private messages that match the regexp
+"free.*porn" or the sender's nick contain the word "idiot". Yes, you
+could use /IGNORE instead for both of these :)
+
+You can also use signal_add_last() if you wish to let the Irssi's internal
+functions be run before yours.
+
+A list of signals that irssi sends can be found from signals.txt file.
+
+
+ Creating/replacing /COMMANDS
+ ----------------------------
+
+You can create your own commands, or replace existing ones with
+Irssi::command_bind(). The command handling work internally pretty much
+the same as signal handlers, so if you replace existing command and don't
+wish to let it run, call Irssi::signal_stop().
+
+Here's an example:
+
+ # Usage: /HELLO [<nick>]
+ sub cmd_hello {
+ # data - contains the parameters for /HELLO
+ # server - the active server in window
+ # witem - the active window item (eg. channel, query)
+ # or undef if the window is empty
+ my ($data, $server, $witem) = @_;
+
+ if (!$server || !$server->{connected}) {
+ Irssi::print("Not connected to server");
+ return;
+ }
+
+ if ($data) {
+ $server->command("MSG $data Hello!");
+ } elsif ($witem && ($witem->{type} eq "CHANNEL" ||
+ $witem->{type} eq "QUERY")) {
+ # there's query/channel active in window
+ $witem->command("MSG ".$witem->{name}." Hello!");
+ } else {
+ Irssi::print("Nick not given, and no active channel/query in window");
+ }
+ }
+
+ Irssi::command_bind('hello', 'cmd_hello');
+
+
+ Message levels
+ --------------
+
+Several functions expect message levels. They're used to roughly
+classify messages. They're used by a lot of things including logging,
+ignoring, highlighting, etc. so you should use as good level as
+possible. It's possible to have several levels in one message, like
+ACTIONS+PUBLIC or ACTIONS+MSGS.
+
+Here's all the levels that irssi supports currently:
+
+ CRAP, MSGS, PUBLIC, NOTICES, SNOTES, CTCPS, ACTIONS, JOINS, PARTS
+ QUITS, KICKS, MODES, TOPICS, WALLOPS, INVITES, NICKS, DCC, DCCMSGS,
+ CLIENTNOTICE, CLIENTCRAP, CLIENTERROR
+
+And a few special ones that could be included with the levels above:
+
+ HILIGHT - text is highlighted
+ NOHILIGHT - don't check highlighting for this message
+ NO_ACT - don't trigger channel activity when printing this message
+ NEVER - never ignore or log this message (not a good idea usually)
+
+You can use them with a MSGLEVEL_ prefix, for example:
+
+ $server->print("#channel", 'Hello, world', MSGLEVEL_CLIENTCRAP);
+
+Writes text to #channel window with CLIENTCRAP level.
+
+
+ Window items
+ ------------
+
+Meaning of "window" should be pretty clear, but "window item" is
+something I couldn't really figure out a better name for :) They're
+simply something that's inside a window, a channel or a query usually.
+Windows can have multiple items inside them. It's possible to create
+non-channel/query window items too, currently the third possible window
+item is created by /EXEC -interactive.
+
+In scripts, I think you can quite safely assume that the window item is
+query or channel if the script is intended to be run in one of them.
+Stupid users won't probably have other window items, and smart users
+know where to run the script, or at least later figure out why it
+didn't work :)
+
+
+ Functions that you can use in Irssi's Perl scripts
+ --------------------------------------------------
+
+If there's a "Xxxx::" text before the command, it means that it belongs to
+that package. Like "Server::command" means that you should either call it as
+ Irssi::Server::command($server, $cmd);
+or more easily:
+ $server->command($cmd);
+
+Commands that don't have the Xxxx prefix are called as Irssi::command();
+
+Information from most objects can be fetched with $object->{data}, for
+example current nick in server could be read with $server->{nick}. List
+of all the information that are in objects are in "Object->{}" sections
+below.
+
+Commands are split in two groups, generic ones that could be used with
+any chat protocol, and IRC specific commands. If you want to use IRC
+specific commands, or use IRC specific ->{data} in your scripts, you'll
+need to add "use Irssi::Irc" to your scripts. IRC specific commands are
+listed after the generic ones.
+
+
+ *** General
+
+Window active_win() - return active window
+Server active_server() - return server in active window
+
+get_irssi_dir() - returns the absolute path to the user configuration
+ directory - either the value passed to --home at startup, or ~/.irssi
+
+windows() - return list of all windows
+servers() - return list of all servers
+reconnects() - return list of all server reconnections
+channels() - return list of all channels
+queries() - return list of all queries
+commands() - return list of all commands
+logs() - return list of all log files
+ignores() - returns list of all ignores
+
+Server::channels() - return list of channels in server
+Server::queries() - return list of queries in server
+
+print(str[, level])
+Server::print(channel, str[, level])
+Window::print(str[, level])
+Windowitem::print(str[, level])
+ Print `str'. Default level is MSGLEVEL_CLIENTNOTICE.
+
+command(cmd)
+Server::command(cmd)
+Window::command(cmd)
+Windowitem::command(cmd)
+ Send a command `cmd' (in current channel). The '/' char isn't needed.
+
+
+ *** Themes
+
+You can have user configurable texts in scripts that work just like
+irssi's internal texts that can be changed in themes.
+
+First you'll have to register the formats:
+
+Irssi::theme_register([
+ 'format_name', '{hilight my perl format!}',
+ 'format2', 'testing.. nick = $0, channel = $1'
+]);
+
+Printing happens with one of the functions:
+
+printformat(level, format, ...)
+Window::printformat(level, format, ...)
+Server::printformat(target, level, format, ...)
+Windowitem::printformat(level, format, ...)
+
+For example:
+
+ $channel->printformat(MSGLEVEL_CRAP, 'format2',
+ 'nick', $channel->{name});
+
+
+ *** Settings
+
+settings_get_str(key)
+settings_get_int(key)
+settings_get_bool(key)
+settings_get_time(key)
+settings_get_level(key)
+settings_get_size(key)
+ Return value for setting.
+
+settings_set_str(key, value)
+settings_set_int(key, value)
+settings_set_bool(key, value)
+settings_set_time(key, value)
+settings_set_level(key, value)
+settings_set_size(key, value)
+ Set value for setting.
+ If you change the settings of another module/script with one of these, you
+ must emit a "setup changed" signal afterwards.
+
+settings_add_str(section, key, def)
+settings_add_int(section, key, def)
+settings_add_bool(section, key, def)
+settings_add_time(section, key, def)
+settings_add_level(section, key, def)
+settings_add_size(section, key, def)
+ Create new setting.
+
+settings_remove(key)
+ Remove a setting.
+
+
+ *** Signals
+
+signal_emit(signal, ...)
+ Send signal `signal'. You can give 6 parameters at maximum.
+
+signal_continue(...)
+ Continue currently emitted signal with different parameters.
+
+signal_add(signal, func)
+ Bind `signal' to function `func'.
+
+signal_add_first(signal, func)
+ Bind `signal' to function `func'. Call `func' as soon as possible.
+
+signal_add_last(signal, func)
+ Bind `signal' to function `func'. Call `func' as late as possible.
+
+signal_remove(signal, func)
+ Unbind `signal' from function `func'.
+
+signal_stop()
+ Stop the signal that's currently being emitted.
+
+signal_stop_by_name(signal)
+ Stop the signal with name `signal' that's currently being emitted.
+
+signal_register(hash)
+ Register parameter types for one or more signals.
+ `hash' must map one or more signal names to references to arrays
+ containing 0 to 6 type names. Some recognized type names include
+ int for integers, intptr for references to integers and string for
+ strings. For all standard signals see src/perl/perl-signals-list.h
+ in the source code (this is generated by src/perl/get-signals.pl).
+
+ Any signals that were already registered are unaffected.
+
+ Registration is required to get any parameters to signals written in
+ Perl and to emit and continue signals from Perl.
+
+ *** timeouts / IO listener / pidwait
+
+timeout_add(msecs, func, data)
+ Call `func' every `msecs' milliseconds (1000 = 1 second) with
+ parameter `data'. Returns tag which can be used to stop the timeout.
+
+timeout_add_once(msecs, func, data);
+ Call `func' once after `msecs' milliseconds (1000 = 1 second)
+ with parameter `data'. Returns tag which can be used to stop the timeout.
+
+timeout_remove(tag)
+ Remove timeout with tag.
+
+input_add(source, condition, func, data)
+ Call `func' with parameter `data' when specified IO happens.
+ `source' is the file handle that is being listened. `condition' can
+ be INPUT_READ, INPUT_WRITE or both. Returns tag which can be used to
+ remove the listener.
+
+input_remove(tag)
+ Remove listener with tag.
+
+pidwait_add(pid)
+ Adds `pid' to the list of processes to wait for. The pid must identify
+ a child process of the irssi process. When the process terminates, a
+ "pidwait" signal will be sent with the pid and the status from
+ waitpid(). This is useful to avoid zombies if your script forks.
+
+pidwait_remove(pid)
+ Removes `pid' from the list of processes to wait for. Terminated
+ processes are removed automatically, so it is usually not necessary
+ to call this function.
+
+ *** Message levels
+
+level2bits(level)
+ Level string -> number
+
+bits2level(bits)
+ Level number -> string
+
+combine_level(level, str)
+ Combine level number to level string ("+level -level").
+ Return new level number.
+
+
+ *** Commands
+
+Command->{}
+ cmd - Command name
+ category - Category
+
+command_bind(cmd, func[, category])
+ Bind command `cmd' to call function `func'. `category' is the
+ category where the command is displayed in /HELP.
+
+command_runsub(cmd, data, server, item)
+ Run subcommands for `cmd'. First word in `data' is parsed as
+ subcommand. `server' is Irssi::Server rec for current
+ Irssi::Windowitem `item'.
+
+ Call command_runsub in handler function for `cmd' and bind
+ with command_bind("`cmd' `subcmd'", subcmdfunc[, category]);
+
+command_unbind(cmd, func)
+ Unbind command `cmd' from function `func'.
+
+command_set_options(cmd, data)
+ Set options for command `cmd' to `data'. `data' is a string of
+ space separated words which specify the options. Each word can be
+ optionally prefixed with one of the following character:
+
+ '-': optional argument
+ '+': argument required
+ '@': optional numeric argument
+
+command_parse_options(cmd, data)
+ Parse options for command `cmd' in `data'. It returns a reference to
+ an hash table with the options and a string with the remaining part
+ of `data'. On error it returns the undefined value.
+
+
+ *** Windows
+
+UI::Window->{}
+ refnum - Reference number
+ name - Name
+
+ width - Width
+ height - Height
+
+ history_name - Name of named historylist for this window
+
+ active - Active window item
+ active_server - Active server
+
+ servertag - active_server must be either undef or have this same tag
+ (unless there's items in this window). This is used by
+ /WINDOW SERVER -sticky
+ level - Current window level
+
+ sticky_refnum - 1 if reference number is sticky
+
+ data_level - Current data level
+ hilight_color - Current activity hilight color
+
+ last_timestamp - Last time timestamp was written in window
+ last_line - Last time text was written in window
+
+ theme_name - Active theme in window, undef = default
+
+UI::TextDest->{}
+ window - Window where the text will be written
+ server - Target server
+ target - Target channel/query/etc name
+ level - Text level
+
+ hilight_priority - Priority for the hilighted text
+ hilight_color - Color for the hilighted text
+
+
+Window::items()
+ Return a list of items in window.
+
+Window
+window_create(automatic)
+Windowitem::window_create(automatic)
+ Create a new window.
+
+Window::destroy()
+ Destroy the window.
+
+Irssi::Window
+Windowitem::window()
+ Returns parent window for window item.
+
+Window
+window_find_name(name)
+ Find window with name.
+
+Window
+window_find_refnum(refnum)
+ Find window with reference number.
+
+Window
+window_find_level(level)
+Server::window_find_level(level)
+ Find window with level.
+
+Window
+window_find_closest(name, level)
+Server::window_find_closest(name, level)
+ Find window that matches best to given arguments. `name' can be either
+ window name or name of one of the window items.
+
+Window
+window_find_item(name)
+Server::window_find_item(name)
+ Find window which contains window item with specified name/server.
+
+Windowitem
+window_item_find(name)
+Server::window_item_find(name)
+Window::item_find(server, name)
+ Find window item that matches best to given arguments.
+
+window_refnum_prev(refnum, wrap)
+window_refnum_next(refnum, wrap)
+ Return refnum for window that's previous/next in windows list.
+
+windows_refnum_last()
+ Return refnum for last window.
+
+Window::item_add(item, automatic)
+Window::item_remove(item)
+Window::item_destroy(item)
+ Add/remove/destroy window item
+
+Window::set_active()
+ Set window active.
+
+Window::change_server(server)
+Window::set_refnum(refnum)
+Window::set_name(name)
+Window::set_history(name)
+Window::set_level(level)
+ Change server/refnum/name/history/level in window.
+
+Windowitem::set_active()
+ Change window item active in parent window.
+
+Window::item_prev()
+Window::item_next()
+ Change to previous/next window item.
+
+Windowitem::change_server(server)
+ Change server in window item.
+
+Windowitem::is_active()
+ Returns 1 if window item is the active item in parent window.
+
+Window::get_active_name()
+ Return active item's name, or if none is active, window's name
+
+
+ *** Server Connects
+
+Connect->{}
+ type - "SERVER CONNECT" text
+ chat_type - String ID of chat protocol, for example "IRC"
+
+ address - Address where we connected (irc.blah.org)
+ port - Port where we connected
+ chatnet - Chat network
+
+ password - Password we used in connection.
+ wanted_nick - Nick which we would prefer to use
+ username - User name
+ realname - Real name
+
+Connect
+server_create_conn(address[, port=6667[, password=''[, nick=''[, channels='']]]])
+ Create new server connection.
+
+
+ *** Server functions
+
+Server->{}
+ type - "SERVER" text
+ chat_type - String ID of chat protocol, for example "IRC"
+
+ (..contains all the same data as Connect above..)
+
+ connect_time - Time when connect() to server finished
+ real_connect_time - Time when server sent "connected" message
+
+ tag - Unique server tag
+ nick - Current nick
+
+ connected - Is connection finished? 1|0
+ connection_lost - Did we lose the connection (1) or was
+ the connection just /DISCONNECTed (0)
+
+ rawlog - Rawlog object for the server
+
+ version - Server version
+ last_invite - Last channel we were invited to
+ server_operator - Are we server operator (IRC op) 1|0
+ usermode_away - Are we marked as away? 1|0
+ away_reason - Away reason message
+ banned - Were we banned from this server? 1|0
+ lag - Current lag to server in milliseconds
+
+Server
+Connect::connect()
+ Connect to server.
+
+Server::disconnect()
+ Disconnect from server.
+
+Server
+server_find_tag(tag)
+ Find server with tag
+
+Server
+server_find_chatnet(chatnet)
+ Find first server that is in `chatnet'
+
+Server::isnickflag(flag)
+ Returns 1 if flag is a nick mode flag (@, + or % in IRC)
+
+Server::ischannel(data)
+ Returns 1 if start of `data' seems to mean channel.
+
+Server::get_nick_flags()
+ Returns nick flag characters in order: op, voice, halfop ("@+%" in IRC).
+
+Server::send_message(target, msg, target_type)
+ Sends a message to nick/channel. target_type 0 = channel, 1 = nick
+
+
+ *** Server reconnections
+
+Reconnect->{}
+ type - "RECONNECT" text
+ chat_type - String ID of chat protocol, for example "IRC"
+
+ (..contains all the same data as Connect above..)
+
+ tag - Unique numeric tag
+ next_connect - Unix time stamp when the next connection occurs
+
+
+ *** Chat networks
+
+Chatnet->{}
+ type - "CHATNET" text
+ chat_type - String ID of chat protocol, for example "IRC"
+
+ name - name of chat network
+
+ nick - if not empty, nick preferred in this network
+ username - if not empty, username preferred in this network
+ realname - if not empty, realname preferred in this network
+
+ own_host - address to use when connecting this network
+ autosendcmd - command to send after connecting to this network
+
+chatnet_find(name)
+ Find chat network with name.
+
+
+ *** Server redirections
+
+This is a powerful feature of Irssi that I haven't seen in other IRC
+clients. You can EASILY grab the server's reply for a command you send
+to server without any horrible kludges.
+
+redirect_register(command, remote, timeout, start, stop, opt)
+ Register new redirection command. By default irssi has already
+ registered at least: whois, whowas, who, list, ison, userhost, ping,
+ "mode channel" (/MODE #channel), "mode b" (/MODE #channel b), "mode e"
+ and "mode I".
+
+ `command' specifies the name of the command to register, it doesn't
+ have to be a real command name, but something you just specify to
+ redirect_event() when using this redirection.
+
+ `remote' specifies if the command is by default a remote command
+ (eg. sent to another server). redirect_event() may override this.
+
+ `timeout' - If remote is TRUE, specifies how many seconds to wait for
+ reply before aborting.
+
+ `start', `stop', `opt' - hash references with "event" => argpos entries.
+ List of events that start and stop this redirection.
+ Start event list may be empty, but there must be at least one
+ stop event. Optional events are checked only if they are received
+ immediately after one of the stop-events. `argpos' specifies the
+ word number in event string which is compared to wanted argument,
+ -1 = don't compare, TRUE always.
+
+ Example (already done by irssi):
+
+ Irssi::redirect_register('mode channel', 0, 0,
+ undef, # no start events
+ { # stop events
+ "event 324" => 1, # MODE-reply
+ "event 403" => 1, # no such channel
+ "event 442" => 1, # "you're not on that channel"
+ "event 479" => 1 # "Cannot join channel (illegal name)"
+ }, { # optional events
+ "event 329", 1 # Channel create time
+ } );
+
+Server::redirect_event(command, count, arg, remote, failure_signal, signals)
+ Specify that the next command sent to server will be redirected.
+ NOTE: This command MUST be called before sending the command to server.
+
+ `command' - Name of the registered redirection that we're using.
+
+ `count' - How many times to execute the redirection. Some commands may
+ send multiple stop events, like MODE #a,#b.
+
+ `arg' - The argument to be compared in event strings. You can give multiple
+ arguments separated with space.
+
+ `remote' - Specifies if the command is a remote command, -1 = use default.
+
+ `failure_signal' - If irssi can't find the stop signal for the redirection,
+ this signal is called.
+
+ `signals' - hash reference with "event" => "redir signal" entries.
+ If the event is "", all the events belonging to the redirection but not
+ specified here, will be sent there.
+
+ Example:
+
+ # ignore all events generated by whois query, except 311.
+ $server->redirect_event("whois", 1, "cras", 0, undef, {
+ "event 311" => "redir whois",
+ "" => "event empty" });
+ $server->send_raw("WHOIS :cras");
+
+
+ *** Window items
+
+Windowitem->{}
+ type - Type of the window item, for example "CHANNEL" or "QUERY"
+ chat_type - String ID of chat protocol, for example "IRC"
+
+ server - Active server for item
+ name - Name of the item
+
+ createtime - Time the window item was created
+ data_level - 0=no new data, 1=text, 2=msg, 3=highlighted text
+ hilight_color - Color of the last highlighted text
+
+
+ *** Channels
+
+Channel->{}
+ type - "CHANNEL" text
+ chat_type - String ID of chat protocol, for example "IRC"
+
+ (..contains all the same data as Windowitem above..)
+
+ topic - Channel topic
+ topic_by - Nick who set the topic
+ topic_time - Timestamp when the topic was set
+
+ no_modes - Channel is modeless
+ mode - Channel mode
+ limit - Max. users in channel (+l mode)
+ key - Channel key (password)
+
+ chanop - You are channel operator
+ names_got - /NAMES list has been received
+ wholist - /WHO list has been received
+ synced - Channel is fully synchronized
+
+ joined - JOIN event for this channel has been received
+ left - You just left the channel (for "channel destroyed" event)
+ kicked - You was just kicked out of the channel (for
+ "channel destroyed" event)
+
+Server::channels_join(channels, automatic)
+ Join to channels in server. `channels' may also contain keys for
+ channels just like with /JOIN command. `automatic' specifies if this
+ channel was joined "automatically" or if it was joined because join
+ was requested by user. If channel join is "automatic", irssi doesn't
+ jump to the window where the channel was joined.
+
+
+Channel::destroy()
+ Destroy channel.
+
+Channel
+channel_find(channel)
+ Find channel from any server.
+
+Channel
+Server::channel_find(channel)
+ Find channel from specified server.
+
+
+ *** Nick list
+
+Nick->{}
+ type - "NICK" text
+ chat_type - String ID of chat protocol, for example "IRC"
+
+ nick - Plain nick
+ host - Host address
+ realname - Real name
+ hops - Hop count to the server the nick is using
+
+ gone, serverop - User status, 1 or 0
+ op, voice, halfop - Channel status, 1 or 0
+
+ last_check - timestamp when last checked gone/ircop status.
+ send_massjoin - Waiting to be sent in a "massjoin" signal, 1 or 0
+
+Nick
+Channel::nick_insert(nick, op, voice, send_massjoin)
+ Add nick to nicklist.
+
+Channel::nick_remove(nick)
+ Remove nick from nicklist.
+
+Nick
+Channel::nick_find(nick)
+ Find nick from nicklist.
+
+Nick
+Channel::nick_find_mask(mask)
+ Find nick mask from nicklist, wildcards allowed.
+
+Channel::nicks()
+ Return a list of all nicks in channel.
+
+Server::nicks_get_same(nick)
+ Return all nick objects in all channels in server. List is in format:
+ Channel, Nick, Channel, ...
+
+
+ *** Queries
+
+Query->{}
+ type - "QUERY" text
+ chat_type - String ID of chat protocol, for example "IRC"
+
+ (..contains all the same data as Windowitem above..)
+
+ address - Host address of the queries nick
+ server_tag - Server tag used for this nick (doesn't get erased if
+ server gets disconnected)
+ unwanted - 1 if the other side closed or some error occurred (DCC chats)
+
+Query
+query_create(chat_type, server_tag, nick, automatic)
+ Create a new query.
+
+Query::destroy()
+ Destroy the query.
+
+Query::query_change_server(server)
+ Change the active server of the query.
+
+Query
+query_find(nick)
+ Find query from any server.
+
+Query
+Server::query_find(nick)
+ Find query from specified server.
+
+
+ *** Masks
+
+You should use the Server version of the function if possible, since
+with different chat protocols the mask matching could be different.
+
+mask_match(mask, nick, user, host)
+Server::mask_match(mask, nick, user, host)
+ Return 1 if `mask' matches nick!user@host.
+
+mask_match_address(mask, nick, address)
+Server::mask_match_address(mask, nick, address)
+ Return 1 if `mask' matches nick!address.
+
+masks_match(masks, nick, address)
+Server::masks_match(masks, nick, address)
+ Return 1 if any mask in the `masks' (string separated with spaces)
+ matches nick!address.
+
+
+ *** Rawlog
+
+Rawlog->{}
+ logging - The rawlog is being written to file currently
+ nlines - Number of lines in rawlog
+
+Rawlog
+rawlog_create()
+ Create a new rawlog.
+
+Rawlog::destroy()
+ Destroy the rawlog.
+
+Rawlog::get_lines()
+ Returns all lines in rawlog.
+
+rawlog_set_size(lines)
+ Set the default rawlog size for new rawlogs.
+
+Rawlog::open(filename)
+ Start logging new messages in rawlog to specified file.
+
+Rawlog::close()
+ Stop logging to file.
+
+Rawlog::save(filename)
+ Save the current rawlog history to specified file.
+
+Rawlog::input(str)
+ Send `str' to raw log as input text.
+
+Rawlog::output(str)
+ Send `str' to raw log as output text.
+
+Rawlog::redirect(str)
+ Send `str' to raw log as redirection text.
+
+
+ *** Logging
+
+Log->{}
+ fname - Log file name
+ real_fname - The actual opened log file (after %d.%m.Y etc. are expanded)
+ opened - Log file is open
+ level - Log only these levels
+ last - Timestamp when last message was written
+ autoopen - Automatically open log at startup
+ failed - Opening log failed last time
+ temp - Log isn't saved to config file
+ items - List of log items
+
+Logitem->{}
+ type - 0=target, 1=window refnum
+ name - Name
+ servertag - Server tag
+
+Log
+log_create_rec(fname, level)
+ Create log file.
+
+Log::update()
+ Add log to list of logs / save changes to config file.
+
+Log
+log_find(fname)
+ Find log with file name.
+
+Log::close()
+ Destroy log file.
+
+Log::start_logging()
+ Open log file and start logging.
+
+Log::stop_logging()
+ Close log file.
+
+Log::item_add(type, name, server)
+ Add log item to log.
+
+Log::item_destroy(item)
+ Remove log item from log.
+
+Logitem
+Log::item_find(type, item, server)
+ Find item from log.
+
+
+ *** Ignores
+
+Ignore->{}
+ mask - Ignore mask
+ servertag - Ignore only in server
+ channels - Ignore only in channels (list of names)
+ pattern - Ignore text pattern
+
+ level - Ignore level
+
+ exception - This is an exception ignore
+ regexp - Regexp pattern matching
+ fullword - Pattern matches only full words
+
+ignore_add_rec(ignore)
+ Add ignore record.
+
+ignore_update_rec(ignore)
+ Update ignore record in configuration
+
+ignore_check(nick, host, channel, text, level)
+Server::ignore_check(nick, host, channel, text, level)
+ Return 1 if ignoring matched.
+
+
+ *** /EXEC processes
+
+Process->{}
+ id - ID for the process
+ name - Name for the process (if given)
+ args - The command that is being executed
+
+ pid - PID for the executed command
+ target - send text with /msg <target> ...
+ target_win - print text to this window
+
+ shell - start the program via /bin/sh
+ notice - send text with /notice, not /msg if target is set
+ silent - don't print "process exited with level xx"
+
+
+ ***
+ *** IRC specific functions. All objects below this are prefixed with Irc::
+ ***
+
+ *** IRC servers
+
+Irc::Server->{}
+ (..contains all the same data as core Server object..)
+ real_address - Address the IRC server gives
+ usermode - User mode in server
+ userhost - Your user host in server
+
+Irc::Connect->{}
+ (..contains all the same data as core Connect object..)
+ alternate_nick - Alternate nick to use if default nick is taken.
+
+Connect::connect()
+ Connect to IRC server.
+
+Server::get_channels(server)
+ Return a string of all channels (and keys, if any have them) in server,
+ like "#a,#b,#c,#d x,b_chan_key,x,x" or just "#e,#f,#g"
+
+Server::send_raw(cmd)
+ Send raw message to server, it will be flood protected so you
+ don't need to worry about it.
+
+Server::send_raw_now(cmd)
+ Send raw message to server immediately without flood protection.
+
+Server::send_raw_split(cmd, nickarg, max_nicks)
+ Split the `cmd' into several commands so `nickarg' argument has only
+ `max_nicks' number of nicks.
+
+ Example:
+ $server->send_raw_split("KICK #channel nick1,nick2,nick3 :byebye", 3, 2);
+
+ Irssi will send commands "KICK #channel nick1,nick2 :byebye" and
+ "KICK #channel nick3 :byebye" to server.
+
+Server::ctcp_send_reply(data)
+ Send CTCP reply. This will be "CTCP flood protected" so if there's too
+ many CTCP requests in buffer, this reply might not get sent. The data
+ is the full raw command to be sent to server, like
+ "NOTICE nick :\001VERSION irssi\001"
+
+Server::isupport(name)
+ Returns the value of the named item in the ISUPPORT (005) numeric to the
+ script. If the item is not present returns undef, if the item has no value
+ then "" is returned use defined $server->isupport("name") if you need to
+ check whether a property is present.
+ See http://tools.ietf.org/id/draft-brocklesby-irc-isupport-03.txt
+ for more information on the ISUPPORT numeric.
+
+ *** IRC channels
+
+Ban->{}
+ ban - The ban
+ setby - Nick of who set the ban
+ time - Timestamp when ban was set
+
+Channel::bans()
+ Return a list of bans in channel.
+
+Channel::ban_get_mask(nick)
+ Get ban mask for `nick'.
+
+Channel::banlist_add(ban, nick, time)
+ Add a new ban to channel.
+
+Channel::banlist_remove(ban)
+ Remove a ban from channel.
+
+
+ *** DCC
+
+Dcc->{}
+ type - Type of the DCC: chat, send, get
+ orig_type - Original DCC type that was sent to us - same as type except
+ GET and SEND are swapped
+ created - Time stamp when the DCC record was created
+
+ server - Server record where the DCC was initiated.
+ servertag - Tag of the server where the DCC was initiated.
+ mynick - Our nick to use in DCC chat.
+ nick - Other side's nick name.
+
+ chat - Dcc chat record if the request came through DCC chat
+ target - Who the request was sent to - your nick, channel or empty
+ if you sent the request
+ arg - Given argument .. file name usually
+
+ addr - Other side's IP address.
+ port - Port we're connecting in.
+
+ starttime - Unix time stamp when the DCC transfer was started
+ transfd - Bytes transferred
+
+Dcc::Chat->{}
+ id - Unique identifier - usually same as nick
+ mirc_ctcp - Send CTCPs without the CTCP_MESSAGE prefix
+ connection_lost - Other side closed connection
+
+Dcc::Get->{}
+ (..contains all the same data as core Dcc object..)
+ size - File size
+ skipped - Bytes skipped from start (resuming file)
+
+ get_type - What to do if file exists? 0=default, 1=rename, 2=overwrite,
+ 3=resume
+ file - The real file name which we use.
+ file_quoted - 1 if file name was received quoted ("file name")
+
+Dcc::Send->{}
+ (..contains all the same data as core Dcc object..)
+ size - File size
+ skipped - Bytes skipped from start (resuming file)
+
+ file_quoted - 1 if file name was received quoted ("file name")
+ waitforend - File is sent, just wait for the replies from the other side
+ gotalldata - Got all acks from the other end
+
+
+dccs() - return list of all dcc connections
+
+Dcc::destroy()
+ Destroy DCC connection.
+
+Dcc
+dcc_find_item(type, nick, arg)
+ Find DCC connection.
+
+Dcc
+dcc_find_by_port(nick, port)
+ Find DCC connection by port.
+
+Dcc
+Windowitem::get_dcc(item)
+ If `item' is a query of a =nick, return DCC chat record of nick.
+
+Dcc::chat_send(data)
+ Send `data' to dcc chat.
+
+Server::dcc_ctcp_message(target, notice, msg)
+Dcc::ctcp_message(target, notice, msg)
+ Send a CTCP message/notify to target.
+
+
+ *** Netsplits
+
+Netsplit->{}
+ nick - Nick
+ address - Nick's host
+ destroy - Timestamp when this record should be destroyed
+ server - Netsplitserver object
+ channels - list of channels (Netsplitchannel objects) the nick was in
+
+Netsplitserver->{}
+ server - The server nick was in
+ destserver - The other server where split occurred.
+ count - Number of splits in server
+
+Netsplitchannel->{}
+ name - Channel name
+ nick - Nick object
+
+Netsplit
+Server::netsplit_find(nick, address)
+ Check if nick!address is on the other side of netsplit. Netsplit records
+ are automatically removed after 30 minutes (current default)..
+
+Nick
+Server::netsplit_find_channel(nick, address, channel)
+ Find nick record for nick!address in channel `channel'.
+
+
+ *** Notify list
+
+Notifylist->{}
+ mask - Notify nick mask
+ away_check - Notify away status changes
+ idle_check_time - Notify when idle time is reset and idle was bigger
+ than this (seconds)
+ ircnets - List of ircnets (strings) the notify is checked
+
+notifies() - Return list of all notifies
+
+Notifylist
+notifylist_add(mask, ircnets, away_check, idle_check_time)
+ Add new item to notify list.
+
+notifylist_remove(mask)
+ Remove item from notify list.
+
+Notifylist
+notifylist_find(mask, ircnet)
+ Find notify.
+
+Server
+notifylist_ison(nick, serverlist)
+ Check if `nick' is in IRC. `serverlist' is a space separated
+ list of server tags. If it's empty string, all servers will be checked.
+
+Server::notifylist_ison_server(nick)
+ Check if `nick' is on IRC server.
+
+Notifylist::ircnets_match(ircnet)
+ Returns 1 if notify is checked in `ircnet'.
+
+ *** Proxy clients
+
+Client->{}
+ nick - nick of the client
+ host - host of the client
+ proxy_address - address of the proxy server
+ server - Irc::Server for which we proxy to this client
+ pass_sent - whether the client already send a PASS command
+ user_sent - whether the client already send a USER command
+ connected - whether the client is connected and ready
+ want_ctcp - whether the client wants to receive CTCPs
+ ircnet - network tag of the network we proxy
+
+
+
+
+ Bugs and Limitations
+ --------------------
+* Calling die in 'script error' handler causes segfault (#101)
+* Calling "script unload" from your own script causes segfault
+* Storing and later using any Irssi object may result in use-after-free related crash
+ - Workaround: always acquire fresh objects
+* Calling $dcc->close from the "dcc created" signal will cause unstable behaviour and crashes (#386)
+ - Workaround: use "dcc request" signal instead AND call
+ &Irssi::signal_continue(@_); as the first thing
diff --git a/docs/signals.txt b/docs/signals.txt
new file mode 100644
index 0000000..81a1e3f
--- /dev/null
+++ b/docs/signals.txt
@@ -0,0 +1,375 @@
+List of signals irssi emits - see design.txt for more information about
+signals.
+
+core
+----
+
+* Requires to work properly:
+
+ "gui exit"
+ "gui dialog", char *type, char *text
+ "send command", char *command, SERVER_REC, WI_ITEM_REC
+
+* Provides signals:
+
+chat-protocols.c:
+ "chat protocol created", CHAT_PROTOCOL_REC
+ "chat protocol updated", CHAT_PROTOCOL_REC
+ "chat protocol destroyed", CHAT_PROTOCOL_REC
+
+channels.c:
+ "channel created", CHANNEL_REC, int automatic
+ "channel destroyed", CHANNEL_REC
+
+chatnets.c:
+ "chatnet created", CHATNET_REC
+ "chatnet destroyed", CHATNET_REC
+
+commands.c:
+ "commandlist new", COMMAND_REC
+ "commandlist remove", COMMAND_REC
+ "error command", int err, char *cmd
+
+ "send command", char *args, SERVER_REC, WI_ITEM_REC
+ "send text", char *line, SERVER_REC, WI_ITEM_REC
+ "command "<cmd>, char *args, SERVER_REC, WI_ITEM_REC
+ "default command", char *args, SERVER_REC, WI_ITEM_REC
+
+ignore.c:
+ "ignore created", IGNORE_REC
+ "ignore destroyed", IGNORE_REC
+ "ignore changed", IGNORE_REC
+
+log.c:
+ "log new", LOG_REC
+ "log remove", LOG_REC
+ "log create failed", LOG_REC
+ "log locked", LOG_REC
+ "log started", LOG_REC
+ "log stopped", LOG_REC
+ "log rotated", LOG_REC
+ "log written", LOG_REC, char *line
+
+modules.c:
+ "module loaded", MODULE_REC, MODULE_FILE_REC
+ "module unloaded", MODULE_REC, MODULE_FILE_REC
+ "module error", int error, char *text, char *rootmodule, char *submodule
+
+network-openssl.c:
+ "tls handshake finished", SERVER_REC, TLS_REC
+
+nicklist.c:
+ "nicklist new", CHANNEL_REC, NICK_REC
+ "nicklist remove", CHANNEL_REC, NICK_REC
+ "nicklist changed", CHANNEL_REC, NICK_REC, char *old_nick
+ "nicklist host changed", CHANNEL_REC, NICK_REC
+ "nicklist account changed", CHANNEL_REC, NICK_REC, char *account
+ "nicklist gone changed", CHANNEL_REC, NICK_REC
+ "nicklist serverop changed", CHANNEL_REC, NICK_REC
+
+pidwait.c:
+ "pidwait", int pid, int status
+
+queries.c:
+ "query created", QUERY_REC, int automatic
+ "query destroyed", QUERY_REC
+ "query nick changed", QUERY_REC, char *orignick
+ "window item name changed", WI_ITEM_REC
+ "query address changed", QUERY_REC
+ "query server changed", QUERY_REC, SERVER_REC
+
+rawlog.c:
+ "rawlog", RAWLOG_REC, char *data
+
+server.c:
+ "server looking", SERVER_REC
+ "server connected", SERVER_REC
+ "server connecting", SERVER_REC, ulong *ip
+ "server connect failed", SERVER_REC
+ "server disconnected", SERVER_REC
+ "server quit", SERVER_REC, char *msg
+ "server sendmsg", SERVER_REC, char *target, char *msg, int target_type
+
+settings.c:
+ "setup changed"
+ "setup reread", char *fname
+ "setup saved", char *fname, int autosaved
+
+
+IRC core
+--------
+
+* Provides signals:
+
+bans.c:
+ "ban type changed", char *bantype
+
+channels, nicklist:
+ "channel joined", CHANNEL_REC
+ "channel wholist", CHANNEL_REC
+ "channel sync", CHANNEL_REC
+
+ "channel topic changed", CHANNEL_REC
+
+ctcp.c:
+
+ "ctcp msg", SERVER_REC, char *args, char *nick, char *addr, char *target
+ "ctcp msg "<cmd>, SERVER_REC, char *args, char *nick, char *addr, char *target
+ "default ctcp msg", SERVER_REC, char *args, char *nick, char *addr, char *target
+ "ctcp reply", SERVER_REC, char *args, char *nick, char *addr, char *target
+ "ctcp reply "<cmd>, SERVER_REC, char *args, char *nick, char *addr, char *target
+ "default ctcp reply", SERVER_REC, char *args, char *nick, char *addr, char *target
+ "ctcp action", SERVER_REC, char *args, char *nick, char *addr, char *target
+
+irc-log.c:
+ "awaylog show", LOG_REC, int away_msgs, int filepos
+
+irc-nicklist.c:
+ "server nick changed", SERVER_REC
+
+irc-servers.c:
+ "event connected", SERVER_REC
+
+irc-cap.c
+ "server cap ack "<cmd>, SERVER_REC
+ "server cap nak "<cmd>, SERVER_REC
+ "server cap new "<cmd>, SERVER_REC
+ "server cap delete "<cmd>, SERVER_REC
+ "server cap end", SERVER_REC
+ "server cap req", SERVER_REC, char *caps
+
+sasl.c
+ "server sasl failure", SERVER_REC, char *reason
+ "server sasl success", SERVER_REC
+
+irc.c:
+
+ "server event", SERVER_REC, char *data, char *sender_nick, char *sender_address
+ "server event tags", SERVER_REC, char *data, char *sender_nick, char *sender_address, char *tags
+ "event "<cmd>, SERVER_REC, char *args, char *sender_nick, char *sender_address
+ "default event", SERVER_REC, char *data, char *sender_nick, char *sender_address
+ "whois default event", SERVER_REC, char *args, char *sender_nick, char *sender_address
+
+ "server incoming", SERVER_REC, char *data
+ "server outgoing modify", SERVER_REC, GString *data, int crlf
+
+(for perl parser..)
+ "redir "<cmd>, SERVER_REC, char *args, char *sender_nick, char *sender_address
+
+lag.c:
+ "server lag", SERVER_REC
+ "server lag disconnect", SERVER_REC
+
+massjoin.c:
+ "massjoin", CHANNEL_REC, GSList of NICK_RECs
+
+mode-lists.c:
+ "ban new", CHANNEL_REC, BAN_REC
+ "ban remove", CHANNEL_REC, BAN_REC, char *setby
+
+modes.c:
+ "channel mode changed", CHANNEL_REC, char *setby
+ "nick mode changed", CHANNEL_REC, NICK_REC, char *setby, char *mode, char *type
+ "user mode changed", SERVER_REC, char *old
+ "away mode changed", SERVER_REC
+
+netsplit.c:
+ "netsplit server new", SERVER_REC, NETSPLIT_SERVER_REC
+ "netsplit server remove", SERVER_REC, NETSPLIT_SERVER_REC
+ "netsplit new", NETSPLIT_REC
+ "netsplit remove", NETSPLIT_REC
+
+IRC modules
+-----------
+
+* Provides signals:
+
+dcc*.c:
+
+ "dcc ctcp "<cmd>, char *args, DCC_REC
+ "default dcc ctcp", char *args, DCC_REC
+ "dcc unknown ctcp", char *args, char *sender, char *sendaddr
+
+ "dcc reply "<cmd>, char *args, DCC_REC
+ "default dcc reply", char *args, DCC_REC
+ "dcc unknown reply", char *args, char *sender, char *sendaddr
+
+ "dcc chat message", DCC_REC, char *msg
+
+ "dcc created", DCC_REC
+ "dcc destroyed", DCC_REC
+ "dcc connected", DCC_REC
+ "dcc rejecting", DCC_REC
+ "dcc closed", DCC_REC
+ "dcc request", DCC_REC, char *sendaddr
+ "dcc request send", DCC_REC
+ "dcc chat message", DCC_REC, char *msg
+ "dcc transfer update", DCC_REC
+ "dcc get receive", DCC_REC
+ "dcc error connect", DCC_REC
+ "dcc error file create", DCC_REC, char *filename
+ "dcc error file open", char *nick, char *filename, int errno
+ "dcc error get not found", char *nick
+ "dcc error send exists", char *nick, char *filename
+ "dcc error unknown type", char *type
+ "dcc error close not found", char *type, char *nick, char *filename
+
+autoignore.c:
+
+ "autoignore new", SERVER_REC, AUTOIGNORE_REC
+ "autoignore remove", SERVER_REC, AUTOIGNORE_REC
+
+flood.c:
+
+ "flood", SERVER_REC, char *nick, char *host, int level, char *target
+
+notifylist.c:
+
+ "notifylist new", NOTIFYLIST_REC
+ "notifylist remove", NOTIFYLIST_REC
+ "notifylist joined", SERVER_REC, char *nick, char *user, char *host, char *realname, char *awaymsg
+ "notifylist away changed", SERVER_REC, char *nick, char *user, char *host, char *realname, char *awaymsg
+ "notifylist left", SERVER_REC, char *nick, char *user, char *host, char *realname, char *awaymsg
+
+proxy/listen.c:
+
+ "proxy client connecting", CLIENT_REC
+ "proxy client connected", CLIENT_REC
+ "proxy client disconnected", CLIENT_REC
+ "proxy client command", CLIENT_REC, char *args, char *data
+ "proxy client dump", CLIENT_REC, char *data
+
+FE common
+---------
+
+* Requires to work properly:
+
+ "gui print text", WINDOW_REC, int fg, int bg, int flags, char *text, TEXT_DEST_REC
+
+(Can be used to determine when all "gui print text"s are sent (not required))
+ "gui print text finished", WINDOW_REC, TEXT_DEST_REC
+
+* Provides signals:
+
+completion.c:
+ "complete word", GList * of char *s, WINDOW_REC, char *word, char *linestart, int *want_space
+
+fe-common-core.c:
+ "irssi init read settings"
+
+fe-exec.c:
+ "exec new", PROCESS_REC
+ "exec remove", PROCESS_REC, int status
+ "exec input", PROCESS_REC, char *text
+
+fe-messages.c:
+ "message public", SERVER_REC, char *msg, char *nick, char *address, char *target
+ "message private", SERVER_REC, char *msg, char *nick, char *address, char *target
+ "message own_public", SERVER_REC, char *msg, char *target
+ "message own_private", SERVER_REC, char *msg, char *target, char *orig_target
+ "message join", SERVER_REC, char *channel, char *nick, char *address, char *account, char *realname
+ "message part", SERVER_REC, char *channel, char *nick, char *address, char *reason
+ "message quit", SERVER_REC, char *nick, char *address, char *reason
+ "message kick", SERVER_REC, char *channel, char *nick, char *kicker, char *address, char *reason
+ "message nick", SERVER_REC, char *newnick, char *oldnick, char *address
+ "message own_nick", SERVER_REC, char *newnick, char *oldnick, char *address
+ "message invite", SERVER_REC, char *channel, char *nick, char *address
+ "message invite_other", SERVER_REC, char *channel, char *invited, char *nick, char *address
+ "message topic", SERVER_REC, char *channel, char *topic, char *nick, char *address
+ "message host_changed", SERVER_REC, char *nick, char *newaddress, char *oldaddress
+ "message account_changed", SERVER_REC, char *nick, char *address, char *account
+ "message away_notify", SERVER_REC, char *nick, char *address, char *awaymsg
+
+keyboard.c:
+ "keyinfo created", KEYINFO_REC
+ "keyinfo destroyed", KEYINFO_REC
+
+printtext.c:
+ "print text", TEXT_DEST_REC *dest, char *text, char *stripped
+ "print format", THEME_REC *theme, char *module, TEXT_DEST_REC *dest, formatnum_args
+ "print noformat", TEXT_DEST_REC *dest, char *text
+
+themes.c:
+ "theme created", THEME_REC
+ "theme destroyed", THEME_REC
+
+window-activity.c:
+ "window hilight", WINDOW_REC
+ "window hilight check", TEXT_DEST_REC, char *msg, int *data_level, int *should_ignore
+ "window dehilight", WINDOW_REC
+ "window activity", WINDOW_REC, int old_level
+ "window item hilight", WI_ITEM_REC
+ "window item activity", WI_ITEM_REC, int old_level
+
+window-items.c:
+ "window item new", WINDOW_REC, WI_ITEM_REC
+ "window item remove", WINDOW_REC, WI_ITEM_REC
+ "window item moved", WINDOW_REC, WI_ITEM_REC, WINDOW_REC
+ "window item changed", WINDOW_REC, WI_ITEM_REC
+ "window item server changed", WINDOW_REC, WI_ITEM_REC
+
+windows.c:
+ "window created", WINDOW_REC
+ "window destroyed", WINDOW_REC
+ "window changed", WINDOW_REC, WINDOW_REC old
+ "window changed automatic", WINDOW_REC
+ "window server changed", WINDOW_REC, SERVER_REC
+ "window refnum changed", WINDOW_REC, int old
+ "window name changed", WINDOW_REC
+ "window history changed", WINDOW_REC, char *oldname
+ "window level changed", WINDOW_REC
+
+FE IRC
+------
+
+fe-events.c:
+ "default event numeric", SERVER_REC, char *data, char *nick, char *address
+
+fe-irc-messages.c:
+ "message irc op_public", SERVER_REC, char *msg, char *nick, char *address, char *target
+ "message irc own_wall", SERVER_REC, char *msg, char *target
+ "message irc own_action", SERVER_REC, char *msg, char *target
+ "message irc action", SERVER_REC, char *msg, char *nick, char *address, char *target
+ "message irc own_notice", SERVER_REC, char *msg, char *target
+ "message irc notice", SERVER_REC, char *msg, char *nick, char *address, char *target
+ "message irc own_ctcp", SERVER_REC, char *cmd, char *data, char *target
+ "message irc ctcp", SERVER_REC, char *cmd, char *data, char *nick, char *address, char *target
+
+fe-modes.c:
+ "message irc mode", SERVER_REC, char *channel, char *nick, char *addr, char *mode
+
+dcc/fe-dcc-chat-messages.c:
+ "message dcc own", DCC_REC *dcc, char *msg
+ "message dcc own_action", DCC_REC *dcc, char *msg
+ "message dcc own_ctcp", DCC_REC *dcc, char *cmd, char *data
+ "message dcc", DCC_REC *dcc, char *msg
+ "message dcc action", DCC_REC *dcc, char *msg
+ "message dcc ctcp", DCC_REC *dcc, char *cmd, char *data
+
+Text FE
+-------
+
+gui-readline.c:
+ "gui key pressed", int key
+ "paste event", char *paste, char *arg
+
+gui-printtext.c:
+ "beep"
+ "gui print text after finished", WINDOW_REC, LINE_REC *line, LINE_REC *prev_line, TEXT_DEST_REC
+
+textbuffer-view.c
+ "gui textbuffer line removed", TEXTBUFFER_VIEW_REC *view, LINE_REC *line, LINE_REC *prev_line
+
+textbuffer-formats.c
+ "gui render line text", TEXT_DEST_REC, GString *str, LINE_INFO_META_REC
+
+Perl
+----
+
+"script error", PERL_SCRIPT_REC, char *errormsg
+
+OTR Core
+--------
+
+otr.c:
+ "otr event", SERVER_REC, char *nick, char *status
diff --git a/docs/special_vars.txt b/docs/special_vars.txt
new file mode 100644
index 0000000..36517f7
--- /dev/null
+++ b/docs/special_vars.txt
@@ -0,0 +1,132 @@
+NOTE: This is just a slightly modified file taken from EPIC's help.
+
+Special Variables and Expandos
+
+Irssi supports a number of reserved, dynamic variables, sometimes
+referred to as expandos. They are special in that the client is
+constantly updating their values automatically. There are also
+numerous variable modifiers available.
+
+ Modifier Description
+ $variable A normal variable, expanding to the first match of:
+ | 1) an internal SET variable
+ | 2) an environment variable
+ $[num]variable Expands to the variables value, with 'num' width. If
+ | the number is negative, the value is right-aligned.
+ | The value is padded to meet the width with the
+ | character given after number (default is space).
+ | The value is truncated to specified width unless
+ | '!' character precedes the number. If '.' character
+ | precedes the number the value isn't padded, just
+ | truncated.
+ $#variable Expands to the number of words in $variable. If $variable
+ | is omitted, it assumes $*
+ $@variable Expands to the number of characters in $variable. if
+ | $variable is omitted, it assumes $*
+ $($subvariable) This is somewhat similar to a pointer, in that the
+ | value of $subvar is taken as the name of the
+ | variable to expand to. Nesting is allowed.
+ ${expression} Permits the value to be embedded in another string
+ | unambiguously.
+ $!history! Expands to a matching entry in the client's command
+ | history, wildcards allowed.
+
+Whenever an alias is called, these expandos are set to the arguments passed
+to it. If none of these expandos are used in the alias, or the $() form
+shown above, any arguments passed will automatically be appended to the last
+command in the alias.
+
+ Expando Description
+ $* expands to all arguments passed to an alias
+ $n expands to argument 'n' passed to an alias (counting from zero)
+ $n-m expands to arguments 'n' through 'm' passed to an alias
+ $n- expands to all arguments from 'n' on passed to an alias
+ $-m expands to all arguments up to 'm' passed to an alias
+ $~ expands to the last argument passed to an alias
+
+These variables are set and updated dynamically by the client. The case of
+$A .. $Z is important.
+
+ Variable Description
+ $, last person who sent you a MSG
+ $. last person to whom you sent a MSG
+ $: last person to join a channel you are on
+ $; last person to send a public message to a channel you are on
+ $A text of your AWAY message, if any
+ $B body of last MSG you sent
+ $C current channel
+ $D last person that NOTIFY detected a signon for
+ $E idle time
+ $F time client was started, $time() format
+ $H current server numeric being processed
+ $I channel you were last INVITEd to
+ $J client version text string
+ $K current value of CMDCHARS
+ $k first character in CMDCHARS
+ $L current contents of the input line
+ $M modes of current channel, if any
+ $N current nickname
+ $O value of STATUS_OPER if you are an irc operator
+ $P if you are a channel operator in $C, expands to a '@'
+ $Q nickname of whomever you are QUERYing
+ $R version of current server
+ $S current server name
+ $T target of current input (channel or nick of query)
+ $U value of cutbuffer
+ $V client release date (format YYYYMMDD)
+ $W current working directory
+ $X your /userhost $N address (user@host)
+ $Y value of REALNAME
+ $Z time of day (hh:mm, can be changed with /SET timestamp_format)
+ $$ a literal '$'
+
+ $versiontime prints time of the irssi version in HHMM format
+ $sysname system name (eg. Linux)
+ $sysrelease system release (eg. 2.2.18)
+ $sysarch system architecture (eg. i686)
+ $topic channel topic
+ $usermode user mode
+ $cumode own channel user mode
+ $cumode_space like $cumode, but gives space if there's no mode.
+ $tag server tag
+ $chatnet chat network of server
+ $winref window reference number
+ $winname window name
+ $itemname like $T, but use item's visible_name which may be
+ different (eg. $T = !12345chan, $itemname = !chan)
+
+For example, assume you have the following alias:
+
+ alias blah msg $D Hi there!
+
+If /blah is passed any arguments, they will automatically be appended to the
+MSG text. For example:
+
+ /blah oops /* command as entered */
+ "Hi there! oops" /* text sent to $D */
+
+Another useful form is ${}. In general, variables can be embedded inside
+strings without problems, assuming the surrounding text could not be
+misinterpreted as part of the variable name. This form guarantees that
+surrounding text will not affect the expression's return value.
+
+ /eval echo foo$Nfoo /* breaks, looks for $nfoo */
+ /eval echo foo${N}foo /* ${N} returns current nickname */
+ fooYourNickfoo /* returned by above command */
+
+When writing an alias containing a /script exec, special consideration has to be
+taken to $vars and statement delimiters, ie. ;
+/alias tries to evaluate all $vars as expandos, which would mean that what you
+pass on to /script exec isn't necessarily what you intended.
+Compare:
+
+ 1. /alias al1 script exec my $var = "Hello"; print $var;
+ 2. /alias al2 script exec my $$var = "Hello"\; print $$var;
+ 3. /alias al3 script exec my \$var = "Hello"\; print \$var; (Same as nr 2)
+
+In example nr 1 $var would be expanded to an empty string and ; would end
+the /script exec command, leaving print $var as a separate command to be run by
+irssi. In example 2 $$ is evaluated to a literal $ leaving a literal $var to be
+passed on to /script exec. The same goes for \; which is turned into a
+literal ; and thus is passed on to /script exec as a statement delimiter.
+This would mean print $$var is part of the /script exec being evaluated.
diff --git a/docs/startup-HOWTO.html b/docs/startup-HOWTO.html
new file mode 100644
index 0000000..696dea4
--- /dev/null
+++ b/docs/startup-HOWTO.html
@@ -0,0 +1,686 @@
+<base href='https://irssi.org/documentation/startup/'>
+<h1>Startup How-To</h1>
+ <h3 id="to-new-irssi-users-not-to-new-irc-users-">To new Irssi users (not to new IRC users ..)</h3>
+
+<p>Copyright (c) 2000-2002 by Timo Sirainen, release under <a href="https://www.gnu.org/licenses/fdl.html">GNU FDL</a> 1.1 license.</p>
+
+<p>Index with some FAQ questions that are answered in the chapter:</p>
+
+<ol>
+ <li><a href="#first-steps">First steps</a></li>
+ <li><a href="#basic-user-interface-usage">Basic user interface usage</a>
+ <ul>
+ <li>Split windows work in weird way</li>
+ <li>How can I easily switch between windows?</li>
+ <li>But alt-1 etc. don’t work!</li>
+ </ul>
+ </li>
+ <li><a href="#server-and-channel-automation">Server and channel automation</a>
+ <ul>
+ <li>How do I automatically connect to servers at startup?</li>
+ <li>How do I automatically join to channels at startup?</li>
+ <li>How do I automatically send commands to server at connect?</li>
+ </ul>
+ </li>
+ <li><a href="#setting-up-windows-and-automatically-restoring-them-at-startup">Setting up windows and automatically restoring them at startup</a></li>
+ <li><a href="#status-and-msgs-windows--message-levels">Status and msgs windows &amp; message levels</a>
+ <ul>
+ <li>I want /WHOIS to print reply to current window</li>
+ <li>I want all messages to go to one window, not create new windows</li>
+ </ul>
+ </li>
+ <li><a href="#how-support-for-multiple-servers-works-in-irssi">How support for multiple servers works in irssi</a>
+ <ul>
+ <li>I connected to some server that doesn’t respond and now irssi keeps trying to reconnect to it again and again, how can I stop it??</li>
+ <li>I want to have own status and/or msgs window for each servers</li>
+ </ul>
+ </li>
+ <li><a href="#lastlog-and-jumping-around-in-scrollback">/LASTLOG and jumping around in scrollback</a>
+ <ul>
+ <li>How can I save all texts in a window to file?</li>
+ </ul>
+ </li>
+ <li><a href="#logging">Logging</a></li>
+ <li><a href="#changing-keyboard-bindings">Changing keyboard bindings</a>
+ <ul>
+ <li>How do I make F1 key do something?</li>
+ </ul>
+ </li>
+ <li><a href="#proxies-and-irc-bouncers">Proxies and IRC bouncers</a></li>
+ <li><a href="#irssis-settings">Irssi’s settings</a>
+ <ul>
+ <li><a href="#for-all-the-ircii-people">For all the ircII people</a></li>
+ </ul>
+ </li>
+ <li><a href="#statusbar">Statusbar</a>
+ <ul>
+ <li>I loaded a statusbar script but it’s not visible anywhere!</li>
+ </ul>
+ </li>
+</ol>
+
+<h2 id="first-steps">1. First steps</h2>
+
+<p>IRC Networks are made of servers, and servers have channels. The default config has a few predefined networks, to list them:</p>
+
+<div><div><pre><code>/NETWORK LIST
+</code></pre></div></div>
+
+<p>And to connect to one of those networks and join a channel:</p>
+
+<div><div><pre><code>/CONNECT liberachat
+/JOIN #irssi
+</code></pre></div></div>
+
+<p>To add more networks:</p>
+
+<div><div><pre><code>/NETWORK ADD ExampleNet
+</code></pre></div></div>
+
+<p>Then add some servers (with -auto to automatically connect):</p>
+
+<div><div><pre><code>/SERVER ADD -auto -network ExampleNet irc.example.net
+</code></pre></div></div>
+
+<p>Automatically join to channels after connected to server:</p>
+
+<div><div><pre><code>/CHANNEL ADD -auto #lounge ExampleNet
+</code></pre></div></div>
+
+<p>To modify existing networks (or servers, or channels) just ADD again using the same name as before. This configures a network to identify with nickserv and wait for 2 seconds before joining channels:</p>
+
+<div><div><pre><code>/NETWORK ADD -autosendcmd "/^msg nickserv ident pass;wait 2000" ExampleNet
+</code></pre></div></div>
+
+<p>If you have irssi 0.8.18 or higher and the irc network supports it, you can use SASL instead of nickserv, which is more reliable:</p>
+
+<div><div><pre><code>/NETWORK ADD -sasl_username yourname -sasl_password yourpassword -sasl_mechanism PLAIN liberachat
+</code></pre></div></div>
+
+<p>These commands have many more options, see their help for details:</p>
+
+<div><div><pre><code>/HELP NETWORK
+/HELP SERVER
+/HELP CHANNEL
+/HELP
+</code></pre></div></div>
+
+<p>If you want lines containing your nick to hilight:</p>
+
+<div><div><pre><code>/HILIGHT nick
+</code></pre></div></div>
+
+<p>Or, for irssi 0.8.18 or higher:</p>
+
+<div><div><pre><code>/SET hilight_nick_matches_everywhere ON
+</code></pre></div></div>
+
+<p>To get beeps on private messages or highlights:</p>
+
+<div><div><pre><code>/SET beep_msg_level MSGS HILIGHT DCCMSGS
+</code></pre></div></div>
+
+<p>No other irssi settings are needed (don’t enable bell_beeps), but there may be settings to change in your terminal multiplexer (screen/tmux), your terminal, or your desktop environment.</p>
+
+<h2 id="basic-user-interface-usage">2. Basic user interface usage</h2>
+
+<p>Windows can be scrolled up/down with PgUp and PgDown keys. If they don’t work for you, use Meta-p and Meta-n keys. For jumping to beginning or end of the buffer, use <code>/SB HOME</code> and <code>/SB END</code> commands.</p>
+
+<p>By default, irssi uses “hidden windows” for everything. Hidden windows are created every time you <code>/JOIN</code> a channel or <code>/QUERY</code> someone. There’s several ways you can change between these windows:</p>
+
+<div><div><pre><code>Meta-1, Meta-2, .. Meta-0 - Jump directly between windows 1-10
+Meta-q .. Meta-o - Jump directly between windows 11-19
+/WINDOW &lt;number&gt; - Jump to any window with specified number
+Ctrl-P, Ctrl-N - Jump to previous / next window
+</code></pre></div></div>
+
+<p>Clearly the easiest way is to use Meta-number keys. Meta usually means the ALT key, but if that doesn’t work, you can use ESC.</p>
+
+<p>Mac OS X users with ALT key issues might prefer using <a href="https://www.iterm2.com/">iTerm2</a> instead of the default terminal emulator.</p>
+
+<h3 id="alt-key-as-meta-for-xtermrxvt-users">Alt key as meta, for xterm/rxvt users</h3>
+
+<p>If you use xterm or rxvt, you may need to set a few X resources:</p>
+
+<div><div><pre><code> XTerm*eightBitInput: false
+ XTerm*metaSendsEscape: true
+</code></pre></div></div>
+
+<p>With rxvt, you can also specify which key acts as Meta key. So if you want to use ALT instead of Windows key for it, use:</p>
+
+<div><div><pre><code> rxvt*modifier: alt
+</code></pre></div></div>
+
+<p>You could do this by changing the X key mappings:</p>
+
+<div><div><pre><code> xmodmap -e "keysym Alt_L = Meta_L Alt_L"
+</code></pre></div></div>
+
+<p>And how exactly do you set these X resources? For Debian, there’s <code>/etc/X11/Xresources/xterm</code> file where you can put them and it’s read automatically when X starts. <code>~/.Xresources</code> and <code>~/.Xdefaults</code> files might also work. If you can’t get anything else to work, just copy and paste those lines to <code>~/.Xresources</code> and directly call <code>xrdb -merge ~/.Xresources</code> in some xterm. The resources affect only the new xterms you start, not existing ones.</p>
+
+<h3 id="split-windows-and-window-items">Split windows and window items</h3>
+
+<p><em>Note: <a href="https://quadpoint.org/articles/irssisplit/">this guide</a> might be a better introduction to window splits</em></p>
+
+<p>Irssi also supports split windows, they’ve had some problems in past but I think they should work pretty well now :) Here’s some commands related to them:</p>
+
+<div><div><pre><code>/WINDOW NEW - Create new split window
+/WINDOW NEW HIDE - Create new hidden window
+/WINDOW CLOSE - Close split or hidden window
+
+/WINDOW HIDE [&lt;number&gt;|&lt;name&gt;] - Make the split window hidden window
+/WINDOW SHOW &lt;number&gt;|&lt;name&gt; - Make the hidden window a split window
+
+/WINDOW SHRINK [&lt;lines&gt;] - Shrink the split window
+/WINDOW GROW [&lt;lines&gt;] - Grow the split window
+/WINDOW BALANCE - Balance the sizes of all split windows
+</code></pre></div></div>
+
+<p>By default, irssi uses “sticky windowing” for split windows. This means that windows created inside one split window cannot be moved to another split window without some effort. For example you could have following window layout:</p>
+
+<div><div><pre><code> Split window 1: win#1 - Status window, win#2 - Messages window
+ Split window 2: win#3 - IRCnet/#channel1, win#4 - IRCnet/#channel2
+ Split window 3: win#5 - efnet/#channel1, win#6 - efnet/#channel2
+</code></pre></div></div>
+
+<p>When you are in win#1 and press ALT-6, irssi jumps to split window #3 and moves the efnet/#channel2 the active window.</p>
+
+<p>With non-sticky windowing the windows don’t have any relationship with split windows, pressing ALT-6 in win#1 moves win#6 to split window 1 and sets it active, except if win#6 was already visible in some other split window irssi just changes to that split window. This it the way windows work with ircii, if you prefer it you can set it with</p>
+
+<div><div><pre><code>/SET autostick_split_windows OFF
+</code></pre></div></div>
+
+<p>Each window can have multiple channels, queries and other “window items” inside them. If you don’t like windows at all, you disable automatic creating of them with</p>
+
+<div><div><pre><code>/SET autocreate_windows OFF
+</code></pre></div></div>
+
+<p>And if you keep all channels in one window, you most probably want the channel name printed in each line:</p>
+
+<div><div><pre><code>/SET print_active_channel ON
+</code></pre></div></div>
+
+<p>If you want to group only some channels or queries in one window, use</p>
+
+<div><div><pre><code>/JOIN -window #channel
+/QUERY -window nick
+</code></pre></div></div>
+
+<h2 id="server-and-channel-automation">3. Server and channel automation</h2>
+
+<p>Irssi’s multiple IRC network support is IMHO very good - at least compared to other clients :) Even if you’re only in one IRC network you should group all your servers to be in the same IRC network as this helps with reconnecting if your primary server breaks and is probably useful in some other ways too :) For information how to actually use irssi correctly with multiple servers see the chapter 6.</p>
+
+<p>First you need to have your IRC network set, use <code>/NETWORK</code> command to see if it’s already there. If it isn’t, use <code>/NETWORK ADD yournetwork</code>. If you want to execute some commands automatically when you’re connected to some network, use <code>-autosendcmd</code> option. Here’s some examples:</p>
+
+<div><div><pre><code>/NETWORK ADD -autosendcmd '^msg bot invite' IRCnet
+/NETWORK ADD -autosendcmd "/^msg nickserv ident pass;wait 2000" OFTC
+</code></pre></div></div>
+
+<p>After that you need to add your servers. For example:</p>
+
+<div><div><pre><code>/SERVER ADD -auto -network IRCnet irc.kpnqwest.fi 6667
+/SERVER ADD -auto -network worknet irc.mycompany.com 6667 password
+</code></pre></div></div>
+
+<p>The <code>-auto</code> option specifies that this server is automatically connected at startup. You don’t need to make more than one server with <code>-auto</code> option to one IRC network, other servers are automatically connected in same network if the <code>-auto</code> server fails.</p>
+
+<p>And finally channels:</p>
+
+<div><div><pre><code>/CHANNEL ADD -auto -bots *!*bot@host.org -botcmd "/^msg $0 op pass" #irssi efnet
+/CHANNEL ADD -auto #secret IRCnet password
+</code></pre></div></div>
+
+<p><code>-bots</code> and <code>-botcmd</code> should be the only ones needing a bit of explaining. They’re used to send commands automatically to bot when channel is joined, usually to get ops automatically. You can specify multiple bot masks with <code>-bots</code> option separated with spaces (and remember to quote the string then). The $0 in <code>-botcmd</code> specifies the first found bot in the list. If you don’t need the bot masks (ie. the bot is always with the same nick, like chanserv) you can give only the <code>-botcmd</code> option and the command is always sent.</p>
+
+<h2 id="setting-up-windows-and-automatically-restoring-them-at-startup">4. Setting up windows and automatically restoring them at startup</h2>
+
+<p>First connect to all the servers, join the channels and create the queries you want. If you want to move the windows or channels around use commands:</p>
+
+<div><div><pre><code>/WINDOW MOVE LEFT/RIGHT/number - move window elsewhere
+/WINDOW ITEM MOVE &lt;number&gt;|&lt;name&gt; - move channel/query to another window
+</code></pre></div></div>
+
+<p>When everything looks the way you like, use <code>/LAYOUT SAVE</code> command (and <code>/SAVE</code>, if you don’t have autosaving enabled) and when you start irssi next time, irssi remembers the positions of the channels, queries and everything. This “remembering” doesn’t mean that simply using <code>/LAYOUT SAVE</code> would automatically make irssi reconnect to all servers and join all channels, you’ll need the <code>/SERVER ADD -auto</code> and <code>/CHANNEL ADD -auto</code> commands to do that.</p>
+
+<p>If you want to change the layout, you just rearrange the layout like you want it and use <code>/LAYOUT SAVE</code> again. If you want to remove the layout for some reason, use <code>/LAYOUT RESET.</code></p>
+
+<h2 id="status-and-msgs-windows--message-levels">5. Status and msgs windows &amp; message levels</h2>
+
+<p>By default, all the “extra messages” go to status window. This means pretty much all messages that don’t clearly belong to some channel or query. Some people like it, some don’t. If you want to remove it, use</p>
+
+<div><div><pre><code>/SET use_status_window OFF
+</code></pre></div></div>
+
+<p>This doesn’t have any effect until you restart irssi. If you want to remove it immediately, just <code>/WINDOW CLOSE</code> it.</p>
+
+<p>Another common window is “messages window”, where all private messages go. By default it’s disabled and query windows are created instead. To make all private messages go to msgs window, say:</p>
+
+<div><div><pre><code>/SET use_msgs_window ON
+/SET autocreate_query_level DCCMSGS (or if you don't want queries to
+ dcc chats either, say NONE)
+</code></pre></div></div>
+
+<p>use_msgs_window either doesn’t have any effect until restarting irssi. To create it immediately say:</p>
+
+<div><div><pre><code>/WINDOW NEW HIDE - create the window
+/WINDOW NAME (msgs) - name it to "(msgs)"
+/WINDOW LEVEL MSGS - make all private messages go to this window
+/WINDOW MOVE 1 - move it to first window
+</code></pre></div></div>
+
+<p>Note that neither use_msgs_window nor use_status_window have any effect at all if <code>/LAYOUT SAVE</code> has been used.</p>
+
+<p>This brings us to message levels.. What are they? All messages that irssi prints have one or more “message levels”. Most common are PUBLIC for public messages in channels, MSGS for private messages and CRAP for all sorts of messages with no real classification. You can get a whole list of levels with</p>
+
+<div><div><pre><code>/HELP levels
+</code></pre></div></div>
+
+<p>Status window has message level <code>ALL -MSGS</code>, meaning that all messages, except private messages, without more specific place go to status window. The <code>-MSGS</code> is there so it doesn’t conflict with messages window.</p>
+
+<h2 id="how-support-for-multiple-servers-works-in-irssi">6. How support for multiple servers works in irssi</h2>
+
+<p>ircii and several other clients support multiple servers by placing the connection into some window. IRSSI DOES NOT. There is no required relationship between window and server. You can connect to 10 servers and manage them all in just one window, or join channel in each one of them to one single window if you really want to. That being said, here’s how you do connect to new server without closing the old connection:</p>
+
+<div><div><pre><code>/CONNECT irc.server.org
+</code></pre></div></div>
+
+<p>Instead of the <code>/SERVER</code> which disconnects the existing connection. To see list of all active connections, use <code>/SERVER</code> without any parameters. You should see a list of something like:</p>
+
+<div><div><pre><code> -!- IRCNet: irc.song.fi:6667 (IRCNet)
+ -!- OFTC: irc.oftc.net:6667 (OFTC)
+ -!- RECON-1: 192.168.0.1:6667 () (02:59 left before reconnecting)
+</code></pre></div></div>
+
+<p>Here you see that we’re connected to IRCNet and OFTC networks. The IRCNet at the beginning is called the “server tag” while the (IRCnet) at the end shows the IRC network. Server tag specifies unique tag to refer to the server, usually it’s the same as the IRC network. When the IRC network isn’t known it’s some part of the server name. When there’s multiple connections to same IRC network or server, irssi adds a number after the tag so there could be network, network2, network3 etc.</p>
+
+<p>Server tags beginning with <code>RECON-</code> mean server reconnections. Above we see that connection to server at 192.168.0.1 wasn’t successful and irssi will try to connect it again in 3 minutes.</p>
+
+<p>To disconnect one of the servers, or to stop irssi from reconnecting, use</p>
+
+<div><div><pre><code>/DISCONNECT network - disconnect server with tag "network"
+/DISCONNECT recon-1 - stop trying to reconnect to RECON-1 server
+/RMRECONNS - stop all server reconnections
+
+/RECONNECT recon-1 - immediately try reconnecting back to RECON-1
+/RECONNECT ALL - immediately try reconnecting back to all
+ servers in reconnection queue
+</code></pre></div></div>
+
+<p>Now that you’re connected to all your servers, you’ll have to know how to specify which one of them you want to use. One way is to have an empty window, like status or msgs window. In it, you can specify which server to set active with</p>
+
+<div><div><pre><code>/WINDOW SERVER tag - set server "tag" active
+Ctrl-X - set the next server in list active
+</code></pre></div></div>
+
+<p>When the server is active, you can use it normally. When there’s multiple connected servers, irssi adds [servertag] prefix to all messages in non-channel/query messages so you’ll know where it came from.</p>
+
+<p>Several commands also accept <code>-servertag</code> option to specify which server it should use:</p>
+
+<div><div><pre><code>/MSG -tag nick message
+/JOIN -tag #channel
+/QUERY -tag nick
+</code></pre></div></div>
+
+<p><code>/MSG</code> tab completion also automatically adds the <code>-tag</code> option when nick isn’t in active server.</p>
+
+<p>Window’s server can be made sticky. When sticky, it will never automatically change to anything else, and if server gets disconnected, the window won’t have any active server. When the server gets connected again, it is automatically set active in the window. To set the window’s server sticky use</p>
+
+<div><div><pre><code>/WINDOW SERVER -sticky tag
+</code></pre></div></div>
+
+<p>This is useful if you wish to have multiple status or msgs windows, one for each server. Here’s how to do them (repeat for each server)</p>
+
+<div><div><pre><code>/WINDOW NEW HIDE
+/WINDOW NAME (status)
+/WINDOW LEVEL ALL -MSGS
+/WINDOW SERVER -sticky network
+
+/WINDOW NEW HIDE
+/WINDOW NAME (msgs)
+/WINDOW LEVEL MSGS
+/WINDOW SERVER -sticky network
+</code></pre></div></div>
+
+<h2 id="lastlog-and-jumping-around-in-scrollback">7. /LASTLOG and jumping around in scrollback</h2>
+
+<p><code>/LASTLOG</code> command can be used for searching texts in scrollback buffer. Simplest usages are</p>
+
+<div><div><pre><code>/LASTLOG word - print all lines with "word" in them
+/LASTLOG word 10 - print last 10 occurances of "word"
+/LASTLOG -topics - print all topic changes
+</code></pre></div></div>
+
+<p>If there’s more than 1000 lines to be printed, irssi thinks that you probably made some mistake and won’t print them without <code>-force</code> option. If you want to save the full lastlog to file, use</p>
+
+<div><div><pre><code>/LASTLOG -file ~/irc.log
+</code></pre></div></div>
+
+<p>With <code>-file</code> option you don’t need <code>-force</code> even if there’s more than 1000 lines. <code>/LASTLOG</code> has a lot of other options too, see <code>/HELP lastlog</code> for details.</p>
+
+<p>Once you’ve found the lines you were interested in, you might want to check the discussion around them. Irssi has <code>/SCROLLBACK</code> (or alias <code>/SB</code>) command for jumping around in scrollback buffer. Since <code>/LASTLOG</code> prints the timestamp when the message was originally printed, you can use <code>/SB GOTO hh:mm</code> to jump directly there. To get back to the bottom of scrollback, use <code>/SB END</code> command.</p>
+
+<h2 id="logging">8. Logging</h2>
+
+<p>Irssi can automatically log important messages when you’re set away (<code>/AWAY reason</code>). When you set yourself unaway (<code>/AWAY</code>), the new messages in away log are printed to screen. You can configure it with:</p>
+
+<div><div><pre><code>/SET awaylog_level MSGS HILIGHT - Specifies what messages to log
+/SET awaylog_file ~/.irssi/away.log - Specifies the file to use
+</code></pre></div></div>
+
+<p>Easiest way to start logging with Irssi is to use autologging. With it Irssi logs all channels and private messages to specified directory. You can turn it on with</p>
+
+<div><div><pre><code>/SET autolog ON
+</code></pre></div></div>
+
+<p>By default it logs pretty much everything execept CTCPS or CRAP (<code>/WHOIS</code> requests, etc). You can specify the logging level yourself with</p>
+
+<div><div><pre><code>/SET autolog_level ALL -CRAP -CLIENTCRAP -CTCPS (this is the default)
+</code></pre></div></div>
+
+<p>By default irssi logs to ~/irclogs/&lt;servertag&gt;/&lt;target&gt;.log. You can change this with</p>
+
+<div><div><pre><code>/SET autolog_path ~/irclogs/$tag/$0.log (this is the default)
+</code></pre></div></div>
+
+<p>The path is automatically created if it doesn’t exist. $0 specifies the target (channel/nick). You can make irssi automatically rotate the logs by adding date/time formats to the file name. The formats are in “man strftime” format. For example</p>
+
+<div><div><pre><code>/SET autolog_path ~/irclogs/%Y/$tag/$0.%m-%d.log
+</code></pre></div></div>
+
+<p>For logging only some specific channels or nicks, see <code>/HELP log</code></p>
+
+<h2 id="changing-keyboard-bindings">9. Changing keyboard bindings</h2>
+
+<p>You can change any keyboard binding that terminal lets irssi know about. It doesn’t let irssi know everything, so for example shift-backspace can’t be bound unless you modify xterm resources somehow.</p>
+
+<p><code>/HELP bind</code> tells pretty much everything there is to know about keyboard bindings. However, there’s the problem of how to bind some non-standard keys. They might differ a bit with each terminal, so you’ll need to find out what exactly the keypress produces. Easiest way to check that would be to see what it prints in <code>cat</code>. Here’s an example for pressing F1 key:</p>
+
+<div><div><pre><code> [cras@hurina] ~% cat
+ ^[OP
+</code></pre></div></div>
+
+<p>So in irssi you would use <code>/BIND ^[OP /ECHO F1 pressed</code>. If you use multiple terminals which have different bindings for the key, it would be better to use eg.:</p>
+
+<div><div><pre><code>/BIND ^[OP key F1
+/BIND ^[11~ key F1
+/BIND F1 /ECHO F1 pressed.
+</code></pre></div></div>
+
+<h2 id="proxies-and-irc-bouncers">10. Proxies and IRC bouncers</h2>
+
+<p>Irssi supports connecting to IRC servers via a proxy. All server connections are then made through it, and if you’ve set up everything properly, you don’t need to do any <code>/QUOTE SERVER</code> commands manually.</p>
+
+<p>Here’s an example: You have your bouncer (lets say, BNC or BNC-like) listening in irc.bouncer.org port 5000. You want to use it to connect to servers irc.dal.net and irc.efnet.org. First you’d need to setup the bouncer:</p>
+
+<div><div><pre><code>/SET use_proxy ON
+/SET proxy_address irc.bouncer.org
+/SET proxy_port 5000
+
+/SET proxy_password YOUR_BNC_PASSWORD_HERE
+/SET -clear proxy_string
+/SET proxy_string_after conn %s %d
+</code></pre></div></div>
+
+<p>Then you’ll need to add the server connections. These are done exactly as if you’d want to connect directly to them. Nothing special about them:</p>
+
+<div><div><pre><code>/SERVER ADD -auto -network dalnet irc.dal.net
+/SERVER ADD -auto -network efnet irc.efnet.org
+</code></pre></div></div>
+
+<p>With the proxy <code>/SET</code>s however, irssi now connects to those servers through your BNC. All server connections are made through them so you can just forget that your bouncer even exists.</p>
+
+<p>If you don’t want to use the proxy for some reason, there’s <code>-noproxy</code> option which you can give to <code>/SERVER</code> and <code>/SERVER ADD</code> commands.</p>
+
+<p><strong>Proxy specific settings:</strong></p>
+
+<p>All proxies except irssi proxy and socks proxy have these settings in common:</p>
+
+<div><div><pre><code>/SET use_proxy ON
+/SET proxy_address &lt;Proxy host address&gt;
+/SET proxy_port &lt;Proxy port&gt;
+</code></pre></div></div>
+
+<p><strong>HTTP proxy</strong></p>
+
+<p>Use these settings with HTTP proxies:</p>
+
+<div><div><pre><code>/SET -clear proxy_password
+/EVAL SET proxy_string CONNECT %s:%d HTTP/1.0\n\n
+</code></pre></div></div>
+
+<p><strong>BNC</strong></p>
+
+<div><div><pre><code>/SET proxy_password your_pass
+/SET -clear proxy_string
+/SET proxy_string_after conn %s %d
+</code></pre></div></div>
+
+<p><strong>dircproxy</strong></p>
+
+<p>dircproxy separates the server connections by passwords. So, if you for example have network connection with password ircpass and OFTC connection with oftcpass, you would do something like this:</p>
+
+<div><div><pre><code>/SET -clear proxy_password
+/SET -clear proxy_string
+
+/SERVER ADD -auto -network IRCnet fake.network 6667 ircpass
+/SERVER ADD -auto -network OFTC fake.oftc 6667 oftcpass
+</code></pre></div></div>
+
+<p>The server name and port you give isn’t used anywhere, so you can put anything you want in there.</p>
+
+<p><strong>psyBNC</strong></p>
+
+<p>psyBNC has internal support for multiple servers. However, it could be a bit annoying to use, and some people just use different users for connecting to different servers. You can manage this in a bit same way as with dircproxy, by creating fake connections:</p>
+
+<div><div><pre><code>/SET -clear proxy_password
+/SET -clear proxy_string
+
+/NETWORK ADD -user networkuser IRCnet
+/SERVER ADD -auto -network IRCnet fake.network 6667 ircpass
+/NETWORK ADD -user oftcuser OFTC
+/SERVER ADD -auto -network OFTC fake.oftc 6667 oftcpass
+</code></pre></div></div>
+
+<p>So, you’ll specify the usernames with <code>/NETWORK ADD</code> command, and the user’s password with <code>/SERVER ADD</code>.</p>
+
+<p><strong>Irssi proxy</strong></p>
+
+<p>Irssi contains it’s own proxy which you can build giving <code>\--with-proxy</code> option to configure. You’ll still need to run irssi in a screen to use it though.</p>
+
+<p>Irssi proxy is a bit different than most proxies, normally proxies create a new connection to IRC server when a new client connects to it, but <strong>irssi proxy shares your existing IRC connection(s) to multiple clients</strong>. And even more clearly: <strong>You can use only one IRC server connection of the irssi proxy to IRC with as many clients as you want</strong>. Can anyone figure out even more easier ways to say this, so I wouldn’t need to try to explain this thing for minutes every time? :)</p>
+
+<p>Irssi proxy supports sharing multiple server connections in different ports, like you can share network in port 2777 and efnet in port 2778.</p>
+
+<p>Usage in proxy side:</p>
+
+<div><div><pre><code>/LOAD proxy
+/SET irssiproxy_password &lt;password&gt;
+/SET irssiproxy_ports &lt;network&gt;=&lt;port&gt; ... (eg. IRCnet=2777 efnet=2778)
+</code></pre></div></div>
+
+<p><strong>NOTE</strong>: you <strong>MUST</strong> add all the servers you are using to server and network lists with <code>/SERVER ADD</code> and <code>/NETWORK ADD</code>. ..Except if you really don’t want to for some reason, and you only use one server connection, you may simply set:</p>
+
+<div><div><pre><code>/SET irssiproxy_ports *=2777
+</code></pre></div></div>
+
+<p>Usage in client side:</p>
+
+<p>Just connect to the irssi proxy like it is a normal server with password specified in <code>/SET irssiproxy_password</code>. For example:</p>
+
+<div><div><pre><code>/SERVER ADD -network IRCnet my.irssi-proxy.org 2777 secret
+/SERVER ADD -network efnet my.irssi-proxy.org 2778 secret
+</code></pre></div></div>
+
+<p>Irssi proxy works fine with other IRC clients as well.</p>
+
+<p><strong>SOCKS</strong></p>
+
+<p>Irssi can be compiled with socks support (<code>--with-socks</code> option to configure), which requires “dante” and routes all connections through the proxy specified in the system-wide /etc/socks.conf. This method is known to have issues in Mac OS X.</p>
+
+<p>Note that <code>/SET proxy</code> settings don’t have anything to do with socks.</p>
+
+<p>Using <a href="https://github.com/rofl0r/proxychains-ng">proxychains-ng</a> is recommended over recompiling irssi.</p>
+
+<p><strong>Others</strong></p>
+
+<p>IRC bouncers usually work like IRC servers, and want a password. You can give it with:</p>
+
+<div><div><pre><code>/SET proxy_password &lt;password&gt;
+</code></pre></div></div>
+
+<p>Irssi’s defaults for connect strings are</p>
+
+<div><div><pre><code>/SET proxy_string CONNECT %s %d
+/SET proxy_string_after
+</code></pre></div></div>
+
+<p>The proxy_string is sent before NICK/USER commands, the proxy_string_after is sent after them. %s and %d can be used with both of them.</p>
+
+<h2 id="irssis-settings">11. Irssi’s settings</h2>
+
+<p>Here’s some settings you might want to change (the default value is shown): Also check the <a href="/documentation/settings/">Settings Documentation</a></p>
+
+<p><strong>Queries</strong></p>
+
+<dl>
+ <dt>/SET autocreate_own_query ON</dt>
+ <dd>Should new query window be created when you send message to someone (with <code>/MSG</code>).</dd>
+ <dt>/SET autocreate_query_level MSGS</dt>
+ <dd>New query window should be created when receiving messages with this level. MSGS, DCCMSGS and NOTICES levels work currently. You can disable this with <code>/SET -clear autocreate_query_level</code>.</dd>
+ <dt>/SET autoclose_query 0</dt>
+ <dd>Query windows can be automatically closed after certain time of inactivity. Queries with unread messages aren’t closed and active window is neither never closed. The value is given in seconds.</dd>
+</dl>
+
+<p><strong>Windows</strong></p>
+
+<dl>
+ <dt>/SET use_msgs_window OFF</dt>
+ <dd>Create messages window at startup. All private messages go to this window. This only makes sense if you’ve disabled automatic query windows. Message window can also be created manually with /WINDOW LEVEL MSGS, /WINDOW NAME (msgs).</dd>
+ <dt>/SET use_status_window ON</dt>
+ <dd>Create status window at startup. All messages that don’t really have better place go here, like all /WHOIS replies etc. Status window can also be created manually with <code>/WINDOW LEVEL ALL -MSGS</code>, <code>/WINDOW NAME (status)</code>.</dd>
+ <dt>/SET autocreate_windows ON</dt>
+ <dd>Should we create new windows for new window items or just place everything in one window</dd>
+ <dt>/SET autoclose_windows ON</dt>
+ <dd>Should window be automatically closed when the last item in them is removed (ie. <code>/PART</code>, <code>/UNQUERY</code>).</dd>
+ <dt>/SET reuse_unused_windows OFF</dt>
+ <dd>When finding where to place new window item (channel, query) Irssi first tries to use already existing empty windows. If this is set ON, new window will always be created for all window items. This setting is ignored if autoclose_windows is set ON.</dd>
+ <dt>/SET window_auto_change OFF</dt>
+ <dd>Should Irssi automatically change to automatically created windows - usually queries when someone sends you a message. To prevent accidentally sending text meant to some other channel/nick, Irssi clears the input buffer when changing the window. The text is still in scrollback buffer, you can get it back with pressing arrow up key.</dd>
+ <dt>/SET print_active_channel OFF</dt>
+ <dd>When you keep more than one channel in same window, Irssi prints the messages coming to active channel as <code>&lt;nick&gt; text</code> and other channels as <code>&lt;nick:channel&gt; text</code>. If this setting is set ON, the messages to active channels are also printed in the latter way.</dd>
+ <dt>/SET window_history OFF</dt>
+ <dd>Should command history be kept separate for each window.</dd>
+</dl>
+
+<p><strong>User information</strong></p>
+
+<dl>
+ <dt>/SET nick</dt>
+ <dd>Your nick name</dd>
+ <dt>/SET alternate_nick</dt>
+ <dd>Your alternate nick.</dd>
+ <dt>/SET user_name</dt>
+ <dd>Your username, if you have ident enabled this doesn’t affect anything</dd>
+ <dt>/SET real_name</dt>
+ <dd>Your real name.</dd>
+</dl>
+
+<p><strong>Server information</strong></p>
+
+<dl>
+ <dt>/SET skip_motd OFF</dt>
+ <dd>Should we hide server’s MOTD (Message Of The Day).</dd>
+ <dt>/SET server_reconnect_time 300</dt>
+ <dd>Seconds to wait before connecting to same server again. Don’t set this too low since it usually doesn’t help at all - if the host is down, the few extra minutes of waiting won’t hurt much.</dd>
+ <dt>/SET lag_max_before_disconnect 300</dt>
+ <dd>Maximum server lag in seconds before disconnecting and trying to reconnect. This happens mostly only when network breaks between you and IRC server.</dd>
+</dl>
+
+<p><strong>Appearance</strong></p>
+
+<dl>
+ <dt>/SET timestamps ON</dt>
+ <dd>Show timestamps before each message.</dd>
+ <dt>/SET hide_text_style OFF</dt>
+ <dd>Hide all bolds, underlines, MIRC colors, etc.</dd>
+ <dt>/SET show_nickmode ON</dt>
+ <dd>Show the nick’s mode before nick in channels, ie. ops have <code>&lt;@nick&gt;</code>, voices <code>&lt;+nick&gt;</code> and others <code>&lt; nick&gt;</code></dd>
+ <dt>/SET show_nickmode_empty ON</dt>
+ <dd>If the nick doesn’t have a mode, use one space. ie. ON: <code>&lt; nick&gt;</code>, OFF: <code>&lt;nick&gt;</code></dd>
+ <dt>/SET show_quit_once OFF</dt>
+ <dd>Show quit message only once in some of the channel windows the nick was in instead of in all windows.</dd>
+ <dt>/SET lag_min_show 100</dt>
+ <dd>Show the server lag in status bar if it’s bigger than this, the unit is 1/100 of seconds (ie. the default value of 100 = 1 second).</dd>
+ <dt>/SET indent 10</dt>
+ <dd>When lines are longer than screen width they have to be split to multiple lines. This specifies how much space to put at the beginning of the line before the text begins. This can be overridden in text formats with <code>%|</code> format.</dd>
+ <dt>/SET activity_hide_targets</dt>
+ <dd>If you don’t want to see window activity in some certain channels or queries, list them here. For example <code>#boringchannel =bot1 =bot2</code>. If any highlighted text or message for you appears in that window, this setting is ignored and the activity is shown.</dd>
+</dl>
+
+<p><strong>Nick completion</strong></p>
+
+<dl>
+ <dt>/SET completion_auto OFF</dt>
+ <dd>Automatically complete the nick if line begins with start of nick and the completion character. Learn to use the tab-completion instead, it’s a lot better ;)</dd>
+ <dt>/SET completion_char :</dt>
+ <dd>Completion character to use.</dd>
+</dl>
+
+<h3 id="for-all-the-ircii-people">For all the ircII people</h3>
+
+<p>I don’t like automatic query windows, I don’t like status window, I do like msgs window where all messages go:</p>
+
+<div><div><pre><code>/SET autocreate_own_query OFF
+/SET autocreate_query_level DCCMSGS
+/SET use_status_window OFF
+/SET use_msgs_window ON
+</code></pre></div></div>
+
+<p>Disable automatic window closing when <code>/PART</code>ing channel or <code>/UNQUERY</code>ing query:</p>
+
+<div><div><pre><code>/SET autoclose_windows OFF
+/SET reuse_unused_windows ON
+</code></pre></div></div>
+
+<p>Here’s the settings that make irssi work exactly like ircII in window management (send me a note if you can think of more):</p>
+
+<div><div><pre><code>/SET autocreate_own_query OFF
+/SET autocreate_query_level NONE
+/SET use_status_window OFF
+/SET use_msgs_window OFF
+/SET reuse_unused_windows ON
+/SET windows_auto_renumber OFF
+
+/SET autostick_split_windows OFF
+/SET autoclose_windows OFF
+/SET print_active_channel ON
+</code></pre></div></div>
+
+<h2 id="statusbar">12. Statusbar</h2>
+
+<p><code>/STATUSBAR</code> displays a list of the current statusbars, along with their position and visibility:</p>
+
+<div><div><pre><code> Name Type Placement Position Visible
+ window window bottom 0 always
+ window_inact window bottom 1 inactive
+ prompt root bottom 100 always
+ topic root top 1 always
+</code></pre></div></div>
+
+<p><code>/STATUSBAR &lt;name&gt;</code> prints the statusbar settings (type, placement, position, visibility) as well as its items. <code>/STATUSBAR &lt;name&gt; ENABLE|DISABLE</code> enables/disables the statusbar. <code>/STATUSBAR &lt;name&gt; RESET</code> resets the statusbar to its default settings, or if the statusbar was created by you, it will be removed.</p>
+
+<p>The statusbar type can be either window or root. If the type is window, then a statusbar will be created for each split window, otherwise it will be created only once. Placement can be top or bottom, which refers to the top or bottom of the screen. Position is a number, the higher the value the lower it will appear in-screen. Visible can be always, active or inactive. Active/inactive is useful only with split windows; one split window is active and the rest are inactive. To adjust these settings, the following commands are available:</p>
+
+<div><div><pre><code>/STATUSBAR &lt;name&gt; TYPE window|root
+/STATUSBAR &lt;name&gt; PLACEMENT top|bottom
+/STATUSBAR &lt;name&gt; POSITION &lt;num&gt;
+/STATUSBAR &lt;name&gt; VISIBLE always|active|inactive
+</code></pre></div></div>
+
+<p>Statusbar items can also be added or removed via command. Note that when loading new statusbar scripts that add items, you will need to specify where you want to show the item and how it is aligned. This can be accomplished using the below commands:</p>
+
+<div><div><pre><code>/STATUSBAR &lt;name&gt; ADD [-before | -after &lt;item&gt;] [-priority #] [-alignment left|right] &lt;item&gt;
+/STATUSBAR &lt;name&gt; REMOVE &lt;item&gt;
+</code></pre></div></div>
+
+<p>For statusbar scripts, the item name is usually equivalent to the script name. The documentation of the script ought to tell you if this is not the case. For example, to add mail.pl before the window activity item, use: <code>/STATUSBAR window ADD -before act mail</code>.</p> \ No newline at end of file
diff --git a/docs/startup-HOWTO.txt b/docs/startup-HOWTO.txt
new file mode 100644
index 0000000..90d278d
--- /dev/null
+++ b/docs/startup-HOWTO.txt
@@ -0,0 +1,799 @@
+Startup How-To
+
+To new Irssi users (not to new IRC users ..)
+
+Copyright (c) 2000-2002 by Timo Sirainen, release under [1]GNU FDL 1.1 license.
+
+Index with some FAQ questions that are answered in the chapter:
+
+ 1. First steps
+ 2. Basic user interface usage
+ □ Split windows work in weird way
+ □ How can I easily switch between windows?
+ □ But alt-1 etc. don’t work!
+ 3. Server and channel automation
+ □ How do I automatically connect to servers at startup?
+ □ How do I automatically join to channels at startup?
+ □ How do I automatically send commands to server at connect?
+ 4. Setting up windows and automatically restoring them at startup
+ 5. Status and msgs windows & message levels
+ □ I want /WHOIS to print reply to current window
+ □ I want all messages to go to one window, not create new windows
+ 6. How support for multiple servers works in irssi
+ □ I connected to some server that doesn’t respond and now irssi keeps
+ trying to reconnect to it again and again, how can I stop it??
+ □ I want to have own status and/or msgs window for each servers
+ 7. /LASTLOG and jumping around in scrollback
+ □ How can I save all texts in a window to file?
+ 8. Logging
+ 9. Changing keyboard bindings
+ □ How do I make F1 key do something?
+10. Proxies and IRC bouncers
+11. Irssi’s settings
+ □ For all the ircII people
+12. Statusbar
+ □ I loaded a statusbar script but it’s not visible anywhere!
+
+1. First steps
+
+IRC Networks are made of servers, and servers have channels. The default config
+has a few predefined networks, to list them:
+
+/NETWORK LIST
+
+And to connect to one of those networks and join a channel:
+
+/CONNECT liberachat
+/JOIN #irssi
+
+To add more networks:
+
+/NETWORK ADD ExampleNet
+
+Then add some servers (with -auto to automatically connect):
+
+/SERVER ADD -auto -network ExampleNet irc.example.net
+
+Automatically join to channels after connected to server:
+
+/CHANNEL ADD -auto #lounge ExampleNet
+
+To modify existing networks (or servers, or channels) just ADD again using the
+same name as before. This configures a network to identify with nickserv and
+wait for 2 seconds before joining channels:
+
+/NETWORK ADD -autosendcmd "/^msg nickserv ident pass;wait 2000" ExampleNet
+
+If you have irssi 0.8.18 or higher and the irc network supports it, you can use
+SASL instead of nickserv, which is more reliable:
+
+/NETWORK ADD -sasl_username yourname -sasl_password yourpassword -sasl_mechanism PLAIN liberachat
+
+These commands have many more options, see their help for details:
+
+/HELP NETWORK
+/HELP SERVER
+/HELP CHANNEL
+/HELP
+
+If you want lines containing your nick to hilight:
+
+/HILIGHT nick
+
+Or, for irssi 0.8.18 or higher:
+
+/SET hilight_nick_matches_everywhere ON
+
+To get beeps on private messages or highlights:
+
+/SET beep_msg_level MSGS HILIGHT DCCMSGS
+
+No other irssi settings are needed (don’t enable bell_beeps), but there may be
+settings to change in your terminal multiplexer (screen/tmux), your terminal,
+or your desktop environment.
+
+2. Basic user interface usage
+
+Windows can be scrolled up/down with PgUp and PgDown keys. If they don’t work
+for you, use Meta-p and Meta-n keys. For jumping to beginning or end of the
+buffer, use /SB HOME and /SB END commands.
+
+By default, irssi uses “hidden windows” for everything. Hidden windows are
+created every time you /JOIN a channel or /QUERY someone. There’s several ways
+you can change between these windows:
+
+Meta-1, Meta-2, .. Meta-0 - Jump directly between windows 1-10
+Meta-q .. Meta-o - Jump directly between windows 11-19
+/WINDOW <number> - Jump to any window with specified number
+Ctrl-P, Ctrl-N - Jump to previous / next window
+
+Clearly the easiest way is to use Meta-number keys. Meta usually means the ALT
+key, but if that doesn’t work, you can use ESC.
+
+Mac OS X users with ALT key issues might prefer using [2]iTerm2 instead of the
+default terminal emulator.
+
+Alt key as meta, for xterm/rxvt users
+
+If you use xterm or rxvt, you may need to set a few X resources:
+
+ XTerm*eightBitInput: false
+ XTerm*metaSendsEscape: true
+
+With rxvt, you can also specify which key acts as Meta key. So if you want to
+use ALT instead of Windows key for it, use:
+
+ rxvt*modifier: alt
+
+You could do this by changing the X key mappings:
+
+ xmodmap -e "keysym Alt_L = Meta_L Alt_L"
+
+And how exactly do you set these X resources? For Debian, there’s /etc/X11/
+Xresources/xterm file where you can put them and it’s read automatically when X
+starts. ~/.Xresources and ~/.Xdefaults files might also work. If you can’t get
+anything else to work, just copy and paste those lines to ~/.Xresources and
+directly call xrdb -merge ~/.Xresources in some xterm. The resources affect
+only the new xterms you start, not existing ones.
+
+Split windows and window items
+
+Note: [3]this guide might be a better introduction to window splits
+
+Irssi also supports split windows, they’ve had some problems in past but I
+think they should work pretty well now :) Here’s some commands related to them:
+
+/WINDOW NEW - Create new split window
+/WINDOW NEW HIDE - Create new hidden window
+/WINDOW CLOSE - Close split or hidden window
+
+/WINDOW HIDE [<number>|<name>] - Make the split window hidden window
+/WINDOW SHOW <number>|<name> - Make the hidden window a split window
+
+/WINDOW SHRINK [<lines>] - Shrink the split window
+/WINDOW GROW [<lines>] - Grow the split window
+/WINDOW BALANCE - Balance the sizes of all split windows
+
+By default, irssi uses “sticky windowing” for split windows. This means that
+windows created inside one split window cannot be moved to another split window
+without some effort. For example you could have following window layout:
+
+ Split window 1: win#1 - Status window, win#2 - Messages window
+ Split window 2: win#3 - IRCnet/#channel1, win#4 - IRCnet/#channel2
+ Split window 3: win#5 - efnet/#channel1, win#6 - efnet/#channel2
+
+When you are in win#1 and press ALT-6, irssi jumps to split window #3 and moves
+the efnet/#channel2 the active window.
+
+With non-sticky windowing the windows don’t have any relationship with split
+windows, pressing ALT-6 in win#1 moves win#6 to split window 1 and sets it
+active, except if win#6 was already visible in some other split window irssi
+just changes to that split window. This it the way windows work with ircii, if
+you prefer it you can set it with
+
+/SET autostick_split_windows OFF
+
+Each window can have multiple channels, queries and other “window items” inside
+them. If you don’t like windows at all, you disable automatic creating of them
+with
+
+/SET autocreate_windows OFF
+
+And if you keep all channels in one window, you most probably want the channel
+name printed in each line:
+
+/SET print_active_channel ON
+
+If you want to group only some channels or queries in one window, use
+
+/JOIN -window #channel
+/QUERY -window nick
+
+3. Server and channel automation
+
+Irssi’s multiple IRC network support is IMHO very good - at least compared to
+other clients :) Even if you’re only in one IRC network you should group all
+your servers to be in the same IRC network as this helps with reconnecting if
+your primary server breaks and is probably useful in some other ways too :) For
+information how to actually use irssi correctly with multiple servers see the
+chapter 6.
+
+First you need to have your IRC network set, use /NETWORK command to see if
+it’s already there. If it isn’t, use /NETWORK ADD yournetwork. If you want to
+execute some commands automatically when you’re connected to some network, use
+-autosendcmd option. Here’s some examples:
+
+/NETWORK ADD -autosendcmd '^msg bot invite' IRCnet
+/NETWORK ADD -autosendcmd "/^msg nickserv ident pass;wait 2000" OFTC
+
+After that you need to add your servers. For example:
+
+/SERVER ADD -auto -network IRCnet irc.kpnqwest.fi 6667
+/SERVER ADD -auto -network worknet irc.mycompany.com 6667 password
+
+The -auto option specifies that this server is automatically connected at
+startup. You don’t need to make more than one server with -auto option to one
+IRC network, other servers are automatically connected in same network if the
+-auto server fails.
+
+And finally channels:
+
+/CHANNEL ADD -auto -bots *!*bot@host.org -botcmd "/^msg $0 op pass" #irssi efnet
+/CHANNEL ADD -auto #secret IRCnet password
+
+-bots and -botcmd should be the only ones needing a bit of explaining. They’re
+used to send commands automatically to bot when channel is joined, usually to
+get ops automatically. You can specify multiple bot masks with -bots option
+separated with spaces (and remember to quote the string then). The $0 in
+-botcmd specifies the first found bot in the list. If you don’t need the bot
+masks (ie. the bot is always with the same nick, like chanserv) you can give
+only the -botcmd option and the command is always sent.
+
+4. Setting up windows and automatically restoring them at startup
+
+First connect to all the servers, join the channels and create the queries you
+want. If you want to move the windows or channels around use commands:
+
+/WINDOW MOVE LEFT/RIGHT/number - move window elsewhere
+/WINDOW ITEM MOVE <number>|<name> - move channel/query to another window
+
+When everything looks the way you like, use /LAYOUT SAVE command (and /SAVE, if
+you don’t have autosaving enabled) and when you start irssi next time, irssi
+remembers the positions of the channels, queries and everything. This
+“remembering” doesn’t mean that simply using /LAYOUT SAVE would automatically
+make irssi reconnect to all servers and join all channels, you’ll need the /
+SERVER ADD -auto and /CHANNEL ADD -auto commands to do that.
+
+If you want to change the layout, you just rearrange the layout like you want
+it and use /LAYOUT SAVE again. If you want to remove the layout for some
+reason, use /LAYOUT RESET.
+
+5. Status and msgs windows & message levels
+
+By default, all the “extra messages” go to status window. This means pretty
+much all messages that don’t clearly belong to some channel or query. Some
+people like it, some don’t. If you want to remove it, use
+
+/SET use_status_window OFF
+
+This doesn’t have any effect until you restart irssi. If you want to remove it
+immediately, just /WINDOW CLOSE it.
+
+Another common window is “messages window”, where all private messages go. By
+default it’s disabled and query windows are created instead. To make all
+private messages go to msgs window, say:
+
+/SET use_msgs_window ON
+/SET autocreate_query_level DCCMSGS (or if you don't want queries to
+ dcc chats either, say NONE)
+
+use_msgs_window either doesn’t have any effect until restarting irssi. To
+create it immediately say:
+
+/WINDOW NEW HIDE - create the window
+/WINDOW NAME (msgs) - name it to "(msgs)"
+/WINDOW LEVEL MSGS - make all private messages go to this window
+/WINDOW MOVE 1 - move it to first window
+
+Note that neither use_msgs_window nor use_status_window have any effect at all
+if /LAYOUT SAVE has been used.
+
+This brings us to message levels.. What are they? All messages that irssi
+prints have one or more “message levels”. Most common are PUBLIC for public
+messages in channels, MSGS for private messages and CRAP for all sorts of
+messages with no real classification. You can get a whole list of levels with
+
+/HELP levels
+
+Status window has message level ALL -MSGS, meaning that all messages, except
+private messages, without more specific place go to status window. The -MSGS is
+there so it doesn’t conflict with messages window.
+
+6. How support for multiple servers works in irssi
+
+ircii and several other clients support multiple servers by placing the
+connection into some window. IRSSI DOES NOT. There is no required relationship
+between window and server. You can connect to 10 servers and manage them all in
+just one window, or join channel in each one of them to one single window if
+you really want to. That being said, here’s how you do connect to new server
+without closing the old connection:
+
+/CONNECT irc.server.org
+
+Instead of the /SERVER which disconnects the existing connection. To see list
+of all active connections, use /SERVER without any parameters. You should see a
+list of something like:
+
+ -!- IRCNet: irc.song.fi:6667 (IRCNet)
+ -!- OFTC: irc.oftc.net:6667 (OFTC)
+ -!- RECON-1: 192.168.0.1:6667 () (02:59 left before reconnecting)
+
+Here you see that we’re connected to IRCNet and OFTC networks. The IRCNet at
+the beginning is called the “server tag” while the (IRCnet) at the end shows
+the IRC network. Server tag specifies unique tag to refer to the server,
+usually it’s the same as the IRC network. When the IRC network isn’t known it’s
+some part of the server name. When there’s multiple connections to same IRC
+network or server, irssi adds a number after the tag so there could be network,
+network2, network3 etc.
+
+Server tags beginning with RECON- mean server reconnections. Above we see that
+connection to server at 192.168.0.1 wasn’t successful and irssi will try to
+connect it again in 3 minutes.
+
+To disconnect one of the servers, or to stop irssi from reconnecting, use
+
+/DISCONNECT network - disconnect server with tag "network"
+/DISCONNECT recon-1 - stop trying to reconnect to RECON-1 server
+/RMRECONNS - stop all server reconnections
+
+/RECONNECT recon-1 - immediately try reconnecting back to RECON-1
+/RECONNECT ALL - immediately try reconnecting back to all
+ servers in reconnection queue
+
+Now that you’re connected to all your servers, you’ll have to know how to
+specify which one of them you want to use. One way is to have an empty window,
+like status or msgs window. In it, you can specify which server to set active
+with
+
+/WINDOW SERVER tag - set server "tag" active
+Ctrl-X - set the next server in list active
+
+When the server is active, you can use it normally. When there’s multiple
+connected servers, irssi adds [servertag] prefix to all messages in non-channel
+/query messages so you’ll know where it came from.
+
+Several commands also accept -servertag option to specify which server it
+should use:
+
+/MSG -tag nick message
+/JOIN -tag #channel
+/QUERY -tag nick
+
+/MSG tab completion also automatically adds the -tag option when nick isn’t in
+active server.
+
+Window’s server can be made sticky. When sticky, it will never automatically
+change to anything else, and if server gets disconnected, the window won’t have
+any active server. When the server gets connected again, it is automatically
+set active in the window. To set the window’s server sticky use
+
+/WINDOW SERVER -sticky tag
+
+This is useful if you wish to have multiple status or msgs windows, one for
+each server. Here’s how to do them (repeat for each server)
+
+/WINDOW NEW HIDE
+/WINDOW NAME (status)
+/WINDOW LEVEL ALL -MSGS
+/WINDOW SERVER -sticky network
+
+/WINDOW NEW HIDE
+/WINDOW NAME (msgs)
+/WINDOW LEVEL MSGS
+/WINDOW SERVER -sticky network
+
+7. /LASTLOG and jumping around in scrollback
+
+/LASTLOG command can be used for searching texts in scrollback buffer. Simplest
+usages are
+
+/LASTLOG word - print all lines with "word" in them
+/LASTLOG word 10 - print last 10 occurances of "word"
+/LASTLOG -topics - print all topic changes
+
+If there’s more than 1000 lines to be printed, irssi thinks that you probably
+made some mistake and won’t print them without -force option. If you want to
+save the full lastlog to file, use
+
+/LASTLOG -file ~/irc.log
+
+With -file option you don’t need -force even if there’s more than 1000 lines. /
+LASTLOG has a lot of other options too, see /HELP lastlog for details.
+
+Once you’ve found the lines you were interested in, you might want to check the
+discussion around them. Irssi has /SCROLLBACK (or alias /SB) command for
+jumping around in scrollback buffer. Since /LASTLOG prints the timestamp when
+the message was originally printed, you can use /SB GOTO hh:mm to jump directly
+there. To get back to the bottom of scrollback, use /SB END command.
+
+8. Logging
+
+Irssi can automatically log important messages when you’re set away (/AWAY
+reason). When you set yourself unaway (/AWAY), the new messages in away log are
+printed to screen. You can configure it with:
+
+/SET awaylog_level MSGS HILIGHT - Specifies what messages to log
+/SET awaylog_file ~/.irssi/away.log - Specifies the file to use
+
+Easiest way to start logging with Irssi is to use autologging. With it Irssi
+logs all channels and private messages to specified directory. You can turn it
+on with
+
+/SET autolog ON
+
+By default it logs pretty much everything execept CTCPS or CRAP (/WHOIS
+requests, etc). You can specify the logging level yourself with
+
+/SET autolog_level ALL -CRAP -CLIENTCRAP -CTCPS (this is the default)
+
+By default irssi logs to ~/irclogs/<servertag>/<target>.log. You can change
+this with
+
+/SET autolog_path ~/irclogs/$tag/$0.log (this is the default)
+
+The path is automatically created if it doesn’t exist. $0 specifies the target
+(channel/nick). You can make irssi automatically rotate the logs by adding date
+/time formats to the file name. The formats are in “man strftime” format. For
+example
+
+/SET autolog_path ~/irclogs/%Y/$tag/$0.%m-%d.log
+
+For logging only some specific channels or nicks, see /HELP log
+
+9. Changing keyboard bindings
+
+You can change any keyboard binding that terminal lets irssi know about. It
+doesn’t let irssi know everything, so for example shift-backspace can’t be
+bound unless you modify xterm resources somehow.
+
+/HELP bind tells pretty much everything there is to know about keyboard
+bindings. However, there’s the problem of how to bind some non-standard keys.
+They might differ a bit with each terminal, so you’ll need to find out what
+exactly the keypress produces. Easiest way to check that would be to see what
+it prints in cat. Here’s an example for pressing F1 key:
+
+ [cras@hurina] ~% cat
+ ^[OP
+
+So in irssi you would use /BIND ^[OP /ECHO F1 pressed. If you use multiple
+terminals which have different bindings for the key, it would be better to use
+eg.:
+
+/BIND ^[OP key F1
+/BIND ^[11~ key F1
+/BIND F1 /ECHO F1 pressed.
+
+10. Proxies and IRC bouncers
+
+Irssi supports connecting to IRC servers via a proxy. All server connections
+are then made through it, and if you’ve set up everything properly, you don’t
+need to do any /QUOTE SERVER commands manually.
+
+Here’s an example: You have your bouncer (lets say, BNC or BNC-like) listening
+in irc.bouncer.org port 5000. You want to use it to connect to servers
+irc.dal.net and irc.efnet.org. First you’d need to setup the bouncer:
+
+/SET use_proxy ON
+/SET proxy_address irc.bouncer.org
+/SET proxy_port 5000
+
+/SET proxy_password YOUR_BNC_PASSWORD_HERE
+/SET -clear proxy_string
+/SET proxy_string_after conn %s %d
+
+Then you’ll need to add the server connections. These are done exactly as if
+you’d want to connect directly to them. Nothing special about them:
+
+/SERVER ADD -auto -network dalnet irc.dal.net
+/SERVER ADD -auto -network efnet irc.efnet.org
+
+With the proxy /SETs however, irssi now connects to those servers through your
+BNC. All server connections are made through them so you can just forget that
+your bouncer even exists.
+
+If you don’t want to use the proxy for some reason, there’s -noproxy option
+which you can give to /SERVER and /SERVER ADD commands.
+
+Proxy specific settings:
+
+All proxies except irssi proxy and socks proxy have these settings in common:
+
+/SET use_proxy ON
+/SET proxy_address <Proxy host address>
+/SET proxy_port <Proxy port>
+
+HTTP proxy
+
+Use these settings with HTTP proxies:
+
+/SET -clear proxy_password
+/EVAL SET proxy_string CONNECT %s:%d HTTP/1.0\n\n
+
+BNC
+
+/SET proxy_password your_pass
+/SET -clear proxy_string
+/SET proxy_string_after conn %s %d
+
+dircproxy
+
+dircproxy separates the server connections by passwords. So, if you for example
+have network connection with password ircpass and OFTC connection with
+oftcpass, you would do something like this:
+
+/SET -clear proxy_password
+/SET -clear proxy_string
+
+/SERVER ADD -auto -network IRCnet fake.network 6667 ircpass
+/SERVER ADD -auto -network OFTC fake.oftc 6667 oftcpass
+
+The server name and port you give isn’t used anywhere, so you can put anything
+you want in there.
+
+psyBNC
+
+psyBNC has internal support for multiple servers. However, it could be a bit
+annoying to use, and some people just use different users for connecting to
+different servers. You can manage this in a bit same way as with dircproxy, by
+creating fake connections:
+
+/SET -clear proxy_password
+/SET -clear proxy_string
+
+/NETWORK ADD -user networkuser IRCnet
+/SERVER ADD -auto -network IRCnet fake.network 6667 ircpass
+/NETWORK ADD -user oftcuser OFTC
+/SERVER ADD -auto -network OFTC fake.oftc 6667 oftcpass
+
+So, you’ll specify the usernames with /NETWORK ADD command, and the user’s
+password with /SERVER ADD.
+
+Irssi proxy
+
+Irssi contains it’s own proxy which you can build giving \--with-proxy option
+to configure. You’ll still need to run irssi in a screen to use it though.
+
+Irssi proxy is a bit different than most proxies, normally proxies create a new
+connection to IRC server when a new client connects to it, but irssi proxy
+shares your existing IRC connection(s) to multiple clients. And even more
+clearly: You can use only one IRC server connection of the irssi proxy to IRC
+with as many clients as you want. Can anyone figure out even more easier ways
+to say this, so I wouldn’t need to try to explain this thing for minutes every
+time? :)
+
+Irssi proxy supports sharing multiple server connections in different ports,
+like you can share network in port 2777 and efnet in port 2778.
+
+Usage in proxy side:
+
+/LOAD proxy
+/SET irssiproxy_password <password>
+/SET irssiproxy_ports <network>=<port> ... (eg. IRCnet=2777 efnet=2778)
+
+NOTE: you MUST add all the servers you are using to server and network lists
+with /SERVER ADD and /NETWORK ADD. ..Except if you really don’t want to for
+some reason, and you only use one server connection, you may simply set:
+
+/SET irssiproxy_ports *=2777
+
+Usage in client side:
+
+Just connect to the irssi proxy like it is a normal server with password
+specified in /SET irssiproxy_password. For example:
+
+/SERVER ADD -network IRCnet my.irssi-proxy.org 2777 secret
+/SERVER ADD -network efnet my.irssi-proxy.org 2778 secret
+
+Irssi proxy works fine with other IRC clients as well.
+
+SOCKS
+
+Irssi can be compiled with socks support (--with-socks option to configure),
+which requires “dante” and routes all connections through the proxy specified
+in the system-wide /etc/socks.conf. This method is known to have issues in Mac
+OS X.
+
+Note that /SET proxy settings don’t have anything to do with socks.
+
+Using [4]proxychains-ng is recommended over recompiling irssi.
+
+Others
+
+IRC bouncers usually work like IRC servers, and want a password. You can give
+it with:
+
+/SET proxy_password <password>
+
+Irssi’s defaults for connect strings are
+
+/SET proxy_string CONNECT %s %d
+/SET proxy_string_after
+
+The proxy_string is sent before NICK/USER commands, the proxy_string_after is
+sent after them. %s and %d can be used with both of them.
+
+11. Irssi’s settings
+
+Here’s some settings you might want to change (the default value is shown):
+Also check the [5]Settings Documentation
+
+Queries
+
+/SET autocreate_own_query ON
+ Should new query window be created when you send message to someone (with /
+ MSG).
+/SET autocreate_query_level MSGS
+ New query window should be created when receiving messages with this level.
+ MSGS, DCCMSGS and NOTICES levels work currently. You can disable this with
+ /SET -clear autocreate_query_level.
+/SET autoclose_query 0
+ Query windows can be automatically closed after certain time of inactivity.
+ Queries with unread messages aren’t closed and active window is neither
+ never closed. The value is given in seconds.
+
+Windows
+
+/SET use_msgs_window OFF
+ Create messages window at startup. All private messages go to this window.
+ This only makes sense if you’ve disabled automatic query windows. Message
+ window can also be created manually with /WINDOW LEVEL MSGS, /WINDOW NAME
+ (msgs).
+/SET use_status_window ON
+ Create status window at startup. All messages that don’t really have better
+ place go here, like all /WHOIS replies etc. Status window can also be
+ created manually with /WINDOW LEVEL ALL -MSGS, /WINDOW NAME (status).
+/SET autocreate_windows ON
+ Should we create new windows for new window items or just place everything
+ in one window
+/SET autoclose_windows ON
+ Should window be automatically closed when the last item in them is removed
+ (ie. /PART, /UNQUERY).
+/SET reuse_unused_windows OFF
+ When finding where to place new window item (channel, query) Irssi first
+ tries to use already existing empty windows. If this is set ON, new window
+ will always be created for all window items. This setting is ignored if
+ autoclose_windows is set ON.
+/SET window_auto_change OFF
+ Should Irssi automatically change to automatically created windows -
+ usually queries when someone sends you a message. To prevent accidentally
+ sending text meant to some other channel/nick, Irssi clears the input
+ buffer when changing the window. The text is still in scrollback buffer,
+ you can get it back with pressing arrow up key.
+/SET print_active_channel OFF
+ When you keep more than one channel in same window, Irssi prints the
+ messages coming to active channel as <nick> text and other channels as
+ <nick:channel> text. If this setting is set ON, the messages to active
+ channels are also printed in the latter way.
+/SET window_history OFF
+ Should command history be kept separate for each window.
+
+User information
+
+/SET nick
+ Your nick name
+/SET alternate_nick
+ Your alternate nick.
+/SET user_name
+ Your username, if you have ident enabled this doesn’t affect anything
+/SET real_name
+ Your real name.
+
+Server information
+
+/SET skip_motd OFF
+ Should we hide server’s MOTD (Message Of The Day).
+/SET server_reconnect_time 300
+ Seconds to wait before connecting to same server again. Don’t set this too
+ low since it usually doesn’t help at all - if the host is down, the few
+ extra minutes of waiting won’t hurt much.
+/SET lag_max_before_disconnect 300
+ Maximum server lag in seconds before disconnecting and trying to reconnect.
+ This happens mostly only when network breaks between you and IRC server.
+
+Appearance
+
+/SET timestamps ON
+ Show timestamps before each message.
+/SET hide_text_style OFF
+ Hide all bolds, underlines, MIRC colors, etc.
+/SET show_nickmode ON
+ Show the nick’s mode before nick in channels, ie. ops have <@nick>, voices
+ <+nick> and others < nick>
+/SET show_nickmode_empty ON
+ If the nick doesn’t have a mode, use one space. ie. ON: < nick>, OFF:
+ <nick>
+/SET show_quit_once OFF
+ Show quit message only once in some of the channel windows the nick was in
+ instead of in all windows.
+/SET lag_min_show 100
+ Show the server lag in status bar if it’s bigger than this, the unit is 1/
+ 100 of seconds (ie. the default value of 100 = 1 second).
+/SET indent 10
+ When lines are longer than screen width they have to be split to multiple
+ lines. This specifies how much space to put at the beginning of the line
+ before the text begins. This can be overridden in text formats with %|
+ format.
+/SET activity_hide_targets
+ If you don’t want to see window activity in some certain channels or
+ queries, list them here. For example #boringchannel =bot1 =bot2. If any
+ highlighted text or message for you appears in that window, this setting is
+ ignored and the activity is shown.
+
+Nick completion
+
+/SET completion_auto OFF
+ Automatically complete the nick if line begins with start of nick and the
+ completion character. Learn to use the tab-completion instead, it’s a lot
+ better ;)
+/SET completion_char :
+ Completion character to use.
+
+For all the ircII people
+
+I don’t like automatic query windows, I don’t like status window, I do like
+msgs window where all messages go:
+
+/SET autocreate_own_query OFF
+/SET autocreate_query_level DCCMSGS
+/SET use_status_window OFF
+/SET use_msgs_window ON
+
+Disable automatic window closing when /PARTing channel or /UNQUERYing query:
+
+/SET autoclose_windows OFF
+/SET reuse_unused_windows ON
+
+Here’s the settings that make irssi work exactly like ircII in window
+management (send me a note if you can think of more):
+
+/SET autocreate_own_query OFF
+/SET autocreate_query_level NONE
+/SET use_status_window OFF
+/SET use_msgs_window OFF
+/SET reuse_unused_windows ON
+/SET windows_auto_renumber OFF
+
+/SET autostick_split_windows OFF
+/SET autoclose_windows OFF
+/SET print_active_channel ON
+
+12. Statusbar
+
+/STATUSBAR displays a list of the current statusbars, along with their position
+and visibility:
+
+ Name Type Placement Position Visible
+ window window bottom 0 always
+ window_inact window bottom 1 inactive
+ prompt root bottom 100 always
+ topic root top 1 always
+
+/STATUSBAR <name> prints the statusbar settings (type, placement, position,
+visibility) as well as its items. /STATUSBAR <name> ENABLE|DISABLE enables/
+disables the statusbar. /STATUSBAR <name> RESET resets the statusbar to its
+default settings, or if the statusbar was created by you, it will be removed.
+
+The statusbar type can be either window or root. If the type is window, then a
+statusbar will be created for each split window, otherwise it will be created
+only once. Placement can be top or bottom, which refers to the top or bottom of
+the screen. Position is a number, the higher the value the lower it will appear
+in-screen. Visible can be always, active or inactive. Active/inactive is useful
+only with split windows; one split window is active and the rest are inactive.
+To adjust these settings, the following commands are available:
+
+/STATUSBAR <name> TYPE window|root
+/STATUSBAR <name> PLACEMENT top|bottom
+/STATUSBAR <name> POSITION <num>
+/STATUSBAR <name> VISIBLE always|active|inactive
+
+Statusbar items can also be added or removed via command. Note that when
+loading new statusbar scripts that add items, you will need to specify where
+you want to show the item and how it is aligned. This can be accomplished using
+the below commands:
+
+/STATUSBAR <name> ADD [-before | -after <item>] [-priority #] [-alignment left|right] <item>
+/STATUSBAR <name> REMOVE <item>
+
+For statusbar scripts, the item name is usually equivalent to the script name.
+The documentation of the script ought to tell you if this is not the case. For
+example, to add mail.pl before the window activity item, use: /STATUSBAR window
+ADD -before act mail.
+
+
+References:
+
+[1] https://www.gnu.org/licenses/fdl.html
+[2] https://www.iterm2.com/
+[3] https://quadpoint.org/articles/irssisplit/
+[4] https://github.com/rofl0r/proxychains-ng
+[5] https://irssi.org/documentation/settings/