diff --git a/lib/suggestion-list-element.coffee b/lib/suggestion-list-element.coffee index 26756861..d90fa4a9 100644 --- a/lib/suggestion-list-element.coffee +++ b/lib/suggestion-list-element.coffee @@ -2,6 +2,7 @@ SnippetParser = require './snippet-parser' {isString} = require('./type-helpers') fuzzaldrinPlus = require 'fuzzaldrin-plus' +shell = require('electron').shell ItemTemplate = """ @@ -107,7 +108,9 @@ class SuggestionListElement extends HTMLElement @descriptionContent.textContent = item.description if item.descriptionMoreURL? and item.descriptionMoreURL.length? @descriptionMoreLink.style.display = 'inline' - @descriptionMoreLink.setAttribute('href', item.descriptionMoreURL) + @descriptionMoreLink.onclick = (event) -> + shell.openExternal(item.descriptionMoreURL) + event.stopPropagation() else @descriptionMoreLink.style.display = 'none' @descriptionMoreLink.setAttribute('href', '#') diff --git a/spec/provider-api-spec.coffee b/spec/provider-api-spec.coffee index 5147a133..caffe33a 100644 --- a/spec/provider-api-spec.coffee +++ b/spec/provider-api-spec.coffee @@ -1,4 +1,5 @@ {waitForAutocomplete, triggerAutocompletion} = require './spec-helper' +shell = require('electron').shell describe 'Provider API', -> [completionDelay, editor, mainModule, autocompleteManager, registration, testProvider] = [] @@ -16,6 +17,8 @@ describe 'Provider API', -> workspaceElement = atom.views.getView(atom.workspace) jasmine.attachToDOM(workspaceElement) + + spyOn(shell, "openExternal") # Activate the package waitsForPromise -> @@ -139,7 +142,29 @@ describe 'Provider API', -> expect(content).toHaveText('There be documentation') expect(moreLink).toHaveText('More..') expect(moreLink.style.display).toBe 'inline' - expect(moreLink.getAttribute('href')).toBe 'http://google.com' + expect(moreLink.onclick).toBeDefined() + + it 'correctly handles More link', -> + testProvider = + scopeSelector: '.source.js, .source.coffee' + getSuggestions: (options) -> + [ + text: 'ohai', + replacementPrefix: 'o', + rightLabelHTML: 'ohai', + description: 'There be documentation' + descriptionMoreURL: 'http://google.com' + ] + registration = atom.packages.serviceHub.provide('autocomplete.provider', '2.0.0', testProvider) + + triggerAutocompletion(editor, true, 'o') + + runs -> + suggestionListView = atom.views.getView(autocompleteManager.suggestionList) + moreLink = suggestionListView.querySelector('.suggestion-description-more-link') + expect(moreLink.onclick).toBeDefined() + moreLink.onclick(stopPropagation: ->) + expect(shell.openExternal).toHaveBeenCalledWith('http://google.com') describe "when the filterSuggestions option is set to true", -> getSuggestions = ->