Switch to adjacent buffer with alt+arrow
Use alt+up and alt+down to switch to previous / next buffer. Works when bufferlist is nested or flat. This implements issue #511.
This commit is contained in:
parent
a702aded62
commit
3b60f992b4
3 changed files with 21 additions and 1 deletions
|
@ -727,6 +727,18 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout',
|
||||||
settings.nonicklist = !settings.nonicklist;
|
settings.nonicklist = !settings.nonicklist;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$rootScope.switchToAdjacentBuffer = function(direction) {
|
||||||
|
// direction is +1 for next buffer, -1 for previous buffer
|
||||||
|
var sortedBuffers = _.sortBy($scope.getBuffers(), $rootScope.predicate);
|
||||||
|
var activeBuffer = models.getActiveBuffer();
|
||||||
|
var index = sortedBuffers.indexOf(activeBuffer);
|
||||||
|
if (index >= 0) {
|
||||||
|
var newBuffer = sortedBuffers[index + direction];
|
||||||
|
if (newBuffer) {
|
||||||
|
$scope.setActiveBuffer(newBuffer.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
$scope.handleSearchBoxKey = function($event) {
|
$scope.handleSearchBoxKey = function($event) {
|
||||||
// Support different browser quirks
|
// Support different browser quirks
|
||||||
|
|
|
@ -294,6 +294,14 @@ weechat.directive('inputBar', function() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Alt+Arrow up/down -> switch to prev/next adjacent buffer
|
||||||
|
if ($event.altKey && !$event.ctrlKey && (code === 38 || code === 40)) {
|
||||||
|
$event.preventDefault();
|
||||||
|
var direction = code - 39;
|
||||||
|
$rootScope.switchToAdjacentBuffer(direction);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// Alt+L -> focus on input bar
|
// Alt+L -> focus on input bar
|
||||||
if ($event.altKey && (code === 76 || code === 108)) {
|
if ($event.altKey && (code === 76 || code === 108)) {
|
||||||
$event.preventDefault();
|
$event.preventDefault();
|
||||||
|
|
|
@ -84,7 +84,7 @@ models.service('models', ['$rootScope', '$filter', function($rootScope, $filter)
|
||||||
var notification = 0;
|
var notification = 0;
|
||||||
var unread = 0;
|
var unread = 0;
|
||||||
var lastSeen = -1;
|
var lastSeen = -1;
|
||||||
var serverSortKey = fullName.replace(/^irc\.server\.(\w+)/, "irc.$1");
|
var serverSortKey = fullName.replace(/^irc\.server\.(\w+)/, "irc.$1").toLowerCase();
|
||||||
// There are two kinds of types: bufferType (free vs formatted) and
|
// There are two kinds of types: bufferType (free vs formatted) and
|
||||||
// the kind of type that distinguishes queries from channels etc
|
// the kind of type that distinguishes queries from channels etc
|
||||||
var bufferType = message.type;
|
var bufferType = message.type;
|
||||||
|
|
Loading…
Reference in a new issue