aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsuVene2009-01-18 15:10:40 +0000
committersuVene2009-01-18 15:10:40 +0000
commitb68cf69f122a4fb019700006f3a9bf502eeba970 (patch)
tree67ba19b8689fdfdd8499e279ec81cb2874e08838
parent736914648db0555c3d3db7eba751769ebc97b369 (diff)
downloadvimperator-plugins-b68cf69f122a4fb019700006f3a9bf502eeba970.tar.bz2
* complete の補完順を選択できるように変更(default date desc)
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@28624 d0d07461-0603-4401-acd4-de1884942a52
-rw-r--r--multi_requester.js51
1 files changed, 42 insertions, 9 deletions
diff --git a/multi_requester.js b/multi_requester.js
index 89588c9..136b09e 100644
--- a/multi_requester.js
+++ b/multi_requester.js
@@ -11,7 +11,7 @@ var PLUGIN_INFO =
<description>request, and the result is displayed to the buffer.</description>
<description lang="ja">リクエストの結果をバッファに出力する。</description>
<author mail="suvene@zeromemory.info" homepage="http://zeromemory.sblo.jp/">suVene</author>
- <version>0.4.11</version>
+ <version>0.4.12</version>
<license>MIT</license>
<minVersion>2.0pre</minVersion>
<maxVersion>2.0pre</maxVersion>
@@ -58,13 +58,13 @@ liberator.globalVariables.multi_requester_siteinfo = [
bang: true, // optional:
args: "any" // optional:
name: "ex", // required: subcommand name
- description: "example", // required: commandline short help
+ description: "example", // required: commandline short help
url: "http://example.com/?%s", // required: %s <-- replace string
xpath: "//*", // optional: default all
- srcEncode: "SHIFT_JIS", // optional: default UTF-8
- urlEncode: "SHIFT_JIS", // optional: default srcEncode
+ srcEncode: "SHIFT_JIS", // optional: default UTF-8
+ urlEncode: "SHIFT_JIS", // optional: default srcEncode
ignoreTags: "img", // optional: default script, syntax "tag1,tag2,……"
- extractLink: "//xpath" // optional: extract permalink
+ extractLink: "//xpath" // optional: extract permalink
},
];
EOM
@@ -89,6 +89,16 @@ EOM
>||
let g:multi_requester_use_wedata = "false" // true by default
||<
+wedata を利用しない場合は false を設定してください。
+>||
+let g:multi_requester_default_sites = 'alc';
+||<
+subcommand を省略した場合に利用されるサイトを設定します。
+>||
+let g:multi_requester_order = 'count'; // date by default
+||<
+補完の順番を設定します。(大きい順に並びます)
+"count" または "date" を設定してください。
]]></detail>
</VimperatorPlugin>;
@@ -121,6 +131,7 @@ var libly = liberator.plugins.libly;
var $U = libly.$U;
var logger = $U.getLogger("multi_requester");
var mergedSiteinfo = {};
+var store = storage.newMap('plugins-multi_requester', true);
//}}}
// Vimperator plugin command register {{{
@@ -135,10 +146,15 @@ var CommandRegister = {
{
completer: cmdClass.cmdCompleter || function(context, arg) {
context.title = [ "Name", "Descprition" ];
+ var sorted = siteinfo.sort(function(a, b)
+ typeof liberator.globalVariables.multi_requester_order == "undefined" ||
+ liberator.globalVariables.multi_requester_order == "date" ? store.get(b.name).lastPostTime - store.get(a.name).lastPostTime :
+ liberator.globalVariables.multi_requester_order == "count" ? store.get(b.name).count - store.get(a.name).count :
+ store.get(b.name).lastPostTime - store.get(a.name).lastPostTime);
var filters = context.filter.split(",");
var prefilters = filters.slice(0, filters.length - 1);
var prefilter = !prefilters.length ? "" : prefilters.join(",") + ",";
- var subfilters = siteinfo.filter(function(s) prefilters.every(function(p) s.name != p));
+ var subfilters = sorted.filter(function(s) prefilters.every(function(p) s.name != p));
var allSuggestions = subfilters.map(function(s) [prefilter + s.name, s.description]);
context.completions = context.filter
? allSuggestions.filter(function(s) s[0].indexOf(context.filter) == 0)
@@ -206,6 +222,10 @@ var DataAccess = {
liberator.globalVariables.multi_requester_siteinfo.forEach(function(site) {
if (!mergedSiteinfo[site.name]) mergedSiteinfo[site.name] = {};
$U.extend(mergedSiteinfo[site.name], site);
+ if (!store.get(site.name)) {
+ store.set(site.name, { count: 0, lastPostTime: (new Date()).getTime() });
+ store.save();
+ }
if (site.map) {
CommandRegister.addUserMaps(MultiRequester.name[0],
[[ site.map, site.name, site.bang, site.args ]]);
@@ -216,6 +236,10 @@ var DataAccess = {
SITEINFO.forEach(function(site) {
if (!mergedSiteinfo[site.name]) mergedSiteinfo[site.name] = {};
$U.extend(mergedSiteinfo[site.name], site);
+ if (!store.get(site.name)) {
+ store.set(site.name, { count: 0, lastPostTime: (new Date()).getTime() });
+ store.save();
+ }
if (site.map) {
CommandRegister.addUserMaps(MultiRequester.name[0],
[[ site.map, site.name, site.bang, site.args ]]);
@@ -231,6 +255,10 @@ var DataAccess = {
if (mergedSiteinfo[site.name]) return;
mergedSiteinfo[site.name] = {};
$U.extend(mergedSiteinfo[site.name], site);
+ if (!store.get(site.name)) {
+ store.set(site.name, { count: 0, lastPostTime: (new Date()).getTime() });
+ store.save();
+ }
},
function(isSuccess, data) {
if (!isSuccess) return;
@@ -273,7 +301,12 @@ var MultiRequester = {
let info = siteinfo[i];
let name = info.name;
- logger.log(name);
+ let history = store.get(name);
+ history.count++;
+ history.lastPostTime = (new Date()).getTime();
+ store.set(name, history);
+ store.save();
+
let url = info.url;
// see: http://fifnel.com/2008/11/14/1980/
let srcEncode = info.srcEncode || "UTF-8";
@@ -398,7 +431,7 @@ var MultiRequester = {
extractLink = res.req.options.siteinfo.extractLink;
if (extractLink && !res.req.options.extractLink) {
- this.extractLink(res, extractLink);
+ this.extractLink(res, extractLink).getCommand();
return;
}
ignoreTags = [ "script" ].concat(libly.$U.A(res.req.options.siteinfo.ignoreTags));
@@ -462,5 +495,5 @@ if (liberator.globalVariables.multi_requester_mappings) {
return MultiRequester;
})();
-// vim: set fdm=marker sw=4 ts=4 sts=0 et:
+// vim: set fdm=marker sw=2 ts=2 sts=0 et: