Add some emacs keybindings. Fixes #371
Add the most commonly used emacs/readline keybindings to input field and document them. Also change the wording on some of the old descritions to clarify intent.
This commit is contained in:
parent
018feb2fd5
commit
4081b18ed2
|
@ -114,12 +114,14 @@
|
||||||
<ul>
|
<ul>
|
||||||
<li>ALT-n: Toggle nicklist</li>
|
<li>ALT-n: Toggle nicklist</li>
|
||||||
<li>ALT-l: Focus on input bar</li>
|
<li>ALT-l: Focus on input bar</li>
|
||||||
<li>ALT-[0-9]: Focus on buffer</li>
|
<li>ALT-[0-9]: Switch to buffer number N</li>
|
||||||
<li>ALT-a: Focus on next buffer with activity</li>
|
<li>ALT-a: Focus on next buffer with activity</li>
|
||||||
<li>ALT-<: Switch to previous buffer</li>
|
<li>ALT-<: Switch to previous active buffer</li>
|
||||||
<li>ALT-g: Focus on buffer list filter</li>
|
<li>ALT-g: Focus on buffer list filter</li>
|
||||||
<li>Esc-Esc: disconnect (double-tap)</li>
|
<li>Esc-Esc: disconnect (double-tap)</li>
|
||||||
<li>arrow keys: history navigation</li>
|
<li>Arrow keys: history navigation</li>
|
||||||
|
<li>Tab key: nick complete</li>
|
||||||
|
<li>The following readline/emacs style keybindings works: Ctrl-a, Ctrl-e, Ctrl-u, Ctrl-k, Ctrl-w</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1517,12 +1517,45 @@ weechat.directive('inputBar', function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enter to submit, shift-enter for newline
|
// Enter to submit, shift-enter for newline
|
||||||
//
|
|
||||||
if (code == 13 && !$event.shiftKey && document.activeElement === inputNode) {
|
if (code == 13 && !$event.shiftKey && document.activeElement === inputNode) {
|
||||||
$event.preventDefault();
|
$event.preventDefault();
|
||||||
$scope.sendMessage();
|
$scope.sendMessage();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
// Some readline keybindings
|
||||||
|
if ($event.ctrlKey && !$event.altKey && !$event.shiftKey && document.activeElement === inputNode) {
|
||||||
|
// Ctrl-a
|
||||||
|
if (code == 65) {
|
||||||
|
inputNode.setSelectionRange(0, 0);
|
||||||
|
// Ctrl-e
|
||||||
|
} else if (code == 69) {
|
||||||
|
inputNode.setSelectionRange($scope.command.length, $scope.command.length);
|
||||||
|
// Ctrl-u
|
||||||
|
} else if (code == 85) {
|
||||||
|
$scope.command = $scope.command.slice(caretPos);
|
||||||
|
setTimeout(function() {
|
||||||
|
inputNode.setSelectionRange(0, 0);
|
||||||
|
});
|
||||||
|
// Ctrl-k
|
||||||
|
} else if (code == 75) {
|
||||||
|
$scope.command = $scope.command.slice(0, caretPos);
|
||||||
|
setTimeout(function() {
|
||||||
|
inputNode.setSelectionRange($scope.command.length, $scope.command.length);
|
||||||
|
});
|
||||||
|
// Ctrl-w
|
||||||
|
} else if (code == 87) {
|
||||||
|
var trimmedValue = $scope.command.slice(0, caretPos);
|
||||||
|
var lastSpace = trimmedValue.lastIndexOf(' ') + 1;
|
||||||
|
$scope.command = $scope.command.slice(0, lastSpace) + $scope.command.slice(caretPos, $scope.command.length);
|
||||||
|
setTimeout(function() {
|
||||||
|
inputNode.setSelectionRange(lastSpace, lastSpace);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$event.preventDefault();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue