From 4c773439d28e23c740aff3785d1258e949f297ec Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 28 Feb 2013 12:25:55 -0800 Subject: [PATCH] Bind meta-T to display modified/untracked files --- .../fuzzy-finder/keymaps/fuzzy-finder.cson | 1 + .../fuzzy-finder/lib/fuzzy-finder-view.coffee | 16 +++++++++++ .../fuzzy-finder/lib/fuzzy-finder.coffee | 2 ++ .../spec/fuzzy-finder-spec.coffee | 28 +++++++++++++++++++ 4 files changed, 47 insertions(+) diff --git a/src/packages/fuzzy-finder/keymaps/fuzzy-finder.cson b/src/packages/fuzzy-finder/keymaps/fuzzy-finder.cson index c4267c9e2..97c3e01b3 100644 --- a/src/packages/fuzzy-finder/keymaps/fuzzy-finder.cson +++ b/src/packages/fuzzy-finder/keymaps/fuzzy-finder.cson @@ -2,3 +2,4 @@ 'meta-t': 'fuzzy-finder:toggle-file-finder' 'meta-b': 'fuzzy-finder:toggle-buffer-finder' 'ctrl-.': 'fuzzy-finder:find-under-cursor' + 'meta-T': 'fuzzy-finder:toggle-git-status-finder' diff --git a/src/packages/fuzzy-finder/lib/fuzzy-finder-view.coffee b/src/packages/fuzzy-finder/lib/fuzzy-finder-view.coffee index 43d6f6b36..3eddc0c8e 100644 --- a/src/packages/fuzzy-finder/lib/fuzzy-finder-view.coffee +++ b/src/packages/fuzzy-finder/lib/fuzzy-finder-view.coffee @@ -103,6 +103,15 @@ class FuzzyFinderView extends SelectList @populateOpenBufferPaths() @attach() if @paths?.length + toggleGitFinder: -> + if @hasParent() + @cancel() + else + return unless project.getPath()? and git? + @allowActiveEditorChange = false + @populateGitStatusPaths() + @attach() + findUnderCursor: -> if @hasParent() @cancel() @@ -126,6 +135,13 @@ class FuzzyFinderView extends SelectList @attach() @miniEditor.setText(currentWord) + populateGitStatusPaths: -> + projectRelativePaths = [] + for path, status of git.statuses + continue unless fs.isFile(path) + projectRelativePaths.push(project.relativize(path)) + @setArray(projectRelativePaths) + populateProjectPaths: (options = {}) -> if @projectPaths?.length > 0 listedItems = diff --git a/src/packages/fuzzy-finder/lib/fuzzy-finder.coffee b/src/packages/fuzzy-finder/lib/fuzzy-finder.coffee index a3de8b204..c6fbe92aa 100644 --- a/src/packages/fuzzy-finder/lib/fuzzy-finder.coffee +++ b/src/packages/fuzzy-finder/lib/fuzzy-finder.coffee @@ -12,6 +12,8 @@ module.exports = @createView().toggleBufferFinder() rootView.command 'fuzzy-finder:find-under-cursor', => @createView().findUnderCursor() + rootView.command 'fuzzy-finder:toggle-git-status-finder', => + @createView().toggleGitFinder() if project.getPath()? LoadPathsTask = require 'fuzzy-finder/lib/load-paths-task' diff --git a/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee b/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee index 304fe5c7f..f322d4613 100644 --- a/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee +++ b/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee @@ -215,6 +215,34 @@ describe 'FuzzyFinder', -> expect(editor2.getPath()).toBe expectedPath expect(editor2.isFocused).toBeTruthy() + describe "git-status-finder behavior", -> + [originalText, originalPath, newPath] = [] + + beforeEach -> + editor = rootView.getActiveEditor() + originalText = editor.getText() + originalPath = editor.getPath() + fs.write(originalPath, 'making a change for the better') + git.getPathStatus(originalPath) + + newPath = project.resolve('newsample.js') + fs.write(newPath, '') + git.getPathStatus(newPath) + + afterEach -> + fs.write(originalPath, originalText) + fs.remove(newPath) if fs.exists(newPath) + + it "displays all new and modified paths", -> + expect(rootView.find('.fuzzy-finder')).not.toExist() + rootView.trigger 'fuzzy-finder:toggle-git-status-finder' + expect(rootView.find('.fuzzy-finder')).toExist() + + expect(finderView.find('.file').length).toBe 2 + + expect(finderView.find('.status.modified').length).toBe 1 + expect(finderView.find('.status.new').length).toBe 1 + describe "common behavior between file and buffer finder", -> describe "when the fuzzy finder is cancelled", -> describe "when an editor is open", ->