diff --git a/lib/fuzzy-finder-view.coffee b/lib/fuzzy-finder-view.coffee index ca410263..23844f0b 100644 --- a/lib/fuzzy-finder-view.coffee +++ b/lib/fuzzy-finder-view.coffee @@ -30,6 +30,16 @@ class FuzzyFinderView extends SelectListView getFilterKey: -> 'projectRelativePath' + cancel: -> + if atom.config.get('fuzzy-finder.preserveLastSearch') + lastSearch = @getFilterQuery() + super + + @filterEditorView.setText(lastSearch) + @filterEditorView.getModel().selectAll() + else + super + destroy: -> @cancel() @panel?.destroy() diff --git a/lib/main.coffee b/lib/main.coffee index 0a9c38a8..000de38b 100644 --- a/lib/main.coffee +++ b/lib/main.coffee @@ -7,6 +7,9 @@ module.exports = description: "Whether to search through all open panes or just the active one. Holding shift inverts this setting." type: 'boolean' default: false + preserveLastSearch: + type: 'boolean' + default: false activate: (state) -> @active = true diff --git a/spec/fuzzy-finder-spec.coffee b/spec/fuzzy-finder-spec.coffee index 3e4a9c22..5ce8470d 100644 --- a/spec/fuzzy-finder-spec.coffee +++ b/spec/fuzzy-finder-spec.coffee @@ -752,6 +752,33 @@ describe 'FuzzyFinder', -> expect(atom.workspace.getActiveTextEditor().getPath()).toBe editor1.getPath() expect(atom.workspace.getActiveTextEditor().getCursorBufferPosition()).toEqual [3, 4] + describe "Preserve last search", -> + it "does not preserve last search by default", -> + dispatchCommand('toggle-file-finder') + expect(atom.workspace.panelForItem(projectView).isVisible()).toBe true + projectView.filterEditorView.getModel().insertText('this should not show up next time we open finder') + + dispatchCommand('toggle-file-finder') + expect(atom.workspace.panelForItem(projectView).isVisible()).toBe false + + dispatchCommand('toggle-file-finder') + expect(atom.workspace.panelForItem(projectView).isVisible()).toBe true + expect(projectView.filterEditorView.getText()).toBe '' + + it "preserves last search when config is set", -> + atom.config.set("fuzzy-finder.preserveLastSearch", true) + + dispatchCommand('toggle-file-finder') + expect(atom.workspace.panelForItem(projectView).isVisible()).toBe true + projectView.filterEditorView.getModel().insertText('this should show up next time we open finder') + + dispatchCommand('toggle-file-finder') + expect(atom.workspace.panelForItem(projectView).isVisible()).toBe false + + dispatchCommand('toggle-file-finder') + expect(atom.workspace.panelForItem(projectView).isVisible()).toBe true + expect(projectView.filterEditorView.getText()).toBe 'this should show up next time we open finder' + describe "Git integration", -> [projectPath, gitRepository, gitDirectory] = []