From 910be149abd39c6b3f7af650ef8b0850a0182e81 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 27 Feb 2013 16:31:51 -0800 Subject: [PATCH] Show status icons in fuzzy finder --- .../fuzzy-finder/lib/fuzzy-finder-view.coffee | 37 ++++++++++++------- .../spec/fuzzy-finder-spec.coffee | 35 +++++++++++++++++- static/fuzzy-finder.css | 12 ++++++ 3 files changed, 70 insertions(+), 14 deletions(-) diff --git a/src/packages/fuzzy-finder/lib/fuzzy-finder-view.coffee b/src/packages/fuzzy-finder/lib/fuzzy-finder-view.coffee index 8b5c56e7e..32e663766 100644 --- a/src/packages/fuzzy-finder/lib/fuzzy-finder-view.coffee +++ b/src/packages/fuzzy-finder/lib/fuzzy-finder-view.coffee @@ -39,19 +39,30 @@ class FuzzyFinderView extends SelectList itemForElement: (path) -> $$ -> @li => - ext = fs.extension(path) - if fs.isReadmePath(path) - typeClass = 'readme-name' - else if fs.isCompressedExtension(ext) - typeClass = 'compressed-name' - else if fs.isImageExtension(ext) - typeClass = 'image-name' - else if fs.isPdfExtension(ext) - typeClass = 'pdf-name' - else if fs.isBinaryExtension(ext) - typeClass = 'binary-name' - else - typeClass = 'text-name' + typeClass = null + repo = project.repo + if repo? + status = project.repo?.statuses[project.resolve(path)] + if repo.isStatusNew(status) + typeClass = 'new' + else if repo.isStatusModified(status) + typeClass = 'modified' + + unless typeClass + ext = fs.extension(path) + if fs.isReadmePath(path) + typeClass = 'readme-name' + else if fs.isCompressedExtension(ext) + typeClass = 'compressed-name' + else if fs.isImageExtension(ext) + typeClass = 'image-name' + else if fs.isPdfExtension(ext) + typeClass = 'pdf-name' + else if fs.isBinaryExtension(ext) + typeClass = 'binary-name' + else + typeClass = 'text-name' + @span fs.base(path), class: "file label #{typeClass}" if folder = fs.directory(path) @span " - #{folder}/", class: 'directory' diff --git a/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee b/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee index 43d7065f1..a5eafb5b0 100644 --- a/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee +++ b/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee @@ -376,7 +376,6 @@ describe 'FuzzyFinder', -> runs -> expect(finderView.find('.error').text().length).toBeGreaterThan 0 - describe "opening a path into a split", -> beforeEach -> rootView.attachToDom() @@ -425,3 +424,37 @@ describe 'FuzzyFinder', -> expect(editor.splitUp).toHaveBeenCalled() expect(rootView.getActiveEditor()).not.toBe editor expect(rootView.getActiveEditor().getPath()).toBe editor.getPath() + + describe "git status decorations", -> + [originalText, originalPath, editor, newPath] = [] + + beforeEach -> + editor = rootView.getActiveEditor() + originalText = editor.getText() + originalPath = editor.getPath() + newPath = project.resolve('newsample.js') + fs.write(newPath, '') + + afterEach -> + fs.write(originalPath, originalText) + fs.remove(newPath) if fs.exists(newPath) + + describe "when a modified file is shown in the list", -> + it "displays the modified icon", -> + editor.setText('modified') + editor.save() + project.repo?.getPathStatus(editor.getPath()) + + rootView.trigger 'fuzzy-finder:toggle-buffer-finder' + expect(finderView.find('.file.modified').length).toBe 1 + expect(finderView.find('.file.modified').text()).toBe 'sample.js' + + + describe "when a new file is shown in the list", -> + it "displays the new icon", -> + rootView.open('newsample.js') + project.repo?.getPathStatus(editor.getPath()) + + rootView.trigger 'fuzzy-finder:toggle-buffer-finder' + expect(finderView.find('.file.new').length).toBe 1 + expect(finderView.find('.file.new').text()).toBe 'newsample.js' diff --git a/static/fuzzy-finder.css b/static/fuzzy-finder.css index 410269890..6d5b7d8d8 100644 --- a/static/fuzzy-finder.css +++ b/static/fuzzy-finder.css @@ -16,6 +16,18 @@ color: #9d9d9d; } +.fuzzy-finder .file.new:before { + position: relative; + top: 1px; + content: "\f06b"; +} + +.fuzzy-finder .file.modified:before { + position: relative; + top: 1px; + content: "\f06d"; +} + .fuzzy-finder .file.text-name:before { content: "\f011"; }