From 56d92fe0295826c873fc2e5c3cac5126ed45bb65 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 28 Feb 2013 11:25:02 -0800 Subject: [PATCH 1/4] Hide/show loading message instead of toggling --- src/packages/command-panel/lib/command-panel-view.coffee | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/packages/command-panel/lib/command-panel-view.coffee b/src/packages/command-panel/lib/command-panel-view.coffee index fae00dfe0..3ede83809 100644 --- a/src/packages/command-panel/lib/command-panel-view.coffee +++ b/src/packages/command-panel/lib/command-panel-view.coffee @@ -88,9 +88,6 @@ class CommandPanelView extends View else @miniEditor.focus() - toggleLoading: -> - @loadingMessage.toggle() - onExpandAll: (event) => @previewList.expandAllPaths() @previewList.focus() @@ -119,12 +116,12 @@ class CommandPanelView extends View @miniEditor.getText() execute: (command=@escapedCommand())-> - @toggleLoading() + @loadingMessage.show() @errorMessages.empty() try @commandInterpreter.eval(command, rootView.getActiveEditSession()).done ({operationsToPreview, errorMessages}) => - @toggleLoading() + @loadingMessage.hide() @history.push(command) @historyIndex = @history.length From 1b717966981d6942a7b3ca0ff24bd5139f51c0bb Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 28 Feb 2013 14:49:30 -0800 Subject: [PATCH 2/4] Check for escaped backslashes in tag patterns Previously readtags.c was not checking if the end pattern / was preceded by an escaped \ which would cause segmentation faults for patterns that ended with an escaped \. --- native/v8_extensions/readtags.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/native/v8_extensions/readtags.c b/native/v8_extensions/readtags.c index 25c811c27..c671821cb 100644 --- a/native/v8_extensions/readtags.c +++ b/native/v8_extensions/readtags.c @@ -321,7 +321,18 @@ static void parseTagLine (tagFile *file, tagEntry *const entry) do { p = strchr (p + 1, delimiter); - } while (p != NULL && *(p - 1) == '\\'); + if (p == NULL) + break; + if (*(p - 1) != '\\') + break; + // Make sure preceeding backslas isn't an escaped backslash by + // advancing backwards and counting the number of backslashes + int slashCount = 1; + while (*(p - slashCount - 1) == '\\') + slashCount++; + if (slashCount % 2 == 0) + break; + } while (1); if (p == NULL) { /* invalid pattern */ From 35ca8a42a115926a5a3975367043abb562cf62c2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 28 Feb 2013 15:06:48 -0800 Subject: [PATCH 3/4] Display error when symbol's file does not exist --- .../symbols-view/lib/symbols-view.coffee | 8 ++++-- .../spec/symbols-view-spec.coffee | 26 +++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/packages/symbols-view/lib/symbols-view.coffee b/src/packages/symbols-view/lib/symbols-view.coffee index 58149f9f4..fb87d78de 100644 --- a/src/packages/symbols-view/lib/symbols-view.coffee +++ b/src/packages/symbols-view/lib/symbols-view.coffee @@ -77,8 +77,12 @@ class SymbolsView extends SelectList setTimeout (=> @cancel()), 2000 confirmed : (tag) -> - @cancel() - @openTag(tag) + if tag.file and not fs.isFile(project.resolve(tag.file)) + @setError('Selected file does not exist') + setTimeout((=> @setError()), 2000) + else + @cancel() + @openTag(tag) openTag: (tag) -> position = tag.position diff --git a/src/packages/symbols-view/spec/symbols-view-spec.coffee b/src/packages/symbols-view/spec/symbols-view-spec.coffee index 6566e8b59..dcc5c5556 100644 --- a/src/packages/symbols-view/spec/symbols-view-spec.coffee +++ b/src/packages/symbols-view/spec/symbols-view-spec.coffee @@ -201,3 +201,29 @@ describe "SymbolsView", -> expect(symbolsView.list.children('li:last').find('.function-details')).toHaveText 'tagged.js' expect(symbolsView).not.toHaveClass "error" expect(symbolsView.error).not.toBeVisible() + + describe "when selecting a tag", -> + describe "when the file doesn't exist", -> + renamedPath = null + + beforeEach -> + renamedPath = project.resolve("tagged-renamed.js") + fs.remove(renamedPath) if fs.exists(renamedPath) + fs.move(project.resolve("tagged.js"), renamedPath) + + afterEach -> + fs.move(renamedPath, project.resolve("tagged.js")) + + it "doesn't open the editor", -> + rootView.trigger "symbols-view:toggle-project-symbols" + symbolsView = rootView.find('.symbols-view').view() + + waitsFor -> + setArraySpy.callCount > 0 + + runs -> + spyOn(rootView, 'open').andCallThrough() + symbolsView.list.children('li:first').mousedown().mouseup() + expect(rootView.open).not.toHaveBeenCalled() + expect(symbolsView.error.text().length).toBeGreaterThan 0 + expect(symbolsView).toHaveClass "error" From e36a3c18fb3e6c8a9bfbbfc32cfda69b02a98c75 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 28 Feb 2013 15:15:09 -0800 Subject: [PATCH 4/4] Remove .coffee extension from package main --- src/packages/spell-check/package.cson | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/packages/spell-check/package.cson b/src/packages/spell-check/package.cson index 1405d4cd7..90fa8056c 100644 --- a/src/packages/spell-check/package.cson +++ b/src/packages/spell-check/package.cson @@ -1 +1 @@ -'main': 'lib/spell-check.coffee' +'main': 'lib/spell-check'