From 5b229fa79fa331ac0fc66febe273b3daf3f33ac7 Mon Sep 17 00:00:00 2001 From: anekos Date: Tue, 17 Aug 2010 11:59:08 +0000 Subject: 補完周りを整理。必要な補完には自分のツイーツもいれるように。 git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@38294 d0d07461-0603-4401-acd4-de1884942a52 --- twittperator.js | 68 ++++++++++++++++++++++++++------------------------------- 1 file changed, 31 insertions(+), 37 deletions(-) diff --git a/twittperator.js b/twittperator.js index a5ab41c..a4f94eb 100755 --- a/twittperator.js +++ b/twittperator.js @@ -28,7 +28,7 @@ let PLUGIN_INFO = twittperator Twitter Client using ChirpStream OAuth対応Twitterクライアント - 1.1.4 + 1.1.5 2.3 2.4 teramako @@ -1614,38 +1614,32 @@ let PLUGIN_INFO = }; // }}} function setup() { // {{{ - function rt(func) // {{{ - function(status) - let (s = ("retweeted_status" in status) ? status.retweeted_status : status) - func(s); // }}} - - function rejectMine(statuses) + function rejectMine(st) let (n = setting.screenName) - (n ? statuses.filter(function(st) (!st.user || st.user.screen_name !== n)) : statuses); + (n ? (!st.user || st.user.screen_name !== n) : st); + const Completers = (function() { // {{{ + function rt(st) + ("retweeted_status" in st ? st.retweeted_status : st); - const Completers = { // {{{ - name: function(context, args) { - context.completions = - rejectMine(history).map(rt(function(s) ["@" + s.user.screen_name, s])); - }, - link: function(context, args) { - context.completions = - rejectMine(history).map(rt(function(s) [s.text, s])).filter(function([t]) /https?:\/\//(t)); - }, - text: function(context, args) { - context.completions = - rejectMine(history).map(rt(function(s) [s.text, s])); - }, - name_id: function(context, args) { - context.completions = - rejectMine(history).map(rt(function(s) ["@" + s.user.screen_name + "#" + s.id, s])); - }, - name_id_text: function(context, args) { - context.completions = - rejectMine(history).map(rt(function(s) ["@" + s.user.screen_name + "#" + s.id + ": " + s.text, s])); - } - }; // }}} + function completer(generator) + function(filter) + (filter ? function(context, args) + context.completions = history.map(rt).filter(filter).map(generator) + : function(context, args) + context.completions = history.map(rt).map(generator)); + + return { + name: + completer(function(s) ["@" + s.user.screen_name, s]), + text: + completer(function(s) [s.text, s]), + name_id: + completer(function(s) ["@" + s.user.screen_name + "#" + s.id, s]), + name_id_text: + completer(function(s) ["@" + s.user.screen_name + "#" + s.id + ": " + s.text, s]), + }; + })(); // }}} const SubCommand = function(init) { return { @@ -1673,7 +1667,7 @@ let PLUGIN_INFO = if (m) Twitter.favorite(m[1]); }, - completer: Completers.name_id_text + completer: Completers.name_id_text(rejectMine) }), SubCommand({ command: ["-"], @@ -1683,7 +1677,7 @@ let PLUGIN_INFO = if (m) Twitter.unfavorite(m[1]); }, - completer: Completers.name_id_text + completer: Completers.name_id_text(rejectMine) }), SubCommand({ command: ["@"], @@ -1695,19 +1689,19 @@ let PLUGIN_INFO = Twittperator.showTwitterMentions(); } }, - completer: Completers.name + completer: Completers.name() }), SubCommand({ command: ["?"], description: "Twitter search", action: function(arg) Twittperator.showTwitterSearchResult(arg), - completer: Completers.text + completer: Completers.text() }), SubCommand({ command: ["/"], description: "Open link", action: function(arg) Twittperator.openLink(arg), - completer: Completers.link + completer: Completers.text(function(s) /https?:\/\//(s.text)) }) ]; // }}} @@ -1768,9 +1762,9 @@ let PLUGIN_INFO = } else { let m; if (m = args.literalArg.match(/(RT\s+)@.*$/)) { - Completers.name_id_text(context, args); + Completers.name_id_text(m.index === 0 && rejectMine)(context, args); } else if (m = tailMatch(/(^|\b|\s)@[^@]*/, args.literalArg)) { - (m.index === 0 ? Completers.name_id : Completers.name)(context, args); + (m.index === 0 ? Completers.name_id(rejectMine) : Completers.name(rejectMine))(context, args); } if (m) -- cgit v1.2.3