From 7e405138fcfb1a97d7ab3d5c230aea0bfadb9741 Mon Sep 17 00:00:00 2001 From: probablycorey Date: Tue, 26 Mar 2013 16:44:46 -0700 Subject: [PATCH] Beep when only one matches is found by repeatRelativeAddress Closes #45 --- .../lib/command-interpreter.coffee | 4 +- .../spec/command-panel-spec.coffee | 72 +++++++++++++------ 2 files changed, 54 insertions(+), 22 deletions(-) diff --git a/src/packages/command-panel/lib/command-interpreter.coffee b/src/packages/command-panel/lib/command-interpreter.coffee index 78566c036..07f53672e 100644 --- a/src/packages/command-panel/lib/command-interpreter.coffee +++ b/src/packages/command-panel/lib/command-interpreter.coffee @@ -17,4 +17,6 @@ class CommandInterpreter previousSelectionRange = activeEditSession.getSelection().getBufferRange() address = if reverse then @lastRelativeAddress.reverse() else @lastRelativeAddress - address.execute(@project, activeEditSession) \ No newline at end of file + address.execute(@project, activeEditSession).done -> + currentSelectionRange = activeEditSession.getSelection().getBufferRange() + $native.beep() if previousSelectionRange.isEqual(currentSelectionRange) diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index 6cfb03bb0..cf86ae0b4 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -212,39 +212,69 @@ describe "CommandPanel", -> expect(commandPanel.miniEditor.hiddenInput).not.toMatchSelector ':focus' describe "when command-panel:repeat-relative-address is triggered on the root view", -> - it "repeats the last search command if there is one", -> - rootView.trigger 'command-panel:repeat-relative-address' + describe "when there is more than one match", -> + it "repeats the last search command if there is one", -> + rootView.trigger 'command-panel:repeat-relative-address' - editSession.setCursorScreenPosition([4, 0]) + editSession.setCursorScreenPosition([4, 0]) - commandPanel.execute("/current") - expect(editSession.getSelectedBufferRange()).toEqual [[5,6], [5,13]] + commandPanel.execute("/current") + expect(editSession.getSelectedBufferRange()).toEqual [[5,6], [5,13]] - rootView.trigger 'command-panel:repeat-relative-address' - expect(editSession.getSelectedBufferRange()).toEqual [[6,6], [6,13]] + rootView.trigger 'command-panel:repeat-relative-address' + expect(editSession.getSelectedBufferRange()).toEqual [[6,6], [6,13]] - commandPanel.execute('s/r/R/g') + commandPanel.execute('s/r/R/g') - rootView.trigger 'command-panel:repeat-relative-address' - expect(editSession.getSelectedBufferRange()).toEqual [[6,34], [6,41]] + rootView.trigger 'command-panel:repeat-relative-address' + expect(editSession.getSelectedBufferRange()).toEqual [[6,34], [6,41]] - commandPanel.execute('0') - commandPanel.execute('/sort/ s/r/R/') # this contains a substitution... won't be repeated + commandPanel.execute('0') + commandPanel.execute('/sort/ s/r/R/') # this contains a substitution... won't be repeated - rootView.trigger 'command-panel:repeat-relative-address' - expect(editSession.getSelectedBufferRange()).toEqual [[3,31], [3,38]] + rootView.trigger 'command-panel:repeat-relative-address' + expect(editSession.getSelectedBufferRange()).toEqual [[3,31], [3,38]] + + describe "when there is only one match and it is selected", -> + it "maintains the current selection and plays a beep", -> + editSession.setCursorScreenPosition([0, 0]) + waitsForPromise -> + commandPanel.execute("/Array") + runs -> + expect(editSession.getSelectedBufferRange()).toEqual [[11,14], [11,19]] + spyOn($native, 'beep') + rootView.trigger 'command-panel:repeat-relative-address' + waitsFor -> + $native.beep.callCount > 0 + runs -> + expect(editSession.getSelectedBufferRange()).toEqual [[11,14], [11,19]] describe "when command-panel:repeat-relative-address-in-reverse is triggered on the root view", -> - it "it repeats the last relative address in the reverse direction", -> - rootView.trigger 'command-panel:repeat-relative-address-in-reverse' + describe "when there is more than one match", -> + it "it repeats the last relative address in the reverse direction", -> + rootView.trigger 'command-panel:repeat-relative-address-in-reverse' - editSession.setCursorScreenPosition([6, 0]) + editSession.setCursorScreenPosition([6, 0]) - commandPanel.execute("/current") - expect(editSession.getSelectedBufferRange()).toEqual [[6,6], [6,13]] + commandPanel.execute("/current") + expect(editSession.getSelectedBufferRange()).toEqual [[6,6], [6,13]] - rootView.trigger 'command-panel:repeat-relative-address-in-reverse' - expect(editSession.getSelectedBufferRange()).toEqual [[5,6], [5,13]] + rootView.trigger 'command-panel:repeat-relative-address-in-reverse' + expect(editSession.getSelectedBufferRange()).toEqual [[5,6], [5,13]] + + describe "when there is only one match and it is selected", -> + it "maintains the current selection and plays a beep", -> + editSession.setCursorScreenPosition([0, 0]) + waitsForPromise -> + commandPanel.execute("/Array") + runs -> + expect(editSession.getSelectedBufferRange()).toEqual [[11,14], [11,19]] + spyOn($native, 'beep') + rootView.trigger 'command-panel:repeat-relative-address-in-reverse' + waitsFor -> + $native.beep.callCount > 0 + runs -> + expect(editSession.getSelectedBufferRange()).toEqual [[11,14], [11,19]] describe "when command-panel:set-selection-as-regex-address is triggered on the root view", -> it "sets the @lastRelativeAddress to a RegexAddress of the current selection", ->