Merge pull request #543 from ajaxorg/vim

Changes in Vim branch
This commit is contained in:
Zef Hemel 2011-11-30 08:50:28 -08:00
commit 0d56cbade3
3 changed files with 24 additions and 13 deletions

View file

@ -86,7 +86,9 @@ var KeyBinding = function(editor) {
if (!toExecute || !toExecute.command)
return false;
var success = false, commands = this.$editor.commands;
var success = false;
var commands = this.$editor.commands;
// allow keyboardHandler to consume keys
if (toExecute.command != "null")

View file

@ -73,7 +73,7 @@ StateHandler.prototype = {
});
},
$composeBuffer: function(data, hashId, key) {
$composeBuffer: function(data, hashId, key, e) {
// Initialize the data object.
if (data.state == null || data.buffer == null) {
data.state = "start";
@ -102,17 +102,23 @@ StateHandler.prototype = {
data.buffer = bufferToUse;
}
return {
bufferToUse: bufferToUse,
symbolicName: symbolicName
var bufferObj = {
bufferToUse: bufferToUse,
symbolicName: symbolicName,
};
if (e) {
bufferObj.keyIdentifier = e.keyIdentifier
}
return bufferObj;
},
$find: function(data, buffer, symbolicName, hashId, key) {
$find: function(data, buffer, symbolicName, hashId, key, keyIdentifier) {
// Holds the command to execute and the args if a command matched.
var result = {};
// Loop over all the bindings of the keymapp until a match is found.
// Loop over all the bindings of the keymap until a match is found.
this.keymapping[data.state].some(function(binding) {
var match;
@ -127,7 +133,7 @@ StateHandler.prototype = {
}
// Check if the match function matches.
if (binding.match && !binding.match(buffer, hashId, key, symbolicName)) {
if (binding.match && !binding.match(buffer, hashId, key, symbolicName, keyIdentifier)) {
return false;
}
@ -194,20 +200,21 @@ StateHandler.prototype = {
/**
* This function is called by keyBinding.
*/
handleKeyboard: function(data, hashId, key) {
handleKeyboard: function(data, hashId, key, keyCode, e) {
// If we pressed any command key but no other key, then ignore the input.
// Otherwise "shift-" is added to the buffer, and later on "shift-g"
// which results in "shift-shift-g" which doesn't make senese.
// which results in "shift-shift-g" which doesn't make sense.
if (hashId != 0 && (key == "" || key == String.fromCharCode(0))) {
return null;
}
// Compute the current value of the keyboard input buffer.
var r = this.$composeBuffer(data, hashId, key);
var r = this.$composeBuffer(data, hashId, key, e);
var buffer = r.bufferToUse;
var symbolicName = r.symbolicName;
var keyId = r.keyIdentifier;
r = this.$find(data, buffer, symbolicName, hashId, key);
r = this.$find(data, buffer, symbolicName, hashId, key, keyId);
if (DEBUG) {
console.log("KeyboardStateMapper#match", buffer, symbolicName, r);
}

View file

@ -84,7 +84,9 @@ var Gutter = function(parentEl) {
};
for (var i=0; i<rowAnnotations.length; i++) {
var annotation = rowAnnotations[i];
rowInfo.text.push(annotation.text.replace(/"/g, "&quot;").replace(/'/g, "&#8217;").replace(/</, "&lt;"));
var annoText = annotation.text.replace(/"/g, "&quot;").replace(/'/g, "&#8217;").replace(/</, "&lt;");
if (rowInfo.text.indexOf(annoText) === -1)
rowInfo.text.push(annoText);
var type = annotation.type;
if (type == "error")
rowInfo.className = "ace_error";