From 572b258547c9c0f4e109e15161e5510d415f2780 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 11 Jan 2013 09:11:03 -0800 Subject: [PATCH] Only open paths that are files that exist The filesystem may have changed while the fuzzy finder is open or since the last time the paths were loaded so don't try to open paths unless they are files that currently exist when confirmed. --- .../fuzzy-finder/spec/fuzzy-finder-spec.coffee | 12 ++++++++++++ src/packages/fuzzy-finder/src/fuzzy-finder.coffee | 8 ++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee b/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee index f11ecda55..4453b2602 100644 --- a/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee +++ b/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee @@ -86,6 +86,18 @@ describe 'FuzzyFinder', -> expect(editor2.getPath()).toBe expectedPath expect(editor2.isFocused).toBeTruthy() + describe "when the selected path isn't a file that exists", -> + it "leaves the the tree view open, doesn't open the path in the editor, and displays an error", -> + rootView.attachToDom() + path = rootView.getActiveEditor().getPath() + rootView.trigger 'fuzzy-finder:toggle-file-finder' + finder.confirmed('dir/this/is/not/a/file.txt') + expect(finder.hasParent()).toBeTruthy() + expect(rootView.getActiveEditor().getPath()).toBe path + expect(finder.find('.error').text().length).toBeGreaterThan 0 + advanceClock(2000) + expect(finder.find('.error').text().length).toBe 0 + describe "buffer-finder behavior", -> describe "toggling", -> describe "when the active editor contains edit sessions for buffers with paths", -> diff --git a/src/packages/fuzzy-finder/src/fuzzy-finder.coffee b/src/packages/fuzzy-finder/src/fuzzy-finder.coffee index 44dc4441e..bda99cb1d 100644 --- a/src/packages/fuzzy-finder/src/fuzzy-finder.coffee +++ b/src/packages/fuzzy-finder/src/fuzzy-finder.coffee @@ -65,8 +65,12 @@ class FuzzyFinder extends SelectList confirmed : (path) -> return unless path.length - @cancel() - @openPath(path) + if fs.isFile(rootView.project.resolve(path)) + @cancel() + @openPath(path) + else + @setError('Selected path does not exist') + setTimeout(=> @setError('')), 2000 cancelled: -> @miniEditor.setText('')