[occur] fixing recursive occurs

This commit is contained in:
Robert Krahn 2013-03-17 19:00:42 -07:00
commit d75845f3aa
2 changed files with 27 additions and 3 deletions

View file

@ -37,8 +37,9 @@ var config = require("../config"),
var occurStartCommands = [{
name: "occur",
exec: function(editor, options) {
var alreadyInOccur = !!editor.session.$occur;
var occurSessionActive = new Occur().enter(editor, options);
if (occurSessionActive) OccurKeyboardHandler.installIn(editor);
if (occurSessionActive && !alreadyInOccur) OccurKeyboardHandler.installIn(editor);
},
readOnly: true
}];
@ -50,7 +51,7 @@ var occurCommands = [{
var occur = editor.session.$occur;
if (!occur) return;
occur.exit(editor, {});
OccurKeyboardHandler.uninstallFrom(editor);
if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor);
},
readOnly: true
}, {
@ -60,7 +61,7 @@ var occurCommands = [{
var occur = editor.session.$occur;
if (!occur) return;
occur.exit(editor, {translatePosition: true});
OccurKeyboardHandler.uninstallFrom(editor);
if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor);
},
readOnly: true
}];

View file

@ -120,6 +120,29 @@ module.exports = {
editor.execCommand('occuraccept');
assert.position(editor.getCursorPosition(), 3, 1, 'occur -> original pos');
},
"test: recursive occur" : function() {
// setup
var text = 'x\nabc1\nx\nabc2\n';
editor.session.insert({row: 0, column: 0}, text);
editor.commands.addCommands(occurCommands);
// orig -> occur1
editor.execCommand('occur', {needle: 'abc'});
assert.equal(editor.getValue(), 'abc1\nabc2', "orig -> occur1");
// occur1 -> occur2
editor.execCommand('occur', {needle: '2'});
assert.equal(editor.getValue(), 'abc2', "occur1 -> occur2");
// occur2 -> occur1
editor.execCommand('occurexit');
assert.equal(editor.getValue(), 'abc1\nabc2', "occur2 -> occur1");
// occur1 -> orig
editor.execCommand('occurexit');
assert.equal(editor.getValue(), text, "occur1 -> orig");
}
};