From 0aee413754347480ed7b2277a72fdfd053d31d3d Mon Sep 17 00:00:00 2001 From: Robert Krahn Date: Sun, 17 Mar 2013 03:15:12 -0700 Subject: [PATCH] [occur] make occur doc react to keyboard evts / highlight it --- lib/ace/commands/occur_commands.js | 4 +++- lib/ace/occur.js | 2 ++ lib/ace/occur_test.js | 13 ++++++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/ace/commands/occur_commands.js b/lib/ace/commands/occur_commands.js index c030ffdb..a0106f08 100644 --- a/lib/ace/commands/occur_commands.js +++ b/lib/ace/commands/occur_commands.js @@ -41,6 +41,7 @@ var occurStartCommands = [{ var handler = new OccurKeyboardHandler(); editor.keyBinding.addKeyboardHandler(handler); editor.commands.addCommands(occurCommands); + editor.setReadOnly(true); var occur = new Occur(); occur.display(editor.session, options); }, @@ -55,6 +56,7 @@ var occurCommands = [{ var session = editor.session, occur = session.doc.$occur; if (occur) occur.displayOriginal(session); editor.commands.removeCommands(occurCommands); + editor.setReadOnly(false); var handler = editor.getKeyboardHandler(); if (handler.isOccurHandler) editor.keyBinding.removeKeyboardHandler(handler); }, @@ -82,7 +84,7 @@ oop.inherits(OccurKeyboardHandler, HashHandler); var handleKeyboard$super = this.handleKeyboard; this.handleKeyboard = function(data, hashId, key, keyCode) { var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); - return (cmd && cmd.command) ? cmd : {command: "null"}; + return (cmd && cmd.command) ? cmd : {command: "null", passEvent: true}; } }).call(OccurKeyboardHandler.prototype); diff --git a/lib/ace/occur.js b/lib/ace/occur.js index fa26410d..9688c909 100644 --- a/lib/ace/occur.js +++ b/lib/ace/occur.js @@ -75,6 +75,8 @@ oop.inherits(Occur, Search); this.displayOriginal = function(session) { session.setDocument(this.$originalDoc); + session.highlight(null); + session._emit('changeBackMarker'); } this.matchingLines = function(session, options) { diff --git a/lib/ace/occur_test.js b/lib/ace/occur_test.js index 50dfc489..faadf976 100644 --- a/lib/ace/occur_test.js +++ b/lib/ace/occur_test.js @@ -71,17 +71,28 @@ module.exports = { }, "test: occur command" : function() { + // setup var lines = ['hel', 'lo', '', 'wo', 'rld']; session.doc.insertLines(0, lines); editor.commands.addCommands(occurCommands); + + // run occur for lines including 'o' editor.execCommand('occur', {needle: 'o'}); assert.equal(session.getValue(), 'lo\nwo'); + + // command install OK? + assert.ok(editor.getReadOnly(), 'occur doc not marked as read only'); assert.ok(editor.getKeyboardHandler().isOccurHandler, 'no occur handler installed'); assert.ok(editor.commands.byName.occurexit, 'no exitoccur command installed'); + + // exit occur editor.execCommand('occurexit'); + assert.equal(session.getValue(), lines.join('\n') + '\n'); + + // editor state cleaned up? + assert.ok(!editor.getReadOnly(), 'original doc is marked as read only'); assert.ok(!editor.getKeyboardHandler().isOccurHandler, 'occur handler installed after detach'); assert.ok(!editor.commands.byName.occurexit, 'exitoccur installed after exiting occur'); - assert.equal(session.getValue(), lines.join('\n') + '\n'); } };