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 = ->