From a589557aaa2871032682c27d15d31a4e414af5a5 Mon Sep 17 00:00:00 2001 From: Corey Johnson & Nathan Sobo Date: Wed, 1 Aug 2012 09:40:50 -0700 Subject: [PATCH] Ignore bracket matching when there are multiple cursors --- spec/app/language-mode-spec.coffee | 11 +++++++++++ src/app/edit-session.coffee | 3 +++ src/app/language-mode.coffee | 2 ++ 3 files changed, 16 insertions(+) diff --git a/spec/app/language-mode-spec.coffee b/spec/app/language-mode-spec.coffee index 2c57b8ff6..cdc506295 100644 --- a/spec/app/language-mode-spec.coffee +++ b/spec/app/language-mode-spec.coffee @@ -14,6 +14,17 @@ describe "LanguageMode", -> { buffer, languageMode } = editSession describe "matching character insertion", -> + describe "when there are multiple cursors", -> + it "inserts ) at each cursor", -> + editSession.buffer.setText("()\nab\n[]\n12") + editSession.setCursorBufferPosition([3, 1]) + editSession.addCursorAtBufferPosition([2, 1]) + editSession.addCursorAtBufferPosition([1, 1]) + editSession.addCursorAtBufferPosition([0, 1]) + editSession.insertText ')' + + expect(editSession.buffer.getText()).toBe "())\na)b\n[)]\n1)2" + describe "when ( is inserted", -> it "inserts a matching ) following the cursor", -> editSession.insertText '(' diff --git a/src/app/edit-session.coffee b/src/app/edit-session.coffee index c3a1e58a1..a879e38af 100644 --- a/src/app/edit-session.coffee +++ b/src/app/edit-session.coffee @@ -307,6 +307,9 @@ class EditSession removeAnchorRange: (anchorRange) -> _.remove(@anchorRanges, anchorRange) + hasMultipleCursors: -> + @getCursors().length > 1 + getCursors: -> new Array(@cursors...) getCursor: (index=0) -> diff --git a/src/app/language-mode.coffee b/src/app/language-mode.coffee index 25c52f9d9..a456c05b6 100644 --- a/src/app/language-mode.coffee +++ b/src/app/language-mode.coffee @@ -17,6 +17,8 @@ class LanguageMode @aceAdaptor = new AceAdaptor(@editSession) _.adviseBefore @editSession, 'insertText', (text) => + return true if @editSession.hasMultipleCursors() + cursorBufferPosition = @editSession.getCursorBufferPosition() nextCharachter = @editSession.getTextInBufferRange([cursorBufferPosition, cursorBufferPosition.add([0, 1])])