From bacca42a107db28b064c949134a9ee5b426b897b Mon Sep 17 00:00:00 2001 From: ymaeda Date: Wed, 19 Nov 2008 11:14:29 +0000 Subject: Add keywordstore.js git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@24305 d0d07461-0603-4401-acd4-de1884942a52 --- keywordstore.js | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100755 keywordstore.js (limited to 'keywordstore.js') diff --git a/keywordstore.js b/keywordstore.js new file mode 100755 index 0000000..28bb9f3 --- /dev/null +++ b/keywordstore.js @@ -0,0 +1,83 @@ +/** + * ==VimperatorPlugin== + * @name KeywordStore.js + * @description Store the keywords when ":open" or ":tabopen" launched + * @author Y. Maeda (clouds.across.the.moon@gmail.com) + * @link + * @version 0.1 + * ==/VimperatorPlugin== + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Usage: + * :kssearch + * if is nothing, incremental search starts by last keyword on ":open" or ":tabopen". + * could be completed by using history of keywords which used on ":open" or ":tabopen". + * + * Tested on: + * Firefox version: 3.0.3 + * Vimperator version: 1.2 + * url: https://addons.mozilla.org/en-US/firefox/addon/4891 + */ +(function (){ +var queue = []; + +function push(strs){ + for(var i = strs.length-1; i >= 0; i--){ +// if((strs[i] != "") && !(queue.some(function(s){return s==strs[i]} ))){ + if(strs[i] != "" && queue[0] != strs[i]){ + queue.unshift(strs[i]); + } + } +} + +function search(str){ + str= str || queue[0]; + liberator.commandline.open("/", str, modes.SEARCH_FORWARD); +} + +function suggestions(str){ + return queue + .filter(function(i){return i.indexOf(str) == 0}) + .map(function(i){return [i, "Stored Keyword"]}); +} + +function completer(str){ + return [0, suggestions(str)]; +} + + +/* 元のwindow.getShortcutOrURIを退避しておく。*/ +if(!plugins["keywordStore"] || !plugins.keywordStore["__getShortcutOrURI"]){ + var __getShortcutOrURI = window.getShortcutOrURI +}else{ + var __getShortcutOrURI = plugins.keywordStore.__getShortcutOrURI +} + +/* ":open"等が呼ばれたときに、キーワードをキューに入れるようにwindow.getShortcutOrURIを置き換える */ +window.getShortcutOrURI=function(aURL, aPostDataRef){ + push(aURL.split(" ").slice(1)); + return __getShortcutOrURI(aURL, aPostDataRef); +}; + +/*** User Command ***/ +commands.addUserCommand(['kssearch'], 'KeywordStore search', + function(str){search(str)}, + {completer: completer}, true); + +/*** 外からも使えるように ***/ +liberator.plugins.keywordStore = { + push: push, + search: search, + suggestions: suggestions, + completer: completer, + queue: queue, + + /* 元のwindow.getShortcutOrURIの退避先 */ + __getShortcutOrURI: __getShortcutOrURI, +}; + +})(); -- cgit v1.2.3