Ability to pin buffers. Fixes #778.
This introduces ability to pin buffers using localvar storage in WeeChat. At a later stage some UI should be introduced for this, like discussed in #604 .
This commit is contained in:
parent
b917b74c3f
commit
65b4aaa97d
4 changed files with 23 additions and 2 deletions
13
index.html
13
index.html
|
@ -152,10 +152,21 @@
|
||||||
<li><kbd>ALT-<</kbd>: Switch to previous active buffer</li>
|
<li><kbd>ALT-<</kbd>: Switch to previous active buffer</li>
|
||||||
<li><kbd>ALT-g</kbd>: Focus on buffer list filter</li>
|
<li><kbd>ALT-g</kbd>: Focus on buffer list filter</li>
|
||||||
<li><kbd>Esc-Esc</kbd>: Disconnect (double-tap)</li>
|
<li><kbd>Esc-Esc</kbd>: Disconnect (double-tap)</li>
|
||||||
<li>Arrow keys: Navigate history</li>
|
<li>Arrow keys: Navigate history, or navigate quick search buffer results.</li>
|
||||||
<li><kbd>Tab</kbd>: Complete nick</li>
|
<li><kbd>Tab</kbd>: Complete nick</li>
|
||||||
<li>The following readline/emacs style keybindings can be enabled with a setting: <span title="Move cursor to beginning of line"><kbd>Ctrl-a</kbd></span>, <span title="Move cursor to te end of the line"><kbd>Ctrl-e</kbd></span>, <span title="Delete from cursor to beginning of the line"><kbd>Ctrl-u</kbd></span>, <span title="Delete from cursor to the end of the line"><kbd>Ctrl-k</kbd></span>, <span title="Delete from cursor to previous space"><kbd>Ctrl-w</kbd></span></li>
|
<li>The following readline/emacs style keybindings can be enabled with a setting: <span title="Move cursor to beginning of line"><kbd>Ctrl-a</kbd></span>, <span title="Move cursor to te end of the line"><kbd>Ctrl-e</kbd></span>, <span title="Delete from cursor to beginning of the line"><kbd>Ctrl-u</kbd></span>, <span title="Delete from cursor to the end of the line"><kbd>Ctrl-k</kbd></span>, <span title="Delete from cursor to previous space"><kbd>Ctrl-w</kbd></span></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<h3>Pinning buffers</h3>
|
||||||
|
<p>
|
||||||
|
The option "Only show buffers with unread messages" is useful when you have a lot of buffers and cant meaningfully look at all of them at the same time. However, often you have a select few buffers that you use more frequently and would like to have displayed permanently.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
To pin a buffer, type <code>/buffer set localvar_set_pinned true</code>. <strong>Note</strong>: Local variables on buffers are not persisted across WeeChat restarts, so either use script <code>buffer_autoset.py</code> to automatically apply that upon buffer creation or use a trigger if you want automatic repinning when buffer gets recreated. To unpin you can use the same command and set anything other than true.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Helpful trigger for automatically repin buffer: <code>/trigger add autopin signal "buffer_opened" "${buffer[${tg_signal_data}].full_name} =~ irc.freenode.#weechat" "" "/command -buffer ${buffer[${tg_signal_data}].full_name} * /buffer set localvar_set_pinned true"</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -680,6 +680,11 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout',
|
||||||
if (buffer.fullName === "core.weechat" || (settings.orderbyserver && buffer.type === 'server')) {
|
if (buffer.fullName === "core.weechat" || (settings.orderbyserver && buffer.type === 'server')) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Always show pinned buffers
|
||||||
|
if (buffer.pinned) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return (buffer.unread > 0 || buffer.notification > 0) && !buffer.hidden;
|
return (buffer.unread > 0 || buffer.notification > 0) && !buffer.hidden;
|
||||||
}
|
}
|
||||||
return !buffer.hidden;
|
return !buffer.hidden;
|
||||||
|
|
|
@ -306,6 +306,7 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific
|
||||||
old.server = localvars.server;
|
old.server = localvars.server;
|
||||||
old.serverSortKey = old.plugin + "." + old.server +
|
old.serverSortKey = old.plugin + "." + old.server +
|
||||||
(old.type === "server" ? "" : ("." + old.shortName));
|
(old.type === "server" ? "" : ("." + old.shortName));
|
||||||
|
old.pinned = localvars.pinned === "true";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -95,6 +95,9 @@ models.service('models', ['$rootScope', '$filter', 'bufferResume', function($roo
|
||||||
|
|
||||||
var plugin = message.local_variables.plugin;
|
var plugin = message.local_variables.plugin;
|
||||||
var server = message.local_variables.server;
|
var server = message.local_variables.server;
|
||||||
|
|
||||||
|
var pinned = message.local_variables.pinned === "true";
|
||||||
|
|
||||||
// Server buffers have this "irc.server.freenode" naming schema, which
|
// Server buffers have this "irc.server.freenode" naming schema, which
|
||||||
// messes the sorting up. We need it to be "irc.freenode" instead.
|
// messes the sorting up. We need it to be "irc.freenode" instead.
|
||||||
var serverSortKey = plugin + "." + server +
|
var serverSortKey = plugin + "." + server +
|
||||||
|
@ -335,7 +338,8 @@ models.service('models', ['$rootScope', '$filter', 'bufferResume', function($roo
|
||||||
getHistoryUp: getHistoryUp,
|
getHistoryUp: getHistoryUp,
|
||||||
getHistoryDown: getHistoryDown,
|
getHistoryDown: getHistoryDown,
|
||||||
isNicklistEmpty: isNicklistEmpty,
|
isNicklistEmpty: isNicklistEmpty,
|
||||||
nicklistRequested: nicklistRequested
|
nicklistRequested: nicklistRequested,
|
||||||
|
pinned: pinned,
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue