Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-updates > by-pkgid > 867af164e11a56911a17b9d4b5f6e9d2 > files > 48

weechat-2.4-2.1.mga7.armv7hl.rpm

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.7">
<meta name="author" content="Sébastien Helleu">
<title>WeeChat Release Notes</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<style>
/* Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment @import statement when using as custom stylesheet */
/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}
audio,canvas,video{display:inline-block}
audio:not([controls]){display:none;height:0}
script{display:none!important}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
a{background:none}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
abbr[title]{border-bottom:1px dotted}
b,strong{font-weight:bold}
dfn{font-style:italic}
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
ul.square{list-style-type:square}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
abbr{text-transform:none}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
blockquote cite::before{content:"\2014 \0020"}
blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
:not(pre)>code.nobreak{word-wrap:normal}
:not(pre)>code.nowrap{white-space:nowrap}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
details>summary:first-of-type{cursor:pointer;display:list-item;outline:none;margin-bottom:.75em}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
.exampleblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child{margin-bottom:0}
.sidebarblock{border-style:solid;border-width:1px;border-color:#dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;-webkit-border-radius:4px;border-radius:4px}
.sidebarblock>:first-child{margin-top:0}
.sidebarblock>:last-child{margin-bottom:0}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
.listingblock>.content{position:relative}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.prettyprint{background:#f7f7f8}
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
pre.prettyprint li code[data-lang]::before{opacity:1}
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
table.linenotable td.code{padding-left:.75em}
table.linenotable td.linenos{border-right:1px solid currentColor;opacity:.35;padding-right:.5em}
pre.pygments .lineno{border-right:1px solid currentColor;opacity:.35;display:inline-block;margin-right:.75em}
pre.pygments .lineno::before{content:"";margin-right:-.125em}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt,.quoteblock .quoteblock{margin:0 0 1.25em;padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
table.tableblock{max-width:100%;border-collapse:separate}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
table.frame-all{border-width:1px}
table.frame-sides{border-width:0 1px}
table.frame-topbot,table.frame-ends{border-width:1px 0}
table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
ul.checklist{margin-left:.625em}
ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
.gist .file-data>table td.line-data{width:99%}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background:#00fafa}
.black{color:#000}
.black-background{background:#000}
.blue{color:#0000bf}
.blue-background{background:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background:#fa00fa}
.gray{color:#606060}
.gray-background{background:#7d7d7d}
.green{color:#006000}
.green-background{background:#007d00}
.lime{color:#00bf00}
.lime-background{background:#00fa00}
.maroon{color:#600000}
.maroon-background{background:#7d0000}
.navy{color:#000060}
.navy-background{background:#00007d}
.olive{color:#606000}
.olive-background{background:#7d7d00}
.purple{color:#600060}
.purple-background{background:#7d007d}
.red{color:#bf0000}
.red-background{background:#fa0000}
.silver{color:#909090}
.silver-background{background:#bcbcbc}
.teal{color:#006060}
.teal-background{background:#007d7d}
.white{color:#bfbfbf}
.white-background{background:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
</style>
</head>
<body class="article toc2 toc-left">
<div id="header">
<h1>WeeChat Release Notes</h1>
<div class="details">
<span id="author" class="author">Sébastien Helleu</span><br>
<span id="email" class="email"><a href="mailto:flashcode@flashtux.org">flashcode@flashtux.org</a></span><br>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#v2.4">Version 2.4 (2019-02-17)</a>
<ul class="sectlevel2">
<li><a href="#v2.4_nick_completer">Nick completer</a></li>
<li><a href="#v2.4_api_base64_functions">Base64 API functions</a></li>
</ul>
</li>
<li><a href="#v2.3">Version 2.3 (2018-10-21)</a></li>
<li><a href="#v2.2">Version 2.2 (2018-07-14)</a>
<ul class="sectlevel2">
<li><a href="#v2.2_default_hotlist_conditions">Default conditions for hotlist</a></li>
<li><a href="#v2.2_default_triggers">Default triggers</a></li>
<li><a href="#v2.2_irc_signals_tags">Tags in IRC "in" signals</a></li>
<li><a href="#v2.2_debian_headless_package">New Debian package for headless version</a></li>
</ul>
</li>
<li><a href="#v2.1">Version 2.1 (2018-03-18)</a>
<ul class="sectlevel2">
<li><a href="#v2.1_script_plugin_check_license">Option to check license of scripts loaded</a></li>
<li><a href="#v2.1_option_name_completion">Completion for /set and /help commands</a></li>
</ul>
</li>
<li><a href="#v2.0.1">Version 2.0.1 (2017-12-20)</a></li>
<li><a href="#v2.0">Version 2.0 (2017-12-03)</a>
<ul class="sectlevel2">
<li><a href="#v2.0_fset_plugin">Fset plugin</a></li>
<li><a href="#v2.0_debian_packaging">Split of scripting Debian packages</a></li>
<li><a href="#v2.0_buflist_eval">Evaluation in buflist</a></li>
<li><a href="#v2.0_hook_connect">Function hook_connect</a></li>
<li><a href="#v2.0_hook_fd">Function hook_fd</a></li>
</ul>
</li>
<li><a href="#v1.9.1">Version 1.9.1 (2017-09-23)</a></li>
<li><a href="#v1.9">Version 1.9 (2017-06-25)</a></li>
<li><a href="#v1.8">Version 1.8 (2017-05-13)</a>
<ul class="sectlevel2">
<li><a href="#v1.8_options">Options</a></li>
<li><a href="#v1.8_buflist_plugin">Buflist plugin</a></li>
</ul>
</li>
<li><a href="#v1.7.1">Version 1.7.1 (2017-04-22)</a></li>
<li><a href="#v1.7">Version 1.7 (2017-01-15)</a>
<ul class="sectlevel2">
<li><a href="#v1.7_fifo_options">FIFO options</a></li>
<li><a href="#v1.7_default_triggers">Default triggers</a></li>
</ul>
</li>
<li><a href="#v1.6">Version 1.6 (2016-10-02)</a>
<ul class="sectlevel2">
<li><a href="#v1.6_irc_server_default_msg">IRC kick/part/quit default messages</a></li>
<li><a href="#v1.6_api_printf">Printf API functions</a></li>
</ul>
</li>
<li><a href="#v1.5">Version 1.5 (2016-05-01)</a>
<ul class="sectlevel2">
<li><a href="#v1.5_nick_coloring">Nick coloring moved to core</a></li>
<li><a href="#v1.5_callbacks_pointer">Pointer in callbacks</a></li>
<li><a href="#v1.5_bar_item_away">Bar item "away"</a></li>
<li><a href="#v1.5_default_triggers">Default triggers</a></li>
</ul>
</li>
<li><a href="#v1.4">Version 1.4 (2016-01-10)</a>
<ul class="sectlevel2">
<li><a href="#v1.4_irc_alternate_nicks">IRC alternate nicks</a></li>
</ul>
</li>
<li><a href="#v1.3">Version 1.3 (2015-08-16)</a>
<ul class="sectlevel2">
<li><a href="#v1.3_irc_channels_encoding">IRC channels encoding</a></li>
<li><a href="#v1.3_alias_command">Alias command</a></li>
<li><a href="#v1.3_script_path">Script path</a></li>
</ul>
</li>
<li><a href="#v1.2">Version 1.2 (2015-05-10)</a></li>
<li><a href="#v1.1.1">Version 1.1.1 (2015-01-25)</a></li>
<li><a href="#v1.1">Version 1.1 (2015-01-11)</a>
<ul class="sectlevel2">
<li><a href="#v1.1_triggers_regex_format">New format for regex replacement in triggers</a></li>
<li><a href="#v1.1_trigger_beep">Default "beep" trigger</a></li>
<li><a href="#v1.1_commands_return_code">Return code of commands</a></li>
<li><a href="#v1.1_inline_commands_completion">Completion of inline commands</a></li>
<li><a href="#v1.1_relay_irc_backlog_tags">Relay option relay.irc.backlog_tags</a></li>
<li><a href="#v1.1_relay_ipv6_ipv4">IPv4-mapped IPv6 client address in relay</a></li>
<li><a href="#v1.1_irc_temporary_servers">Temporary servers disabled by default with /connect</a></li>
<li><a href="#v1.1_timeval_microseconds">Microseconds in API timeval functions</a></li>
</ul>
</li>
<li><a href="#v1.0.1">Version 1.0.1 (2014-09-28)</a></li>
<li><a href="#v1.0">Version 1.0 (2014-08-15)</a>
<ul class="sectlevel2">
<li><a href="#v1.0_irc_channel_type">Channel type not added by default on /join</a></li>
<li><a href="#v1.0_irc_channel_modes_arguments">Hide IRC channel modes arguments</a></li>
<li><a href="#v1.0_jump_first_last_buffer">Jump to first/last buffer</a></li>
<li><a href="#v1.0_hotlist_conditions">Hotlist conditions</a></li>
<li><a href="#v1.0_trigger_plugin">Rmodifier replaced by Trigger plugin</a></li>
<li><a href="#v1.0_bare_display">Bare display</a></li>
<li><a href="#v1.0_hook_print">Function hook_print</a></li>
</ul>
</li>
<li><a href="#v0.4.3">Version 0.4.3 (2014-02-09)</a>
<ul class="sectlevel2">
<li><a href="#v0.4.3_colors_messages">Colors in messages</a></li>
<li><a href="#v0.4.3_terminal_title">Terminal title</a></li>
<li><a href="#v0.4.3_bar_item_buffer_last_number">New bar item buffer_last_number</a></li>
<li><a href="#v0.4.3_bar_item_buffer_zoom">New bar item buffer_zoom</a></li>
<li><a href="#v0.4.3_irc_messages_channel_join">IRC messages on channel join</a></li>
<li><a href="#v0.4.3_irc_maximum_lag">Maximum lag in IRC</a></li>
</ul>
</li>
<li><a href="#v0.4.2">Version 0.4.2 (2013-10-06)</a>
<ul class="sectlevel2">
<li><a href="#v0.4.2_day_change_message">Day change message</a></li>
<li><a href="#v0.4.2_buffer_regex_search">Regex search in buffer</a></li>
<li><a href="#v0.4.2_rmodifier">New rmodifier</a></li>
<li><a href="#v0.4.2_color_codes_options">Color codes in options</a></li>
<li><a href="#v0.4.2_binary_man_page">Binary and man page</a></li>
<li><a href="#v0.4.2_man_page_documentation">Man page / documentation</a></li>
<li><a href="#v0.4.2_aspell_colors">Aspell colors</a></li>
</ul>
</li>
<li><a href="#v0.4.1">Version 0.4.1 (2013-05-20)</a>
<ul class="sectlevel2">
<li><a href="#v0.4.1_relay_nicklist_diff">Nicklist diff in relay</a></li>
<li><a href="#v0.4.1_dynamic_nick_prefix_suffix">Dynamic nick prefix/suffix</a></li>
<li><a href="#v0.4.1_irc_reconnection_lag">IRC reconnection on important lag</a></li>
<li><a href="#v0.4.1_irc_passwords_hidden">IRC passwords hidden</a></li>
<li><a href="#v0.4.1_lua_constants">Lua constants</a></li>
<li><a href="#v0.4.1_guile_callbacks">Guile callbacks</a></li>
</ul>
</li>
<li><a href="#v0.4.0">Version 0.4.0 (2013-01-20)</a>
<ul class="sectlevel2">
<li><a href="#v0.4.0_bars_conditions">Conditions in bars</a></li>
<li><a href="#v0.4.0_ipv6_default">IPv6 by default</a></li>
</ul>
</li>
<li><a href="#v0.3.9.2">Version 0.3.9.2 (2012-11-18)</a></li>
<li><a href="#v0.3.9.1">Version 0.3.9.1 (2012-11-09)</a></li>
<li><a href="#v0.3.9">Version 0.3.9 (2012-09-29)</a>
<ul class="sectlevel2">
<li><a href="#v0.3.9_options_moved">Options moved</a></li>
<li><a href="#v0.3.9_bar_item_buffer_modes">New bar item buffer_modes</a></li>
<li><a href="#v0.3.9_command_aspell">Command /aspell</a></li>
<li><a href="#v0.3.9_horizontal_separator">Horizontal separator</a></li>
<li><a href="#v0.3.9_new_keys">New keys</a></li>
</ul>
</li>
<li><a href="#v0.3.8">Version 0.3.8 (2012-06-03)</a>
<ul class="sectlevel2">
<li><a href="#v0.3.8_options">Options</a></li>
<li><a href="#v0.3.8_paste_detection">Paste detection</a></li>
<li><a href="#v0.3.8_rmodifier">Rmodifier</a></li>
</ul>
</li>
<li><a href="#v0.3.7">Version 0.3.7 (2012-02-26)</a>
<ul class="sectlevel2">
<li><a href="#v0.3.7_options">Options</a></li>
<li><a href="#v0.3.7_extended_regex">Extended regex</a></li>
</ul>
</li>
<li><a href="#v0.3.6">Version 0.3.6 (2011-10-22)</a>
<ul class="sectlevel2">
<li><a href="#v0.3.6_options">Options</a></li>
<li><a href="#v0.3.6_colors_bold">Bold in colors</a></li>
</ul>
</li>
<li><a href="#v0.3.5">Version 0.3.5 (2011-05-15)</a>
<ul class="sectlevel2">
<li><a href="#v0.3.5_colors">Colors</a></li>
<li><a href="#v0.3.5_hotlist">Hotlist</a></li>
<li><a href="#v0.3.5_new_keys">New keys</a></li>
</ul>
</li>
<li><a href="#v0.3.4">Version 0.3.4 (2011-01-16)</a>
<ul class="sectlevel2">
<li><a href="#v0.3.4_after_upgrade">After /upgrade</a></li>
<li><a href="#v0.3.4_options">Options</a></li>
</ul>
</li>
<li><a href="#v0.3.3">Version 0.3.3 (2010-08-07)</a>
<ul class="sectlevel2">
<li><a href="#v0.3.3_after_upgrade">After /upgrade</a></li>
<li><a href="#v0.3.3_options">Options</a></li>
</ul>
</li>
<li><a href="#v0.3.2">Version 0.3.2 (2010-04-18)</a>
<ul class="sectlevel2">
<li><a href="#v0.3.2_after_upgrade">After /upgrade</a></li>
</ul>
</li>
<li><a href="#v0.3.1.1">Version 0.3.1.1 (2010-01-31)</a></li>
<li><a href="#v0.3.1">Version 0.3.1 (2010-01-23)</a>
<ul class="sectlevel2">
<li><a href="#v0.3.1_aliases">Aliases</a></li>
</ul>
</li>
<li><a href="#v0.3.0">Version 0.3.0 (2009-09-06)</a></li>
<li><a href="#v0.2.6.3">Version 0.2.6.3 (2009-06-13)</a></li>
<li><a href="#v0.2.6.2">Version 0.2.6.2 (2009-04-18)</a></li>
<li><a href="#v0.2.6.1">Version 0.2.6.1 (2009-03-14)</a></li>
<li><a href="#v0.2.6">Version 0.2.6 (2007-09-06)</a></li>
<li><a href="#v0.2.5">Version 0.2.5 (2007-06-07)</a></li>
<li><a href="#v0.2.4">Version 0.2.4 (2007-03-29)</a></li>
<li><a href="#v0.2.3">Version 0.2.3 (2007-01-10)</a></li>
<li><a href="#v0.2.2">Version 0.2.2 (2007-01-06)</a>
<ul class="sectlevel2">
<li><a href="#v0.2.2_charset_plugin">Charset plugin</a></li>
<li><a href="#v0.2.2_new_keys">New keys</a></li>
</ul>
</li>
<li><a href="#v0.2.1">Version 0.2.1 (2006-10-01)</a></li>
<li><a href="#v0.2.0">Version 0.2.0 (2006-08-19)</a>
<ul class="sectlevel2">
<li><a href="#v0.2.0_after_upgrade">After /upgrade</a></li>
<li><a href="#v0.2.0_plugins">Plugins</a></li>
</ul>
</li>
<li><a href="#v0.1.9">Version 0.1.9 (2006-05-25)</a>
<ul class="sectlevel2">
<li><a href="#v0.1.9_dcc_chat">DCC chat</a></li>
<li><a href="#v0.1.9_script_api">Script API</a></li>
</ul>
</li>
<li><a href="#v0.1.8">Version 0.1.8 (2006-03-18)</a>
<ul class="sectlevel2">
<li><a href="#v0.1.8_after_upgrade">After /upgrade</a></li>
<li><a href="#v0.1.8_configuration_files">Configuration files</a></li>
<li><a href="#v0.1.8_keys">Keys</a></li>
</ul>
</li>
<li><a href="#v0.1.7">Version 0.1.7 (2006-01-14)</a>
<ul class="sectlevel2">
<li><a href="#v0.1.7_ruby">Ruby</a></li>
<li><a href="#v0.1.7_command_away">Command /away</a></li>
</ul>
</li>
<li><a href="#v0.1.6">Version 0.1.6 (2005-11-11)</a>
<ul class="sectlevel2">
<li><a href="#v0.1.6_script_api">Script API</a></li>
<li><a href="#v0.1.6_openbsd">OpenBSD</a></li>
<li><a href="#v0.1.6_utf8">UTF-8</a></li>
</ul>
</li>
<li><a href="#v0.1.5">Version 0.1.5 (2005-09-24)</a></li>
<li><a href="#v0.1.4">Version 0.1.4 (2005-07-30)</a></li>
<li><a href="#v0.1.3">Version 0.1.3 (2005-07-02)</a></li>
<li><a href="#v0.1.2">Version 0.1.2 (2005-05-21)</a></li>
<li><a href="#v0.1.1">Version 0.1.1 (2005-03-20)</a></li>
<li><a href="#v0.1.0">Version 0.1.0 (2005-02-12)</a></li>
<li><a href="#v0.0.9">Version 0.0.9 (2005-01-01)</a></li>
<li><a href="#v0.0.8">Version 0.0.8 (2004-10-30)</a></li>
<li><a href="#v0.0.7">Version 0.0.7 (2004-08-08)</a></li>
<li><a href="#v0.0.6">Version 0.0.6 (2004-06-05)</a></li>
<li><a href="#v0.0.5">Version 0.0.5 (2004-02-07)</a></li>
<li><a href="#v0.0.4">Version 0.0.4 (2004-01-01)</a></li>
<li><a href="#v0.0.3">Version 0.0.3 (2003-11-03)</a></li>
<li><a href="#v0.0.2">Version 0.0.2 (2003-10-05)</a></li>
<li><a href="#v0.0.1">Version 0.0.1 (2003-09-27)</a></li>
</ul>
</div>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>This document lists important changes for each version, that require manual
actions (the latest formatted version of this document can be found
<a href="https://weechat.org/files/releasenotes/ReleaseNotes-devel.html">here</a>).<br>
It is recommended to read it when upgrading to a new stable
version.</p>
</div>
<div class="paragraph">
<p>For a complete list of changes, please look at
<a href="https://weechat.org/files/changelog/ChangeLog-devel.html">ChangeLog</a>
(file <em>ChangeLog.adoc</em> in sources).</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v2.4">Version 2.4 (2019-02-17)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v2.4_nick_completer">Nick completer</h3>
<div class="paragraph">
<p>A space is not added automatically any more when you complete a nick at the
beginning of command line.</p>
</div>
<div class="paragraph">
<p>The default value of option <code>weechat.completion.nick_completer</code> has been changed
to add the space by default, so you may have to run this command if you upgraded
from an old version and want the space to be added automatically:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set weechat.completion.nick_completer ": "</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v2.4_api_base64_functions">Base64 API functions</h3>
<div class="paragraph">
<p>The functions to encode/decode base64 strings have been renamed and now support
base 16, 32, and 64.</p>
</div>
<div class="paragraph">
<p>New functions in C API, supporting base 16, 32, and 64:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>string_base_encode</p>
</li>
<li>
<p>string_base_decode</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Functions removed from C API:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>string_encode_base64</p>
</li>
<li>
<p>string_decode_base64</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v2.3">Version 2.3 (2018-10-21)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v2.2">Version 2.2 (2018-07-14)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v2.2_default_hotlist_conditions">Default conditions for hotlist</h3>
<div class="paragraph">
<p>The default value for option <code>weechat.look.hotlist_add_conditions</code> has been
changed to take care about the number of connected clients on the relay
with weechat protocol: if at least one client is connected, the buffer is
always added to the hotlist.</p>
</div>
<div class="paragraph">
<p>The new value contains three conditions, if one of them is true, the buffer
is added to the hotlist:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>${away}</code>: true if you are away on the server matching the buffer,</p>
</li>
<li>
<p><code>${buffer.num_displayed} == 0</code>: true if the buffer is not displayed in any
window</p>
</li>
<li>
<p><code>${info:relay_client_count,weechat,connected} &gt; 0</code>: true if at least
one client is connected on a weechat relay (new condition).</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>To use the new default value, you can reset the option with this command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/unset weechat.look.hotlist_add_conditions</pre>
</div>
</div>
<div class="paragraph">
<p>Or set explicitly the value:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set weechat.look.hotlist_add_conditions "${away} || ${buffer.num_displayed} == 0 || ${info:relay_client_count,weechat,connected} &gt; 0"</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v2.2_default_triggers">Default triggers</h3>
<div class="paragraph">
<p>The existing triggers "cmd_pass" and "msg_auth" have been updated to hide
password in command <code>/msg nickserv set password</code> and support the option
<code>-server xxx</code>.</p>
</div>
<div class="paragraph">
<p>You can restore the default triggers with the following command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/trigger restore cmd_pass msg_auth</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v2.2_irc_signals_tags">Tags in IRC "in" signals</h3>
<div class="paragraph">
<p>The IRCv3 tags are now sent in these IRC signals for received messages
(<em>xxx</em> is IRC server name, <em>yyy</em> is IRC command name):</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>xxx,irc_in_yyy</em></p>
</li>
<li>
<p><em>xxx,irc_in2_yyy</em></p>
</li>
<li>
<p><em>xxx,irc_raw_in_yyy</em></p>
</li>
<li>
<p><em>xxx,irc_raw_in2_yyy</em></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>This could break plugins or scripts that parse IRC messages and don&#8217;t expect
to receive tags (even if tags <strong>are</strong> part of the IRC message, so this was a bug
in the IRC signals).</p>
</div>
<div class="paragraph">
<p>See issue #787 for more information.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
It is recommended for plugins and scripts to use the WeeChat IRC parser:
see the function "info_get_hashtable" in the Plugin API reference.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Now the whole IRC message is received by the signal callback, for example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>@tag1=abc;tag2=def :nick!user@host PRIVMSG #test :this is a test</pre>
</div>
</div>
<div class="paragraph">
<p>In older releases, this message was received:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>:nick!user@host PRIVMSG #test :this is a test</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v2.2_debian_headless_package">New Debian package for headless version</h3>
<div class="paragraph">
<p>A new Debian package has been added: <em>weechat-headless</em> which contains the
binary <em>weechat-headless</em> and its man page.</p>
</div>
<div class="paragraph">
<p>In version 2.1, this binary was in the package <em>weechat-curses</em>.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v2.1">Version 2.1 (2018-03-18)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v2.1_script_plugin_check_license">Option to check license of scripts loaded</h3>
<div class="paragraph">
<p>A configuration file has been added for each script plugin: <em>python.conf</em>,
<em>perl.conf</em>, <em>ruby.conf</em>, &#8230;&#8203;</p>
</div>
<div class="paragraph">
<p>Therefore the option to check license of loaded scripts has been moved from
<em>plugins.var.&lt;language&gt;.check_license</em> (type: string) to the plugin
configuration file (type: boolean, default is <em>off</em>).</p>
</div>
<div class="paragraph">
<p>List of options moved:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>plugins.var.python.check_license</em> (string) moved to <em>python.look.check_license</em> (boolean)</p>
</li>
<li>
<p><em>plugins.var.perl.check_license</em> (string) moved to <em>perl.look.check_license</em> (boolean)</p>
</li>
<li>
<p><em>plugins.var.ruby.check_license</em> (string) moved to <em>ruby.look.check_license</em> (boolean)</p>
</li>
<li>
<p><em>plugins.var.lua.check_license</em> (string) moved to <em>lua.look.check_license</em> (boolean)</p>
</li>
<li>
<p><em>plugins.var.tcl.check_license</em> (string) moved to <em>tcl.look.check_license</em> (boolean)</p>
</li>
<li>
<p><em>plugins.var.guile.check_license</em> (string) moved to <em>guile.look.check_license</em> (boolean)</p>
</li>
<li>
<p><em>plugins.var.javascript.check_license</em> (string) moved to <em>javascript.look.check_license</em> (boolean)</p>
</li>
<li>
<p><em>plugins.var.php.check_license</em> (string) moved to <em>php.look.check_license</em> (boolean)</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="v2.1_option_name_completion">Completion for /set and /help commands</h3>
<div class="paragraph">
<p>A new option weechat.completion.partial_completion_templates has been added to
force partial completion on some templates.  By default, the option name
completed in <code>/set</code> and <code>/help</code> commands are now using partial completion.</p>
</div>
<div class="paragraph">
<p>If you prefer old behavior, you can remove the templates from the new option
with this command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set weechat.completion.partial_completion_templates ""</pre>
</div>
</div>
<div class="paragraph">
<p>For more information about this feature, you can read help with:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/help weechat.completion.partial_completion_templates</pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v2.0.1">Version 2.0.1 (2017-12-20)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Bug fix and maintenance release.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v2.0">Version 2.0 (2017-12-03)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v2.0_fset_plugin">Fset plugin</h3>
<div class="paragraph">
<p>A new plugin "fset" has been added, it replaces the script iset.pl and has many
new features.</p>
</div>
<div class="paragraph">
<p>By default the fset plugin changes the behavior of <code>/set</code> command when it is
used with only an option name: it opens the fset buffer if at least one option
is found.</p>
</div>
<div class="paragraph">
<p>The old behavior was to display the list of options in the core buffer.</p>
</div>
<div class="paragraph">
<p>If you prefer the old behavior, you can restore it with this command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set fset.look.condition_catch_set ""</pre>
</div>
</div>
<div class="paragraph">
<p>For more information about this feature, you can read help with:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/help fset.look.condition_catch_set</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v2.0_debian_packaging">Split of scripting Debian packages</h3>
<div class="paragraph">
<p>The Debian packaging has changed (for now only on weechat.org repositories,
not in Debian official repositories).<br>
The package <em>weechat-plugins</em> has been split into 9 packages:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>weechat-plugins (with only the following plugins: aspell, exec, fifo, relay,
script, trigger)</p>
</li>
<li>
<p>weechat-python</p>
</li>
<li>
<p>weechat-perl</p>
</li>
<li>
<p>weechat-ruby</p>
</li>
<li>
<p>weechat-lua</p>
</li>
<li>
<p>weechat-tcl</p>
</li>
<li>
<p>weechat-guile</p>
</li>
<li>
<p>weechat-javascript</p>
</li>
<li>
<p>weechat-php.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>If you are using the packages from weechat.org, you will have to install
manually the scripting packages (according to the languages you&#8217;ll use
in WeeChat), for example Python/Perl only:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>sudo apt-get install weechat-python weechat-perl</pre>
</div>
</div>
<div class="paragraph">
<p>For development packages:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>sudo apt-get install weechat-devel-python weechat-devel-perl</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v2.0_buflist_eval">Evaluation in buflist</h3>
<div class="paragraph">
<p>The evaluation of expressions in buflist options is not recursive any more,
to prevent too many evaluations, for example in buffer variables
(see issue #1060 for more information).<br>
If you are using custom variables/options containing evaluated expressions,
like <code>${some.config.option}</code>, and if this option contains evaluated strings (<code>${&#8230;&#8203;}</code>),
you must evaluate them with: <code>${eval:${some.config.option}}</code>.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
The default buflist formats (<code>${format_buffer}</code>, <code>${format_name}</code>,
<code>${format_hotlist}</code>, &#8230;&#8203;) are automatically evaluated in options <em>buflist.format.buffer</em>,
<em>buflist.format.buffer_current</em> and <em>buflist.format.hotlist</em>.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="v2.0_hook_connect">Function hook_connect</h3>
<div class="paragraph">
<p>In scripts, the arguments <em>status</em>, <em>gnutls_rc</em> and <em>sock</em> sent to the callback
of <em>hook_connect</em> are now integers (they were strings in older releases).<br>
To be compatible with all versions, it is recommended to convert the argument
to integer before using it, for example in Python: <code>int(sock)</code>.</p>
</div>
</div>
<div class="sect2">
<h3 id="v2.0_hook_fd">Function hook_fd</h3>
<div class="paragraph">
<p>In scripts, the argument <em>fd</em> sent to the callback of <em>hook_fd</em> is now
an integer (it was a string in older releases).<br>
To be compatible with all versions, it is recommended to convert the argument
to integer before using it, for example in Python: <code>int(fd)</code>.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.9.1">Version 1.9.1 (2017-09-23)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Bug fix and maintenance release.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.9">Version 1.9 (2017-06-25)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.8">Version 1.8 (2017-05-13)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v1.8_options">Options</h3>
<div class="paragraph">
<p>The option <em>script.scripts.url_force_https</em> has been removed because now the
site weechat.org can only be used with HTTPS.<br>
Both HTTP and HTTPS protocols are allowed in the option <em>script.scripts.url</em>.
For <a href="http://weechat.org/" class="bare">http://weechat.org/</a> an automatic redirection to <a href="https://weechat.org/" class="bare">https://weechat.org/</a> will
occur, so you should check that the CA certificates are properly installed
on your machine.</p>
</div>
<div class="paragraph">
<p>Aspell option with color for suggestion on a misspelled word has been renamed:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>aspell.color.suggestions</em> has been renamed to <em>aspell.color.suggestion</em></p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="v1.8_buflist_plugin">Buflist plugin</h3>
<div class="paragraph">
<p>A new plugin called "buflist" has been added, it replaces the script "buffers.pl".</p>
</div>
<div class="paragraph">
<p>If the script is installed, you will see two sidebars with list of buffers.</p>
</div>
<div class="paragraph">
<p>If you fell in love with buflist and that the script buffers.pl is installed,
you can uninstall the script and remove its bar with these commands:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/script remove buffers.pl
/bar del buffers</pre>
</div>
</div>
<div class="paragraph">
<p>If you don&#8217;t want the list of buffers, you can disable buflist:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set buflist.look.enabled off</pre>
</div>
</div>
<div class="paragraph">
<p>To save extra memory, you can even unload the buflist plugin, remove the bar and
prevent the plugin from loading on next startup:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/plugin unload buflist
/bar del buflist
/set weechat.plugin.autoload "*,!buflist"</pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.7.1">Version 1.7.1 (2017-04-22)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Bug fix and maintenance release.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.7">Version 1.7 (2017-01-15)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v1.7_fifo_options">FIFO options</h3>
<div class="paragraph">
<p>A new configuration file "fifo.conf" has been added and the old option
<em>plugins.var.fifo.fifo</em> has been moved to <em>fifo.file.enabled</em>.</p>
</div>
<div class="paragraph">
<p>A new option <em>fifo.file.path</em> can be used to customize the FIFO pipe
path/filename.</p>
</div>
</div>
<div class="sect2">
<h3 id="v1.7_default_triggers">Default triggers</h3>
<div class="paragraph">
<p>A new trigger "cmd_pass_register" has been added to hide only password and not
email in command <code>/msg nickserv register password email</code>.<br>
The existing trigger "cmd_pass" has been updated to hide password in all
commands except <code>/msg nickserv register</code>.</p>
</div>
<div class="paragraph">
<p>You can add the new trigger and restore the other one with the following
command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/trigger restore cmd_pass_register cmd_pass</pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.6">Version 1.6 (2016-10-02)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v1.6_irc_server_default_msg">IRC kick/part/quit default messages</h3>
<div class="paragraph">
<p>Server options with default messages for kick/part/quit have been renamed:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>options by default for all servers:</p>
<div class="ulist">
<ul>
<li>
<p><em>irc.server_default.default_msg_kick</em> has been renamed to <em>irc.server_default.msg_kick</em></p>
</li>
<li>
<p><em>irc.server_default.default_msg_part</em> has been renamed to <em>irc.server_default.msg_part</em></p>
</li>
<li>
<p><em>irc.server_default.default_msg_quit</em> has been renamed to <em>irc.server_default.msg_quit</em></p>
</li>
</ul>
</div>
</li>
<li>
<p>options in each server:</p>
<div class="ulist">
<ul>
<li>
<p><em>irc.server.xxx.default_msg_kick</em> has been renamed to <em>irc.server.xxx.msg_kick</em></p>
</li>
<li>
<p><em>irc.server.xxx.default_msg_part</em> has been renamed to <em>irc.server.xxx.msg_part</em></p>
</li>
<li>
<p><em>irc.server.xxx.default_msg_quit</em> has been renamed to <em>irc.server.xxx.msg_quit</em></p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>If you changed the value of these options, you must set them again after upgrade.</p>
</div>
</div>
<div class="sect2">
<h3 id="v1.6_api_printf">Printf API functions</h3>
<div class="paragraph">
<p>Some "printf" functions have been removed from C API (there were not in scripting API):</p>
</div>
<div class="ulist">
<ul>
<li>
<p>printf_date</p>
</li>
<li>
<p>printf_tags</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The function "printf_date_tags" must now be used instead of these functions
(the two functions removed were just C macros on function "printf_date_tags"
with tags set to NULL for "printf_date" and date set to 0 for "printf_tags").</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.5">Version 1.5 (2016-05-01)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v1.5_nick_coloring">Nick coloring moved to core</h3>
<div class="paragraph">
<p>The nick coloring feature has been moved from irc plugin to core.</p>
</div>
<div class="paragraph">
<p>Two options have been moved from irc plugin (irc.conf) to core (weechat.conf),
and you must set new value if you customized them:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>irc.look.nick_color_force</em> moved to <em>weechat.look.nick_color_force</em></p>
</li>
<li>
<p><em>irc.look.nick_color_hash</em> moved to <em>weechat.look.nick_color_hash</em></p>
</li>
<li>
<p><em>irc.look.nick_color_stop_chars</em> moved to <em>weechat.look.nick_color_stop_chars</em></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The default value for option <em>weechat.look.nick_color_hash</em> is now <code>djb2</code>
instead of <code>sum</code>.</p>
</div>
<div class="paragraph">
<p>The following info names (used by API function "info_get") are renamed as well:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>irc_nick_color</em> renamed to <em>nick_color</em></p>
</li>
<li>
<p><em>irc_nick_color_name</em> renamed to <em>nick_color_name</em></p>
</li>
</ul>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
The old info <em>irc_nick_color</em> and <em>irc_nick_color_name</em> are kept for
compatibility (especially scripts) and will be removed in an upcoming release.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="v1.5_callbacks_pointer">Pointer in callbacks</h3>
<div class="paragraph">
<p>A pointer has been added in all callbacks used by scripts, so the callbacks
will receive an extra <em>const void *pointer</em> before the <em>void *data</em>
(in the C API only, not scripting API).</p>
</div>
<div class="paragraph">
<p>This is used to remove linked list of callbacks in scrips (improve speed,
reduce memory usage).</p>
</div>
<div class="paragraph">
<p>Following functions are changed in the C API:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>exec_on_files</p>
</li>
<li>
<p>config_new</p>
</li>
<li>
<p>config_new_section</p>
</li>
<li>
<p>config_new_option</p>
</li>
<li>
<p>hook_command</p>
</li>
<li>
<p>hook_command_run</p>
</li>
<li>
<p>hook_timer</p>
</li>
<li>
<p>hook_fd</p>
</li>
<li>
<p>hook_process</p>
</li>
<li>
<p>hook_process_hashtable</p>
</li>
<li>
<p>hook_connect</p>
</li>
<li>
<p>hook_print</p>
</li>
<li>
<p>hook_signal</p>
</li>
<li>
<p>hook_hsignal</p>
</li>
<li>
<p>hook_config</p>
</li>
<li>
<p>hook_completion</p>
</li>
<li>
<p>hook_modifier</p>
</li>
<li>
<p>hook_info</p>
</li>
<li>
<p>hook_info_hashtable</p>
</li>
<li>
<p>hook_infolist</p>
</li>
<li>
<p>hook_hdata</p>
</li>
<li>
<p>hook_focus</p>
</li>
<li>
<p>unhook_all</p>
</li>
<li>
<p>buffer_new</p>
</li>
<li>
<p>bar_item_new</p>
</li>
<li>
<p>upgrade_new</p>
</li>
<li>
<p>upgrade_read</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The function <code>unhook_all</code> has a new argument <code>const char *subplugin</code> to remove
only hooks created by this "subplugin" (script).</p>
</div>
</div>
<div class="sect2">
<h3 id="v1.5_bar_item_away">Bar item "away"</h3>
<div class="paragraph">
<p>The bar item "away" has been moved from irc plugin to core (so that away status
can be displayed for any plugin, using the buffer local variable "away").</p>
</div>
<div class="paragraph">
<p>Two options have been moved from irc plugin (irc.conf) to core (weechat.conf):</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>irc.look.item_away_message</em> moved to <em>weechat.look.item_away_message</em></p>
</li>
<li>
<p><em>irc.color.item_away</em> moved to <em>weechat.color.item_away</em></p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="v1.5_default_triggers">Default triggers</h3>
<div class="paragraph">
<p>The default triggers "cmd_pass" and "msg_auth" have been updated to include
nickserv commands "recover" and "regain".</p>
</div>
<div class="paragraph">
<p>You can restore them with the following command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/trigger restore cmd_pass msg_auth</pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.4">Version 1.4 (2016-01-10)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v1.4_irc_alternate_nicks">IRC alternate nicks</h3>
<div class="paragraph">
<p>The option <em>irc.network.alternate_nick</em> has been moved into servers
(<em>irc.server_default.nicks_alternate</em> and <em>irc.server.xxx.nicks_alternate</em>).</p>
</div>
<div class="paragraph">
<p>If you disabled this option, you must switch it off again, globally or by
server.</p>
</div>
<div class="paragraph">
<p>Globally (default value for all servers):</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set irc.server_default.nicks_alternate off</pre>
</div>
</div>
<div class="paragraph">
<p>For a specific server:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set irc.server.freenode.nicks_alternate off</pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.3">Version 1.3 (2015-08-16)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v1.3_irc_channels_encoding">IRC channels encoding</h3>
<div class="paragraph">
<p>If you are using exotic charsets in your channel names (anything different from
UTF-8, like ISO charset), you should turn on a new option:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set irc.network.channel_encode on</pre>
</div>
</div>
<div class="paragraph">
<p>This will force WeeChat to decode/encode the channel name
(like WeeChat 1.2 or older did).</p>
</div>
<div class="paragraph">
<p>See these issues for more information: issue #482, issue #218.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
It is <strong>highly recommended</strong> to use only UTF-8 in WeeChat (wherever you can),
because everything is stored as UTF-8 internally.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="v1.3_alias_command">Alias command</h3>
<div class="paragraph">
<p>The command <code>/alias</code> has been updated to list, add and remove aliases.
Therefore the command <code>/unalias</code> has been removed.</p>
</div>
<div class="paragraph">
<p>To add an alias, the argument <code>add</code> must be used in command <code>/alias</code> before the
name, for example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/alias add split /window splith</pre>
</div>
</div>
<div class="paragraph">
<p>And the alias is removed with this command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/alias del split</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v1.3_script_path">Script path</h3>
<div class="paragraph">
<p>The option <em>script.scripts.dir</em> has been renamed to <em>script.scripts.path</em>
(and the content is now evaluated, see <code>/help eval</code>).</p>
</div>
<div class="paragraph">
<p>If you changed the value of this option, you must set it again after upgrade.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.2">Version 1.2 (2015-05-10)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The word chars are now customizable with two options:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>weechat.look.word_chars_highlight</p>
</li>
<li>
<p>weechat.look.word_chars_input</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The behavior has changed for command line: now any non-word char is used as
delimiter for keys to move to previous/next word or delete previous/next word.</p>
</div>
<div class="paragraph">
<p>You can restore the old behavior (only use spaces as delimiters) with this
command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set weechat.look.word_chars_input "!\u00A0,!\x20,*"</pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.1.1">Version 1.1.1 (2015-01-25)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Bug fix and maintenance release.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.1">Version 1.1 (2015-01-11)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v1.1_triggers_regex_format">New format for regex replacement in triggers</h3>
<div class="paragraph">
<p>A new format is used in regex replacement to use regex groups, this format
is incompatible with version 1.0.</p>
</div>
<div class="paragraph">
<p>The existing triggers are <strong>NOT automatically updated</strong>.</p>
</div>
<table class="tableblock frame-all grid-all" style="width: 60%;">
<colgroup>
<col style="width: 28.5714%;">
<col style="width: 28.5714%;">
<col style="width: 42.8572%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Old format</th>
<th class="tableblock halign-left valign-top">New format</th>
<th class="tableblock halign-left valign-top">Examples (new format)</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>$0</code> &#8230;&#8203; <code>$99</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>${re:0}</code> &#8230;&#8203; <code>${re:99}</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>${re:1}</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>$+</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>${re:+}</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>${re:+}</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>$.*N</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>${hide:*,${re:N}}</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>${hide:*,${re:2}}</code><br>
                                              <code>${hide:-,${re:+}}</code></p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>Moreover, default triggers used to hide passwords have been fixed for *BSD
operating systems.</p>
</div>
<div class="paragraph">
<p>You can restore them with the following command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/trigger restore cmd_pass msg_auth server_pass</pre>
</div>
</div>
<div class="paragraph">
<p>If you added triggers with the old regex replacement format, you must update
them manually.</p>
</div>
</div>
<div class="sect2">
<h3 id="v1.1_trigger_beep">Default "beep" trigger</h3>
<div class="paragraph">
<p>The command of "beep" trigger is now executed only if the message is displayed
(not filtered with /filter).</p>
</div>
<div class="paragraph">
<p>You can restore the default "beep" trigger with the following command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/trigger restore beep</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v1.1_commands_return_code">Return code of commands</h3>
<div class="paragraph">
<p>The API function <em>weechat_command</em> now sends the value returned return by
command callback.</p>
</div>
<div class="paragraph">
<p>WeeChat does not display any more an error when a command returns
<em>WEECHAT_RC_ERROR</em>. Consequently, all plugins/scripts should display an
explicit error message before returning <em>WEECHAT_RC_ERROR</em>.</p>
</div>
<div class="paragraph">
<p>For C plugins, two macros have been added in weechat-plugin.h:
<em>WEECHAT_COMMAND_MIN_ARGS</em> and <em>WEECHAT_COMMAND_ERROR</em>.</p>
</div>
</div>
<div class="sect2">
<h3 id="v1.1_inline_commands_completion">Completion of inline commands</h3>
<div class="paragraph">
<p>WeeChat now completes by default inline commands (not only at beginning of
line).</p>
</div>
<div class="paragraph">
<p>When this feature is enabled, there is no more automatic completion of
absolute paths (except if you are completing a path inside a command argument,
like <code>/dcc send &lt;nick&gt; &lt;path&gt;</code>).</p>
</div>
<div class="paragraph">
<p>To restore the old behavior (no completion of inline commands):</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set weechat.completion.command_inline off</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v1.1_relay_irc_backlog_tags">Relay option relay.irc.backlog_tags</h3>
<div class="paragraph">
<p>The option <em>relay.irc.backlog_tags</em> is now a list separated by commas
(it was separated by semicolons in older versions).</p>
</div>
<div class="paragraph">
<p>If you are using a list of tags in this option, you must adjust the value
manually.</p>
</div>
</div>
<div class="sect2">
<h3 id="v1.1_relay_ipv6_ipv4">IPv4-mapped IPv6 client address in relay</h3>
<div class="paragraph">
<p>The string "::ffff:" has been removed from IPv4-mapped IPv6 client address
in relay plugin.</p>
</div>
<div class="paragraph">
<p>If you are using "::ffff:" in option <em>relay.network.allowed_ips</em>, you can
remove it.</p>
</div>
</div>
<div class="sect2">
<h3 id="v1.1_irc_temporary_servers">Temporary servers disabled by default with /connect</h3>
<div class="paragraph">
<p>Creating a temporary server with command <code>/connect &lt;address&gt;</code> or
<code>/connect irc://...</code> is now forbidden by default.</p>
</div>
<div class="paragraph">
<p>A new option has been added to unlock the feature, you can do that for
the old behavior in command <code>/connect</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set irc.look.temporary_servers on</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v1.1_timeval_microseconds">Microseconds in API timeval functions</h3>
<div class="paragraph">
<p>The API functions using timeval are now using or returning microseconds,
instead of milliseconds:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>function <em>util_timeval_diff</em>: returns microseconds</p>
</li>
<li>
<p>function <em>util_timeval_add</em>: the argument <em>interval</em> is now expressed in
microseconds.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.0.1">Version 1.0.1 (2014-09-28)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Bug fix and maintenance release.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v1.0">Version 1.0 (2014-08-15)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v1.0_irc_channel_type">Channel type not added by default on /join</h3>
<div class="paragraph">
<p>The channel type is not any more automatically added to a channel name on join
(for example <code>/join weechat</code> will not send <code>/join #weechat</code>).</p>
</div>
<div class="paragraph">
<p>If you are lazy and want to automatically add the channel type, you can turn on
the new option:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set irc.look.join_auto_add_chantype on</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v1.0_irc_channel_modes_arguments">Hide IRC channel modes arguments</h3>
<div class="paragraph">
<p>The option <em>irc.look.item_channel_modes_hide_key</em> has been renamed to
<em>irc.look.item_channel_modes_hide_args</em> and is now a string.<br>
It can now hide arguments for multiple channel modes.</p>
</div>
<div class="paragraph">
<p>By default, a channel key (mode "k") will hide channel arguments. For old
behavior (never hide arguments, even with a channel key), you can do:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set irc.look.item_channel_modes_hide_args ""</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v1.0_jump_first_last_buffer">Jump to first/last buffer</h3>
<div class="paragraph">
<p>The command <code>/input jump_last_buffer</code> has been replaced by <code>/buffer +</code>.
You can rebind the key kbd:[Alt+j], kbd:[Alt+l]:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/key bind meta-jmeta-l /buffer +</pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
The command <code>/input jump_last_buffer</code> still works for compatibility reasons,
but it should not be used any more.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Similarly, a new key has been added to jump to first buffer: kbd:[Alt+j], kbd:[Alt+f].
You can add it with following command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/key missing</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v1.0_hotlist_conditions">Hotlist conditions</h3>
<div class="paragraph">
<p>A new option <em>weechat.look.hotlist_add_conditions</em> has been added. This option
replaces the option <em>weechat.look.hotlist_add_buffer_if_away</em>, which has been
removed.</p>
</div>
<div class="paragraph">
<p>Default conditions are <code>${away} || ${buffer.num_displayed} == 0</code>, which means
that a buffer is added in hotlist if you are away ("away" local variable is
set), or if the buffer is not visible on screen (not displayed in any window).</p>
</div>
<div class="paragraph">
<p>If you have set <em>weechat.look.hotlist_add_buffer_if_away</em> to <code>off</code> (to not add
current buffer in hotlist when you are away), then you must manually change the
default conditions with the following command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set weechat.look.hotlist_add_conditions "${buffer.num_displayed} == 0"</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v1.0_trigger_plugin">Rmodifier replaced by Trigger plugin</h3>
<div class="paragraph">
<p>The trigger plugin replaces the rmodifier plugin, which has been removed
(and trigger has much more features than rmodifier).</p>
</div>
<div class="paragraph">
<p>Default triggers have same features as default rmodifiers (to hide passwords
in commands and output).</p>
</div>
<div class="paragraph">
<p>If you added some custom rmodifiers, you must create similar triggers, see
<code>/help trigger</code> and the complete trigger doc in the <em>WeeChat User&#8217;s guide</em>.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
If on startup you have an error about API mismatch in plugin <em>rmodifier.so</em>,
you can manually remove the file (the command <code>make install</code> does not remove
obsolete plugins).
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="v1.0_bare_display">Bare display</h3>
<div class="paragraph">
<p>A bare display mode has been added (for easy text selection and click on URLs),
the new default key is kbd:[Alt+l].</p>
</div>
<div class="paragraph">
<p>Use command <code>/key missing</code> to add the key or <code>/key listdiff</code> to see differences
between your current keys and WeeChat default keys.</p>
</div>
</div>
<div class="sect2">
<h3 id="v1.0_hook_print">Function hook_print</h3>
<div class="paragraph">
<p>In scripts, the arguments <em>displayed</em> and <em>highlight</em> sent to the callback of
<em>hook_print</em> are now integers (they were strings in older releases).<br>
To be compatible with all versions, it is recommended to convert the argument
to integer before testing it, for example in Python: <code>if int(highlight):</code>.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.4.3">Version 0.4.3 (2014-02-09)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.4.3_colors_messages">Colors in messages</h3>
<div class="paragraph">
<p>The color code for "reverse video" in IRC message has been fixed: now WeeChat
uses 0x16 like other clients (and not 0x12 any more).<br>
The code 0x12 is not decoded any more, so if it is received (for example from
an old WeeChat version), it is not displayed as reverse video.</p>
</div>
<div class="paragraph">
<p>The color code for "underlined text" in input line has been fixed: now WeeChat
uses 0x1F, the same code sent to IRC server.</p>
</div>
<div class="paragraph">
<p>The default keys for "reverse video" and "underlined text" have changed:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>reverse video: key kbd:[Ctrl+c], kbd:[r] is replaced by kbd:[Ctrl+c], kbd:[v]</p>
</li>
<li>
<p>underlined text: key kbd:[Ctrl+c], kbd:[u] is replaced by kbd:[Ctrl+c], kbd:[_]</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>You can remove the old keys and add the new ones with these commands:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/key unbind ctrl-Cr
/key unbind ctrl-Cu
/key missing</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.3_terminal_title">Terminal title</h3>
<div class="paragraph">
<p>The boolean option <em>weechat.look.set_title</em> has been renamed to
<em>weechat.look.window_title</em> and is now a string.</p>
</div>
<div class="paragraph">
<p>The content is evaluated and the default value is <code>WeeChat ${info:version}</code>.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
Only static content should be used in this option, because the title is
refreshed only when the option is changed.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.3_bar_item_buffer_last_number">New bar item buffer_last_number</h3>
<div class="paragraph">
<p>The bar item <em>buffer_count</em> now displays the number of opened buffers (each
merged buffer counts 1).</p>
</div>
<div class="paragraph">
<p>The new bar item <em>buffer_last_number</em> displays the highest buffer number
currently used.</p>
</div>
<div class="paragraph">
<p>If you want to display last number in the status bar, replace <em>buffer_count</em>
by <em>buffer_last_number</em> in your option <em>weechat.bar.status.items</em>.</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.3_bar_item_buffer_zoom">New bar item buffer_zoom</h3>
<div class="paragraph">
<p>A new bar item has been added: <em>buffer_zoom</em>.
The default value for status bar items becomes:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set weechat.bar.status.items "[time],[buffer_count],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,[lag],[hotlist],completion,scroll"</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.3_irc_messages_channel_join">IRC messages on channel join</h3>
<div class="paragraph">
<p>The names are not displayed any more by default on channel join (they are in
nicklist anyway).</p>
</div>
<div class="paragraph">
<p>Names can be displayed with the value "353" in option
<em>irc.look.display_join_message</em> (which is not in default value).<br>
The value "366" shows only names count on channel.</p>
</div>
<div class="paragraph">
<p>If you want to display all messages on join (including names), you can do:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set irc.look.display_join_message "329,332,333,353,366"</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.3_irc_maximum_lag">Maximum lag in IRC</h3>
<div class="paragraph">
<p>Option <em>irc.network.lag_max</em> has been added.</p>
</div>
<div class="paragraph">
<p>The value of option <em>irc.network.lag_reconnect</em> (if set to non-zero value) must
be less than or equal to <em>irc.network.lag_max</em>, otherwise the reconnection will
never occur.</p>
</div>
<div class="paragraph">
<p>You should check the value of both options and fix them if needed.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.4.2">Version 0.4.2 (2013-10-06)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.4.2_day_change_message">Day change message</h3>
<div class="paragraph">
<p>The day change message is now dynamically displayed, and therefore is not stored
as a line in buffer any more.</p>
</div>
<div class="paragraph">
<p>Option <em>weechat.look.day_change_time_format</em> has been split into two options
<em>weechat.look.day_change_message</em>{1date|2dates}_ (color codes are allowed in
these options, see <code>/help eval</code>).</p>
</div>
<div class="paragraph">
<p>New color option <em>weechat.color.chat_day_change</em> has been added.</p>
</div>
<div class="paragraph">
<p>After <code>/upgrade</code> from an old version, you will see two messages for each day
change. This is a normal behavior and will not happen again with the next day
changes.</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.2_buffer_regex_search">Regex search in buffer</h3>
<div class="paragraph">
<p>Search with regular expression has been added, and therefore some keys in search
context have been changed.</p>
</div>
<div class="paragraph">
<p>The key kbd:[Ctrl+r] in search context is now used to switch string/regex search
(instead of searching exact text).</p>
</div>
<div class="paragraph">
<p>If you never changed keys in search context, you can reset them all with one
command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/key resetall -yes search</pre>
</div>
</div>
<div class="paragraph">
<p>Or the manual method:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/key missing search
/key bindctxt search ctrl-R /input search_switch_regex</pre>
</div>
</div>
<div class="paragraph">
<p>To view keys in search context:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/key list search</pre>
</div>
</div>
<div class="paragraph">
<p>For more information, see the chapter about keys in the <em>WeeChat User&#8217;s guide</em>.</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.2_rmodifier">New rmodifier</h3>
<div class="paragraph">
<p>A new rmodifier "secure" has been added to hide passphrase and passwords
displayed by command <code>/secure</code>. Use command <code>/rmodifier missing</code> to add it.</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.2_color_codes_options">Color codes in options</h3>
<div class="paragraph">
<p>The format for color codes in some options has changed. The options are
evaluated with the function "string_eval_expression", which uses the format
<code>${color:xxx}</code>.</p>
</div>
<div class="paragraph">
<p>Following options are affected:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>weechat.look.buffer_time_format</em></p>
</li>
<li>
<p><em>weechat.look.prefix_action</em></p>
</li>
<li>
<p><em>weechat.look.prefix_error</em></p>
</li>
<li>
<p><em>weechat.look.prefix_join</em></p>
</li>
<li>
<p><em>weechat.look.prefix_network</em></p>
</li>
<li>
<p><em>weechat.look.prefix_quit</em></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The options using old format <code>${xxx}</code> must be changed with new format
<code>${color:xxx}</code> (where xxx is a color name or number, with optional color
attributes).</p>
</div>
<div class="paragraph">
<p>Example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set weechat.look.buffer_time_format "${color:251}%H${color:243}%M${color:238}%S"</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.2_binary_man_page">Binary and man page</h3>
<div class="paragraph">
<p>WeeChat binary and man page have been renamed from <code>weechat-curses</code> to
<code>weechat</code>.</p>
</div>
<div class="paragraph">
<p>A symbolic link has been added for binary: <code>weechat-curses</code> &#8594; <code>weechat</code>
(so that the /upgrade from a old version will still work).</p>
</div>
<div class="paragraph">
<p>If you upgrade from an old version, it is recommended to force the use of the
new binary name with the command: <code>/upgrade /path/to/weechat</code> (replace the path
accordingly).</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
For packagers: you should create the link <code>weechat-curses</code> &#8594; <code>weechat</code> if it&#8217;s
not automatically created in the package (both cmake and configure are creating
this link on make install).
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.2_man_page_documentation">Man page / documentation</h3>
<div class="paragraph">
<p>Documentation is not built by default any more, you have to use option
<code>-DENABLE_DOC=ON</code> in cmake to enable it.</p>
</div>
<div class="paragraph">
<p>The man page is now built with asciidoc and translated in several
languages. A new cmake option <code>ENABLE_MAN</code> has been added to compile man page
(<code>OFF</code> by default).</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.2_aspell_colors">Aspell colors</h3>
<div class="paragraph">
<p>Option <em>aspell.look.color</em> has been renamed to <em>aspell.color.misspelled</em>.</p>
</div>
<div class="paragraph">
<p>If you changed the value of this option, you must set it again after upgrade.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.4.1">Version 0.4.1 (2013-05-20)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.4.1_relay_nicklist_diff">Nicklist diff in relay</h3>
<div class="paragraph">
<p>A new message with identifier "_nicklist_diff" has been added in relay (WeeChat
protocol). WeeChat may decide to send full nicklist or this nicklist diff at
any time (depending on size of message, the smaller is sent).</p>
</div>
<div class="paragraph">
<p>Clients using nicklist must implement it.</p>
</div>
<div class="paragraph">
<p>For more info about content of message, see document <em>WeeChat Relay Protocol</em>.</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.1_dynamic_nick_prefix_suffix">Dynamic nick prefix/suffix</h3>
<div class="paragraph">
<p>The nick prefix/suffix (for example: "&lt;" and "&gt;") are now dynamic and used on
display (not stored any more in the line).</p>
</div>
<div class="paragraph">
<p>Options moved from irc plugin (irc.conf) to core (weechat.conf):</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>irc.look.nick_prefix</em> moved to <em>weechat.look.nick_prefix</em></p>
</li>
<li>
<p><em>irc.look.nick_suffix</em> moved to <em>weechat.look.nick_suffix</em></p>
</li>
<li>
<p><em>irc.color.nick_prefix</em> moved to <em>weechat.color.chat_nick_prefix</em></p>
</li>
<li>
<p><em>irc.color.nick_suffix</em> moved to <em>weechat.color.chat_nick_suffix</em></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Types and default values for these four options remain unchanged.</p>
</div>
<div class="paragraph">
<p>Two new options to customize the truncature char (by default &#8220;+&#8221;):</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>weechat.look.prefix_align_more_after</em> (boolean, <em>on</em> by default)</p>
</li>
<li>
<p><em>weechat.look.prefix_buffer_align_more_after</em> (boolean, <em>on</em> by default)</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>When these options are enabled (default), the &#8220;+&#8221; is displayed after the
text, replacing the space that should be displayed there.<br>
When turned off, the &#8220;+&#8221; will replace last char of text.</p>
</div>
<div class="paragraph">
<p>Example for a nicks "FlashCode" and "fc" with different values for options
<em>weechat.look.prefix_align_max</em>, <em>weechat.look.prefix_align_more_after</em>,
<em>weechat.look.nick_prefix</em> and <em>weechat.look.nick_suffix</em>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>                      # align_max, more_after, prefix/suffix

FlashCode │ test      # 0, on
       fc │ test

FlashCod+│ test       # 8, on
      fc │ test

FlashCo+ │ test       # 8, off
      fc │ test

&lt;FlashCode&gt; │ test    # 0, on,  &lt; &gt;
       &lt;fc&gt; │ test

&lt;FlashC&gt;+│ test       # 8, on,  &lt; &gt;
    &lt;fc&gt; │ test

&lt;Flash+&gt; │ test       # 8, off, &lt; &gt;
    &lt;fc&gt; │ test</pre>
</div>
</div>
<div class="paragraph">
<p>After <code>/upgrade</code>, if you set new options to non-empty strings, and if old
options were set to non-empty strings too, you will see double prefix/suffix
on old messages, this is normal behavior (lines displayed before <code>/upgrade</code>
have prefix/suffix saved in prefix, but new lines don&#8217;t have them any more).</p>
</div>
<div class="paragraph">
<p>New options in logger plugin (logger.conf):</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>logger.file.nick_prefix</em>: prefix for nicks in log files (default: empty
string)</p>
</li>
<li>
<p><em>logger.file.nick_suffix</em>: suffix for nicks in log files (default: empty
string)</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.1_irc_reconnection_lag">IRC reconnection on important lag</h3>
<div class="paragraph">
<p>Option <em>irc.network.lag_disconnect</em> has been renamed to
<em>irc.network.lag_reconnect</em> and value is now a number of seconds (instead of
minutes).</p>
</div>
<div class="paragraph">
<p>If you changed the value of this option, you must set it again after upgrade.</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.1_irc_passwords_hidden">IRC passwords hidden</h3>
<div class="paragraph">
<p>IRC plugin is now using modifiers "irc_command_auth" and "irc_message_auth" to
hide passwords.</p>
</div>
<div class="paragraph">
<p>The option <em>irc.look.hide_nickserv_pwd</em> has been removed, and a new option
<em>irc.look.nicks_hide_password</em> has been added (by default passwords are hidden
only for "nickserv").</p>
</div>
<div class="paragraph">
<p>A new rmodifier "message_auth" has been added to hide passwords displayed by
command <code>/msg nickserv identify|register|ghost|release</code> and the rmodifier
"nickserv" has been renamed to "command_auth".</p>
</div>
<div class="paragraph">
<p>If you never added/changed rmodifiers, you can just reset all rmodifiers:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/rmodifier default -yes</pre>
</div>
</div>
<div class="paragraph">
<p>If you added/changed some rmodifiers, do it manually with these commands:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/rmodifier del nickserv
/rmodifier add command_auth history_add,input_text_display,irc_command_auth 1,4* ^(/(msg|quote) +nickserv +(id|identify|register|ghost \S+|release \S+) +)(.*)
/rmodifier add message_auth irc_message_auth 1,3* ^(.*(id|identify|register|ghost \S+|release \S+) +)(.*)</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.1_lua_constants">Lua constants</h3>
<div class="paragraph">
<p>For consistency with other supported languages, the API constants in Lua have
been redefined as constants instead of functions.</p>
</div>
<div class="paragraph">
<p>Therefore, the use of a constant must be changed: the parentheses must be
removed.</p>
</div>
<div class="paragraph">
<p>The old syntax was:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-lua" data-lang="lua">return weechat.WEECHAT_RC_OK()</code></pre>
</div>
</div>
<div class="paragraph">
<p>The new syntax is:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-lua" data-lang="lua">return weechat.WEECHAT_RC_OK</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.1_guile_callbacks">Guile callbacks</h3>
<div class="paragraph">
<p>The way to give arguments for guile callbacks has been fixed: now arguments are
sent individually (instead of a list with all arguments inside).</p>
</div>
<div class="paragraph">
<p>Therefore, existing guile scripts must be modified accordingly. Moreover,
WeeChat now requires Guile ≥ 2.0 to compile.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.4.0">Version 0.4.0 (2013-01-20)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.4.0_bars_conditions">Conditions in bars</h3>
<div class="paragraph">
<p>Conditions in bars have changed, and now an expression is evaluated.</p>
</div>
<div class="paragraph">
<p>If you have a value with many conditions in a bar, like: <code>nicklist,active</code>, you
must now use an expression like: <code>${nicklist} &amp;&amp; ${active}</code> (see the chapter
about bars in the <em>WeeChat User&#8217;s guide</em>).</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.4.0_ipv6_default">IPv6 by default</h3>
<div class="sect3">
<h4 id="_irc">IRC</h4>
<div class="paragraph">
<p>IPv6 is now used by default to connect to IRC servers, with fallback to
IPv4. The option <em>irc.server_default.ipv6</em> is now "on" by default. If IPv6 is
not enabled or fails, IPv4 will be used. The "ipv6" option in server is now
used to disable IPv6 and force IPv4 (if option is turned "off").</p>
</div>
</div>
<div class="sect3">
<h4 id="_relay">Relay</h4>
<div class="paragraph">
<p>Relay plugin is now listening by default on an IPv6 socket (new option
<em>relay.network.ipv6</em>, on by default), so connections with IPv4 will have
IPv4-mapped IPv6 addresses, like: "::ffff:127.0.0.1" (for "127.0.0.1"); check
that value of option <em>relay.network.allowed_ips</em> supports this mapping, or
disable IPv6 in relay if you don&#8217;t plan to use it at all:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set relay.network.ipv6 off</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.9.2">Version 0.3.9.2 (2012-11-18)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This version fixes a security vulnerability when a plugin/script gives
untrusted command to API function "hook_process".</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.9.1">Version 0.3.9.1 (2012-11-09)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This version fixes crash when decoding IRC colors in strings.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.9">Version 0.3.9 (2012-09-29)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.3.9_options_moved">Options moved</h3>
<div class="paragraph">
<p>Options moved from core (weechat.conf) to irc plugin (irc.conf):</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>weechat.look.nickmode</em> moved to <em>irc.look.nick_mode</em> (new type: integer
with values: none/prefix/action/both)</p>
</li>
<li>
<p><em>weechat.look.nickmode_empty</em> moved to <em>irc.look.nick_mode_empty</em></p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="v0.3.9_bar_item_buffer_modes">New bar item buffer_modes</h3>
<div class="paragraph">
<p>A new bar item has been added: <em>buffer_modes</em> and irc option
<em>irc.look.item_channel_modes</em> has been removed; to display irc channel modes in
status bar (after channel name), you have to manually add the new item
<em>buffer_modes</em> (this is now used by default in status bar items), default value
for status bar items becomes:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set weechat.bar.status.items "[time],[buffer_count],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_filter,[lag],[hotlist],completion,scroll"</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v0.3.9_command_aspell">Command /aspell</h3>
<div class="paragraph">
<p>New options in command <code>/aspell</code>:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>enable</code>: enable aspell</p>
</li>
<li>
<p><code>disable</code>: disable aspell</p>
</li>
<li>
<p><code>toggle</code>: toggle aspell (new default key: kbd:[Alt+s])</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Options renamed in command <code>/aspell</code>:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>enable</code> renamed to <code>setdict</code> (set dictionary for current buffer)</p>
</li>
<li>
<p><code>disable</code> renamed to <code>deldict</code> (delete dictionary used on current buffer)</p>
</li>
<li>
<p><code>dictlist</code> renamed to <code>listdict</code> (show installed dictionaries)</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="v0.3.9_horizontal_separator">Horizontal separator</h3>
<div class="paragraph">
<p>An horizontal separator has been added between split windows, and two options
have been added to toggle separators (both are enabled by default):</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>weechat.look.window_separator_horizontal</em></p>
</li>
<li>
<p><em>weechat.look.window_separator_vertical</em></p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="v0.3.9_new_keys">New keys</h3>
<div class="paragraph">
<p>New keys were added, use command <code>/key missing</code> to add them or <code>/key listdiff</code>
to see differences between your current keys and WeeChat default keys.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.8">Version 0.3.8 (2012-06-03)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.3.8_options">Options</h3>
<div class="paragraph">
<p>Options <em>weechat.look.prefix_align_more</em> and
<em>weechat.look.prefix_buffer_align_more</em> have been converted from type boolean
to string:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>If the value was on (default), new value is "+" and you can now customize
this char.</p>
</li>
<li>
<p>If the value was off, you have to set " " (string with one space).</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="v0.3.8_paste_detection">Paste detection</h3>
<div class="paragraph">
<p>Option <em>weechat.look.paste_max_lines</em> can now be used with value 0 to detect
paste with one line (only if terminal "bracketed paste mode" is enabled when
option <em>weechat.look.paste_bracketed</em> is on); so now the value -1 is used to
disable paste detection: if your value was 0, you should set it to -1:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set weechat.look.paste_max_lines -1</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v0.3.8_rmodifier">Rmodifier</h3>
<div class="paragraph">
<p>Rmodifier "nickserv" has a new default regex which includes option "release"
for command <code>/msg nickserv</code>.</p>
</div>
<div class="paragraph">
<p>If you never added/changed rmodifiers, you can just reset all rmodifiers:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/rmodifier default -yes</pre>
</div>
</div>
<div class="paragraph">
<p>If you added/changed some rmodifiers, do it manually with these commands:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/rmodifier del nickserv
/rmodifier add nickserv history_add,input_text_display 1,4* ^(/(msg|quote) +nickserv +(id|identify|ghost \S+|release \S+) +)(.*)</pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.7">Version 0.3.7 (2012-02-26)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.3.7_options">Options</h3>
<div class="paragraph">
<p>Option <code>scroll_unread</code> has been moved from command <code>/input</code> to <code>/window</code>,
therefore default command of key kbd:[Alt+u] has been updated. To bind key with
new default value:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/key bind meta-u /window scroll_unread</pre>
</div>
</div>
<div class="paragraph">
<p>Option <em>weechat.history.max_lines</em> has been renamed to
<em>weechat.history.max_buffer_lines_number</em>.</p>
</div>
<div class="paragraph">
<p>If you changed the value of this option, you must set it again after upgrade.</p>
</div>
<div class="paragraph">
<p>Option <em>weechat.plugin.extension</em> now supports list of extensions, and new
default value is ".so,.dll" (with this value, weechat.conf is compatible with
Cygwin).</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.3.7_extended_regex">Extended regex</h3>
<div class="paragraph">
<p>Extended regex is used in filters and irc ignore, so some chars that needed
escape in past do not need any more (for example <code>[0-9]\+</code> becomes <code>[0-9]+</code>),
filters and ignore have to be manually fixed.</p>
</div>
<div class="paragraph">
<p>Option <em>weechat.look.highlight_regex</em> becomes case insensitive by default, to
make it case sensitive, use "(?-i)" at beginning of string, for example:
"(?-i)FlashCode|flashy".</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.6">Version 0.3.6 (2011-10-22)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.3.6_options">Options</h3>
<div class="paragraph">
<p>Option <em>weechat.look.hline_char</em> has been renamed to
<em>weechat.look.separator_horizontal</em>.</p>
</div>
<div class="paragraph">
<p>If you changed the value of this option, you must set it again after upgrade.</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.3.6_colors_bold">Bold in colors</h3>
<div class="paragraph">
<p>Bold is not used any more for basic colors (used only if terminal has less than
16 colors), a new option has been added to force bold if needed:
<em>weechat.look.color_basic_force_bold</em>.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.5">Version 0.3.5 (2011-05-15)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.3.5_colors">Colors</h3>
<div class="paragraph">
<p>If you have some colors defined in section "palette" with version 0.3.4, you
should remove all colors defined, and add new aliases (it&#8217;s not needed any more
to add colors before using them).</p>
</div>
<div class="paragraph">
<p>Colors for nick prefixes (char for op, voice, ..) are defined in a single
option <em>irc.color.nick_prefixes</em>, therefore following options will be lost:
<em>irc.color.nick_prefix_op</em>, <em>irc.color.nick_prefix_halfop</em>,
<em>irc.color.nick_prefix_voice</em>, <em>irc.color.nick_prefix_user</em>.</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.3.5_hotlist">Hotlist</h3>
<div class="sect3">
<h4 id="v0.3.5_hotlist_counters">Counters</h4>
<div class="paragraph">
<p>Count of messages have been added to hotlist by default, if you want to come
back to old behavior, do that:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set weechat.look.hotlist_count_max 0
/set weechat.look.hotlist_buffer_separator ","</pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="v0.3.5_hotlist_away_current_buffer">Away and current buffer</h4>
<div class="paragraph">
<p>When you are away, all buffers are now added to hotlist by default (even if
they are displayed in a window), if you want to come back to old behavior, do
that:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/set weechat.look.hotlist_add_buffer_if_away off</pre>
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v0.3.5_new_keys">New keys</h3>
<div class="paragraph">
<p>New keys were added, use command <code>/key missing</code> to add them or <code>/key listdiff</code>
to see differences between your current keys and WeeChat default keys.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.4">Version 0.3.4 (2011-01-16)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.3.4_after_upgrade">After /upgrade</h3>
<div class="paragraph">
<p>If you are using <code>/upgrade</code> from a previous release:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Some nick prefixes can be wrong, so it is recommended to do <code>/allchan names</code>.</p>
</li>
<li>
<p>Nick colors are defined with a new option <em>weechat.color.chat_nick_colors</em>,
therefore old options <em>weechat.color.chat_nick_color1..10</em> will be lost when
upgrading.</p>
</li>
<li>
<p>Nick colors in messages displayed will be wrong if you changed some nick
colors (old default colors will be used).</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="v0.3.4_options">Options</h3>
<div class="paragraph">
<p>Some IRC options have been renamed, before upgrading to this version, note
value for old options, and set them again with new name:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>options moved from <em>network</em> section to servers (with global value, and
server value, like other server options):</p>
<div class="ulist">
<ul>
<li>
<p><em>irc.network.connection_timeout</em> moved to
<em>irc.server_default.connection_timeout</em></p>
</li>
<li>
<p><em>irc.network.anti_flood_prio_high</em> moved to
<em>irc.server_default.anti_flood_prio_high</em></p>
</li>
<li>
<p><em>irc.network.anti_flood_prio_low</em> moved to
<em>irc.server_default.anti_flood_prio_low</em></p>
</li>
<li>
<p><em>irc.network.away_check</em> moved to <em>irc.server_default.away_check</em></p>
</li>
<li>
<p><em>irc.network.away_check_max_nicks</em> moved to
<em>irc.server_default.away_check_max_nicks</em></p>
</li>
<li>
<p><em>irc.network.default_msg_part</em> moved to
<em>irc.server_default.default_msg_part</em></p>
</li>
<li>
<p><em>irc.network.default_msg_quit</em> moved to
<em>irc.server_default.default_msg_quit</em></p>
</li>
</ul>
</div>
</li>
<li>
<p>other IRC options renamed:</p>
<div class="ulist">
<ul>
<li>
<p><em>irc.look.open_channel_near_server</em> moved to <em>irc.look.new_channel_position</em>
(old option was boolean, new is integer with value as string)</p>
</li>
<li>
<p><em>irc.look.open_pv_near_server</em> moved to <em>irc.look.new_pv_position</em>
(old option was boolean, new is integer with value as string)</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.3">Version 0.3.3 (2010-08-07)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.3.3_after_upgrade">After /upgrade</h3>
<div class="paragraph">
<p>If you are using <code>/upgrade</code> from a previous release, then you must reconnect to
IRC servers in order to use new command /wallchops.</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.3.3_options">Options</h3>
<div class="paragraph">
<p>Option <em>irc.look.show_away_once</em> has been renamed to
<em>irc.look.display_pv_away_once</em>.</p>
</div>
<div class="paragraph">
<p>Option <em>irc.network.lag_min_show</em> is now in milliseconds, you should set new
value: your current value multiplied by 1000 (new default value is 500).</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.2">Version 0.3.2 (2010-04-18)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.3.2_after_upgrade">After /upgrade</h3>
<div class="paragraph">
<p>If you are using <code>/upgrade</code> from a previous release, then you must execute this
command on all IRC servers/channels/private buffers and xfer DCC chats (not
needed on WeeChat core buffer or buffers from other plugins/scripts):</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/buffer set highlight_words $nick</pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.1.1">Version 0.3.1.1 (2010-01-31)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This version fixes crashes with SSL connection and purge of old DCC chats.</p>
</div>
<div class="paragraph">
<p>All users of version 0.3.1 should upgrade to this version.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.1">Version 0.3.1 (2010-01-23)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.3.1_aliases">Aliases</h3>
<div class="paragraph">
<p>IRC commands /ame and /amsg are now aliases, if you are upgrading from version
0.3.0, you must create aliases with following commands:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/alias aaway allserv /away
/alias ame allchan /me
/alias amsg allchan /amsg *
/alias anick allserv /nick</pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.3.0">Version 0.3.0 (2009-09-06)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This version brings <strong>MAJOR</strong> changes, especially for configuration files and
plugin API and is not compatible with previous versions.</p>
</div>
<div class="paragraph">
<p>Major differences:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>It is <strong>NOT POSSIBLE</strong> to use command <code>/upgrade</code> from a version 0.2.x to 0.3.x;
you have to quit your old WeeChat, then run new version.</p>
</li>
<li>
<p>New configuration files (<code><strong>.conf</code>) are not compatible with old files
(<code></strong>.rc</code>).</p>
</li>
<li>
<p>Name of options is similar to old versions, but there is now one
configuration file by plugin, and one file for WeeChat core; there is
<strong>no automatic conversion</strong> for your old options to new configuration files,
so you&#8217;ll have to setup again your IRC servers and all other options.</p>
</li>
<li>
<p>Plugin API has been rewritten and is not compatible with previous versions;
accordingly, scripts and plugins must have been designed for version 0.3.x to
be loaded into WeeChat.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.2.6.3">Version 0.2.6.3 (2009-06-13)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This version fixes gnutls detection.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.2.6.2">Version 0.2.6.2 (2009-04-18)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This version fixes a bug with charset decoding (like <em>iso2022jp</em>).</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.2.6.1">Version 0.2.6.1 (2009-03-14)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This version fixes a major bug: crash with some special chars in IRC messages.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.2.6">Version 0.2.6 (2007-09-06)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.2.5">Version 0.2.5 (2007-06-07)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.2.4">Version 0.2.4 (2007-03-29)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.2.3">Version 0.2.3 (2007-01-10)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This version fixes several major bugs of version 0.2.2.</p>
</div>
<div class="paragraph">
<p>All users of version 0.2.2 should upgrade to this version.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.2.2">Version 0.2.2 (2007-01-06)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.2.2_charset_plugin">Charset plugin</h3>
<div class="paragraph">
<p>For users of any previous version, all your charset settings in weechat.rc will
be LOST! You should save your weechat.rc to keep your values and set them again
with new <em>charset</em> plugin.</p>
</div>
<div class="paragraph">
<p>For ISO users: history of channels may be without accents (after <code>/upgrade</code>),
this is not recoverable, but this is not a bug. All new messages should be OK.</p>
</div>
<div class="paragraph">
<p>Be careful, now default encode is UTF-8 for all channels (before it was
terminal charset). If you still want to send messages as <em>ISO-8859-1</em>, you
should set either global encode or server specific encode to <em>ISO-8859-1</em>.</p>
</div>
<div class="paragraph">
<p>For global encode:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/setp charset.global.encode = "ISO-8859-1"</pre>
</div>
</div>
<div class="paragraph">
<p>For server encode (on server buffer):</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/charset encode ISO-8859-1</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="v0.2.2_new_keys">New keys</h3>
<div class="paragraph">
<p>New keys for topic scroll: kbd:[F9]/kbd:[F10].</p>
</div>
<div class="paragraph">
<p>Key kbd:[F10] was used for <code>infobar_clear</code> in previous WeeChat versions, you
have to manually rebind this key (except for new WeeChat users):</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/key &lt;press alt+"k" then F10&gt; scroll_topic_right</pre>
</div>
</div>
<div class="paragraph">
<p>Which gives something like:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/key meta2-21~ scroll_topic_right</pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.2.1">Version 0.2.1 (2006-10-01)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.2.0">Version 0.2.0 (2006-08-19)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.2.0_after_upgrade">After /upgrade</h3>
<div class="paragraph">
<p>If you upgraded with <code>/upgrade</code> in WeeChat, you should <code>/disconnect</code> and then
<code>/reconnect</code> on each server, to display properly channel/user modes.</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.2.0_plugins">Plugins</h3>
<div class="paragraph">
<p>If you&#8217;re using plugins, you should remove some old plugins libraries in
WeeChat system library directory (commonly <em>/usr/local/lib/weechat/plugins</em>):
remove <code>lib*</code> files (like <code>libperl.<strong></code>, <code>libpython.</strong></code>, ..) and keep only new
libraries (<code>perl.<strong></code>, <code>python.</strong></code>, ..).</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.1.9">Version 0.1.9 (2006-05-25)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.1.9_dcc_chat">DCC chat</h3>
<div class="paragraph">
<p>Please close all DCC chat buffers before using /upgrade command, otherwise you
may experience problems with DCC chats.</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.1.9_script_api">Script API</h3>
<div class="paragraph">
<p>Some changes in script API: now timer handlers functions takes exactly 0 (zero)
argument (in version 0.1.8, two arguments were mandatory but not used: server
and arguments).</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.1.8">Version 0.1.8 (2006-03-18)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.1.8_after_upgrade">After /upgrade</h3>
<div class="paragraph">
<p>After installing 0.1.8 (or with <code>/upgrade</code>), issue both commands (if you didn&#8217;t
redefine these keys (kbd:[Alt+Home] / kbd:[Alt+End]):</p>
</div>
<div class="listingblock">
<div class="content">
<pre>/key unbind meta-meta2-1~
/key unbind meta-meta2-4~</pre>
</div>
</div>
<div class="paragraph">
<p>Then launch again WeeChat (or issue <code>/upgrade</code>).</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.1.8_configuration_files">Configuration files</h3>
<div class="paragraph">
<p>It is recommended for users of version 0.1.7 (or any older), to replace values
in setup file (<em>~/.weechat/weechat.rc</em>):</p>
</div>
<div class="ulist">
<ul>
<li>
<p>option: log_path: replace <em>~/.weechat/logs</em> by <em>%h/logs</em></p>
</li>
<li>
<p>option: plugins_path: replace <em>~/.weechat/plugins</em> by <em>%h/plugins</em></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The string <em>%h</em> is replaced by WeeChat home (default: <em>~/.weechat</em>, may be
overridden by new command line argument <code>--dir</code>).</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.1.8_keys">Keys</h3>
<div class="paragraph">
<p>Keys kbd:[Alt+Home] / kbd:[Alt+End] were used for nicklist scroll, they&#8217;re now
replaced by kbd:[Alt+F11] / kbd:[Alt+F12].</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.1.7">Version 0.1.7 (2006-01-14)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.1.7_ruby">Ruby</h3>
<div class="paragraph">
<p>Ruby script plugin has been added but is experimental in this release. You&#8217;re
warned!</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.1.7_command_away">Command /away</h3>
<div class="paragraph">
<p>Command <code>/away</code> was changed to be RFC 2812 compliant. Now argument is required
to set away, and no argument means remove away ("back").</p>
</div>
<div class="paragraph">
<p>Option <em>irc_default_msg_away</em> has been removed.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.1.6">Version 0.1.6 (2005-11-11)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="v0.1.6_script_api">Script API</h3>
<div class="paragraph">
<p>Incompatibility with some old scripts: now all handlers have to return a code
for completion, and to do some actions about message to ignore (please look at
documentation for detail).</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.1.6_openbsd">OpenBSD</h3>
<div class="paragraph">
<p>On OpenBSD, the new option <em>plugins_extension</em> should be set to <em>.so.0.0</em> since
the plugins names are ending by <em>.so.0.0</em> and not <em>.so</em>.</p>
</div>
</div>
<div class="sect2">
<h3 id="v0.1.6_utf8">UTF-8</h3>
<div class="paragraph">
<p>With new and full UTF-8 support, the option <em>look_charset_internal</em> should be
set to blank for most cases. Forces it only if your locale is not properly
detected by WeeChat (you can set <em>UTF-8</em> or <em>ISO-8859-15</em> for example,
depending on your locale). WeeChat is looking for <em>UTF-8</em> in your locale name
at startup.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.1.5">Version 0.1.5 (2005-09-24)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.1.4">Version 0.1.4 (2005-07-30)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.1.3">Version 0.1.3 (2005-07-02)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.1.2">Version 0.1.2 (2005-05-21)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.1.1">Version 0.1.1 (2005-03-20)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.1.0">Version 0.1.0 (2005-02-12)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.0.9">Version 0.0.9 (2005-01-01)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.0.8">Version 0.0.8 (2004-10-30)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.0.7">Version 0.0.7 (2004-08-08)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.0.6">Version 0.0.6 (2004-06-05)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.0.5">Version 0.0.5 (2004-02-07)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.0.4">Version 0.0.4 (2004-01-01)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.0.3">Version 0.0.3 (2003-11-03)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.0.2">Version 0.0.2 (2003-10-05)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="v0.0.1">Version 0.0.1 (2003-09-27)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No release note.</p>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2019-02-17 07:20:07 UTC
</div>
</div>
</body>
</html>