From 0812667b837b2f61ff3f1b7785d4d16359a79dc8 Mon Sep 17 00:00:00 2001 From: Anton Khodakivskiy Date: Wed, 9 Jan 2013 07:56:16 +0200 Subject: [PATCH] Closes #43. and will behave more intelligently now. It will try to parse the contents of the Clipboard as a URL. In case of success it will just navigate to that URL. Othersiwe it will use the selected/default search provider to search for the string in the clipboard. --- extension/packages/commands.coffee | 18 +++++++++++++++--- extension/packages/utils.coffee | 21 +++++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/extension/packages/commands.coffee b/extension/packages/commands.coffee index 8baee76..45c411c 100644 --- a/extension/packages/commands.coffee +++ b/extension/packages/commands.coffee @@ -9,13 +9,25 @@ find = require 'find' # Navigate to the address that is currently stored in the system clipboard command_p = (vim) -> - vim.window.location.assign utils.readFromClipboard(vim.window) + url = utils.readFromClipboard(vim.window) + postData = null + if not utils.isURL(url) and submission = utils.browserSearchSubmission url + url = submission.uri.spec + postData = submission.postData + + if chromeWindow = utils.getRootWindow vim.window + chromeWindow.gBrowser.loadURIWithFlags url, null, null, null, postData # Open new tab and navigate to the address that is currently stored in the system clipboard command_P = (vim) -> + url = utils.readFromClipboard(vim.window) + postData = null + if not utils.isURL(url) and submission = utils.browserSearchSubmission url + url = submission.uri.spec + postData = submission.postData + if chromeWindow = utils.getRootWindow vim.window - if gBrowser = chromeWindow.gBrowser - gBrowser.selectedTab = gBrowser.addTab utils.readFromClipboard(vim.window) + chromeWindow.gBrowser.selectedTab = chromeWindow.gBrowser.addTab url, null, null, postData, null, false # Open new tab and focus the address bar command_t = (vim) -> diff --git a/extension/packages/utils.coffee b/extension/packages/utils.coffee index 1186e87..7e33225 100644 --- a/extension/packages/utils.coffee +++ b/extension/packages/utils.coffee @@ -209,6 +209,25 @@ parseHTML = (document, html) -> flags = parser.SanitizerAllowStyle return parser.parseFragment(html, flags, false, null, document.documentElement) +# Uses nsIIOService to parse a string as a URL and find out if it is a URL +isURL = (str) -> + try + url = Cc["@mozilla.org/network/io-service;1"] + .getService(Ci.nsIIOService) + .newURI(str, null, null) + .QueryInterface(Ci.nsIURL) + return true + catch err + return false + +# Use Firefox services to search for a given string +browserSearchSubmission = (str) -> + ss = Cc["@mozilla.org/browser/search-service;1"] + .getService(Ci.nsIBrowserSearchService) + + engine = ss.currentEngine or ss.defaultEngine + return engine.getSubmission(str, null) + regexpEscape = (s) -> return s and s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') exports.Bucket = Bucket @@ -232,4 +251,6 @@ exports.timeIt = timeIt exports.isBlacklisted = isBlacklisted exports.getVersion = getVersion exports.parseHTML = parseHTML +exports.isURL = isURL +exports.browserSearchSubmission = browserSearchSubmission exports.regexpEscape = regexpEscape -- 2.39.3