From fa505beaaffa7a6bc09813404a82ec1cac7614ac Mon Sep 17 00:00:00 2001 From: akameco Date: Mon, 6 Apr 2015 20:29:51 +0900 Subject: Add google-exopen.js --- google-exopen.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 google-exopen.js diff --git a/google-exopen.js b/google-exopen.js new file mode 100644 index 0000000..58596fd --- /dev/null +++ b/google-exopen.js @@ -0,0 +1,40 @@ +// INFO {{{ +let PLUGIN_INFO = xml` + +google-exopen +useful in google search +openを拡張し前回のGoogle検索クエリを入力済みにする +akameco +New BSD License +0.1 +`; +// }}} + +(function () { + mappings.addUserMap( + [modes.NORMAL],['o'],':open', + function() { + // urlを取得 + var url = window.content.window.location; + // コマンドの引数 + var commandPram = ''; + // google検索か判定 + if(url.host === 'www.google.co.jp') { + // クエリ部の抜き出し + var q = decodeURI(url.href).match(/q=(.*?)&/); + // foo+bar+hogeの形で取得されるので'+'を' 'で置き換え + var commandPram = q[1].replace(/\+/g,' '); + } + // コマンドの生成 + var command = 'open ' + commandPram; + commandline.open('', + commands.commandToString( + { + command: command + } + ),modes.EX); + } + ); +})(); + +// vim:sw=2 ts=2 et si fdm=marker: -- cgit v1.2.3 From 2e1dd53e9e8e0d6d422dad781ce3f1f22eda6dde Mon Sep 17 00:00:00 2001 From: anekos Date: Mon, 20 Apr 2015 22:26:48 +0900 Subject: 末尾の空白を削除 --- google-exopen.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-exopen.js b/google-exopen.js index 58596fd..543bdf3 100644 --- a/google-exopen.js +++ b/google-exopen.js @@ -13,7 +13,7 @@ let PLUGIN_INFO = xml` (function () { mappings.addUserMap( [modes.NORMAL],['o'],':open', - function() { + function() { // urlを取得 var url = window.content.window.location; // コマンドの引数 -- cgit v1.2.3 From 9ef5e617d2bce18ebc90ba394c2b0f223a044842 Mon Sep 17 00:00:00 2001 From: anekos Date: Mon, 20 Apr 2015 22:39:39 +0900 Subject: オリジナルのアクションを使う --- google-exopen.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/google-exopen.js b/google-exopen.js index 543bdf3..bb345b5 100644 --- a/google-exopen.js +++ b/google-exopen.js @@ -11,20 +11,24 @@ let PLUGIN_INFO = xml` // }}} (function () { + let original = mappings.getDefault(modes.NORMAL, 'o'); + mappings.addUserMap( [modes.NORMAL],['o'],':open', function() { // urlを取得 var url = window.content.window.location; - // コマンドの引数 - var commandPram = ''; // google検索か判定 - if(url.host === 'www.google.co.jp') { - // クエリ部の抜き出し - var q = decodeURI(url.href).match(/q=(.*?)&/); - // foo+bar+hogeの形で取得されるので'+'を' 'で置き換え - var commandPram = q[1].replace(/\+/g,' '); + if(url.host !== 'www.google.co.jp') { + return original.action.apply(this, arguments); } + + // クエリ部の抜き出し + var q = decodeURI(url.href).match(/q=(.*?)&/); + // コマンドの引数 + // foo+bar+hogeの形で取得されるので'+'を' 'で置き換え + var commandPram = q[1].replace(/\+/g,' '); + // コマンドの生成 var command = 'open ' + commandPram; commandline.open('', -- cgit v1.2.3 From 0d14f1360cafc44f0ac92b7f039f845cc2c00c70 Mon Sep 17 00:00:00 2001 From: anekos Date: Mon, 20 Apr 2015 22:40:14 +0900 Subject: 正規表現パターンを少し厳密に --- google-exopen.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-exopen.js b/google-exopen.js index bb345b5..4c1644a 100644 --- a/google-exopen.js +++ b/google-exopen.js @@ -24,7 +24,7 @@ let PLUGIN_INFO = xml` } // クエリ部の抜き出し - var q = decodeURI(url.href).match(/q=(.*?)&/); + var q = decodeURI(url.href).match(/[?&]q=(.*?)&/); // コマンドの引数 // foo+bar+hogeの形で取得されるので'+'を' 'で置き換え var commandPram = q[1].replace(/\+/g,' '); -- cgit v1.2.3 From dc4effb65781e11cd48835f3b3f2c357c1367737 Mon Sep 17 00:00:00 2001 From: anekos Date: Mon, 20 Apr 2015 22:41:55 +0900 Subject: デコード結果に q= などが含まると期待しない動作になるのを修正 --- google-exopen.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/google-exopen.js b/google-exopen.js index 4c1644a..b2436b2 100644 --- a/google-exopen.js +++ b/google-exopen.js @@ -24,10 +24,10 @@ let PLUGIN_INFO = xml` } // クエリ部の抜き出し - var q = decodeURI(url.href).match(/[?&]q=(.*?)&/); + var q = url.href.match(/[?&]q=(.*?)&/); // コマンドの引数 // foo+bar+hogeの形で取得されるので'+'を' 'で置き換え - var commandPram = q[1].replace(/\+/g,' '); + var commandPram = decodeURIComponent(q[1]).replace(/\+/g,' '); // コマンドの生成 var command = 'open ' + commandPram; -- cgit v1.2.3