Skip to content

Commit f774ab1

Browse files
committed
Merge pull request atom#97 from tmunro/preference-search-all-panes
Add feature to search through all open panes instead of just active pane
2 parents dd0b952 + 4ce9ac3 commit f774ab1

File tree

4 files changed

+48
-8
lines changed

4 files changed

+48
-8
lines changed

keymaps/fuzzy-finder.cson

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,18 @@
33
'cmd-p': 'fuzzy-finder:toggle-file-finder'
44
'cmd-b': 'fuzzy-finder:toggle-buffer-finder'
55
'cmd-B': 'fuzzy-finder:toggle-git-status-finder'
6+
'shift-enter': 'fuzzy-finder:invert-confirm'
67

78
'.platform-win32':
89
'ctrl-t': 'fuzzy-finder:toggle-file-finder'
910
'ctrl-p': 'fuzzy-finder:toggle-file-finder'
1011
'ctrl-b': 'fuzzy-finder:toggle-buffer-finder'
1112
'ctrl-B': 'fuzzy-finder:toggle-git-status-finder'
13+
'shift-enter': 'fuzzy-finder:invert-confirm'
1214

1315
'.platform-linux':
1416
'ctrl-t': 'fuzzy-finder:toggle-file-finder'
1517
'ctrl-p': 'fuzzy-finder:toggle-file-finder'
1618
'ctrl-b': 'fuzzy-finder:toggle-buffer-finder'
1719
'ctrl-B': 'fuzzy-finder:toggle-git-status-finder'
20+
'shift-enter': 'fuzzy-finder:invert-confirm'

lib/fuzzy-finder-view.coffee

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ class FuzzyFinderView extends SelectListView
2424
@splitOpenPath (pane, item) -> pane.splitDown(items: [item])
2525
'pane:split-up': =>
2626
@splitOpenPath (pane, item) -> pane.splitUp(items: [item])
27+
'fuzzy-finder:invert-confirm': =>
28+
@confirmInvertedSelection()
2729

2830
getFilterKey: ->
2931
'projectRelativePath'
@@ -61,9 +63,9 @@ class FuzzyFinderView extends SelectListView
6163
@div fileBasename, class: "primary-line file icon #{typeClass}", 'data-name': fileBasename, 'data-path': projectRelativePath
6264
@div projectRelativePath, class: 'secondary-line path no-icon'
6365

64-
openPath: (filePath, lineNumber) ->
66+
openPath: (filePath, lineNumber, searchAllPanes) ->
6567
if filePath
66-
atom.workspace.open(filePath).done => @moveToLine(lineNumber)
68+
atom.workspace.open(filePath, searchAllPanes: searchAllPanes ).done => @moveToLine(lineNumber)
6769

6870
moveToLine: (lineNumber=-1) ->
6971
return unless lineNumber >= 0
@@ -100,9 +102,13 @@ class FuzzyFinderView extends SelectListView
100102

101103
confirmSelection: ->
102104
item = @getSelectedItem()
103-
@confirmed(item)
105+
@confirmed(item, atom.config.get 'fuzzy-finder.searchAllPanes')
104106

105-
confirmed: ({filePath}={}) ->
107+
confirmInvertedSelection: ->
108+
item = @getSelectedItem()
109+
@confirmed(item, !atom.config.get 'fuzzy-finder.searchAllPanes')
110+
111+
confirmed: ({filePath}={}, searchAllPanes) ->
106112
if atom.workspace.getActiveTextEditor() and @isQueryALineJump()
107113
lineNumber = @getLineNumber()
108114
@cancel()
@@ -115,7 +121,7 @@ class FuzzyFinderView extends SelectListView
115121
else
116122
lineNumber = @getLineNumber()
117123
@cancel()
118-
@openPath(filePath, lineNumber)
124+
@openPath(filePath, lineNumber, searchAllPanes)
119125

120126
isQueryALineJump: ->
121127
query = @filterEditorView.getModel().getText()

lib/main.coffee

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ module.exports =
33
ignoredNames:
44
type: 'array'
55
default: []
6+
searchAllPanes:
7+
description: "Whether to search through all open panes or just the active one. Holding shift inverts this setting."
8+
type: 'boolean'
9+
default: false
610

711
activate: (state) ->
812
@active = true

spec/fuzzy-finder-spec.coffee

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -418,8 +418,8 @@ describe 'FuzzyFinder', ->
418418
expect(editor3.getPath()).toBe expectedPath
419419
expect(atom.views.getView(editor3)).toHaveFocus()
420420

421-
describe "when the active pane does not have an item for the selected path", ->
422-
it "adds a new item to the active pane for the selcted path", ->
421+
describe "when the active pane does not have an item for the selected path and fuzzy-finder.searchAllPanes is false", ->
422+
it "adds a new item to the active pane for the selected path", ->
423423
dispatchCommand('toggle-buffer-finder')
424424

425425
atom.views.getView(editor1).focus()
@@ -429,7 +429,7 @@ describe 'FuzzyFinder', ->
429429
expect(atom.workspace.getActiveTextEditor()).toBe editor1
430430

431431
expectedPath = atom.project.getDirectories()[0].resolve('sample.txt')
432-
bufferView.confirmed({filePath: expectedPath})
432+
bufferView.confirmed({filePath: expectedPath}, atom.config.get 'fuzzy-finder.searchAllPanes')
433433

434434
waitsFor ->
435435
atom.workspace.getActivePane().getItems().length is 2
@@ -446,6 +446,33 @@ describe 'FuzzyFinder', ->
446446
expect(editor4.getPath()).toBe expectedPath
447447
expect(atom.views.getView(editor4)).toHaveFocus()
448448

449+
describe "when the active pane does not have an item for the selected path and fuzzy-finder.searchAllPanes is true", ->
450+
beforeEach ->
451+
atom.config.set("fuzzy-finder.searchAllPanes", true)
452+
453+
it "switches to the pane with the item for the selected path", ->
454+
dispatchCommand('toggle-buffer-finder')
455+
456+
atom.views.getView(editor1).focus()
457+
458+
dispatchCommand('toggle-buffer-finder')
459+
460+
expect(atom.workspace.getActiveTextEditor()).toBe editor1
461+
462+
originalPane = atom.workspace.getActivePane()
463+
464+
expectedPath = atom.project.getDirectories()[0].resolve('sample.txt')
465+
bufferView.confirmed({filePath: expectedPath}, atom.config.get 'fuzzy-finder.searchAllPanes')
466+
467+
waitsFor ->
468+
atom.workspace.getActiveTextEditor().getPath() is expectedPath
469+
470+
runs ->
471+
expect(atom.workspace.panelForItem(bufferView).isVisible()).toBe false
472+
expect(atom.workspace.getActivePane()).not.toBe originalPane
473+
expect(atom.workspace.getActiveTextEditor()).toBe editor3
474+
expect(atom.workspace.getPaneItems().length).toBe 3
475+
449476
describe "common behavior between file and buffer finder", ->
450477
describe "when the fuzzy finder is cancelled", ->
451478
describe "when an editor is open", ->

0 commit comments

Comments
 (0)