aboutsummaryrefslogtreecommitdiffstats
path: root/speeddial.js
blob: 7c7a134898ccd3d13a966c461a1ba44089b1a81a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Vimperator plugin: "SpeedDial"
// Last Change: 22-Oct-2008. Jan 2008
// License: Creative Commons
// Maintainer: mattn <mattn.jp@gmail.com> - http://mattn.kaoriya.net/
//
// Commands:
//  :sd 1
//      open url registered as 1 in current tab.
//  :sd! 1
//      open url registered as 1 in new tab.
// Note:
//  you can able to complete urls with tab key.

(function() {
    const pref = Components.classes["@mozilla.org/preferences;1"].getService(Components.interfaces.nsIPrefBranch);
    var nsISupportsString = Components.interfaces.nsISupportsWString ||
                            Components.interfaces.nsISupportsString;
    liberator.modules.commands.addUserCommand(["sd", "speeddial"], "speeddial",
        function(arg, special){
            arg = arg.string;
            if (arg.match(/^[0-9]+$/))
                arg = pref.getComplexValue("extensions.speeddial.thumbnail-" + arg + "-url", nsISupportsString).data;
            else
            if (arg.length == 0)
                arg = "chrome://speeddial/content/speeddial.xul";
            liberator.open(arg, special ? liberator.NEW_TAB : liberator.CURRENT_TAB);
        }, {
            completer: function(filter) {
                candidates = [];
                for (var n = 1; n <= 9; n++) {
                    var url = pref.getComplexValue("extensions.speeddial.thumbnail-" + n + "-url", nsISupportsString).data;
                    var label = pref.getComplexValue("extensions.speeddial.thumbnail-" + n + "-label", nsISupportsString).data;
                    if (url && label) candidates.push([url, n + ":" + label]);
                }
                return [0,candidates];
            }
        }
    );
})();
// vim:sw=4 ts=4 et:
ss="o">: function(filter) { var complist = []; complist.push([buf.URL, 'Raw URL: ' + buf.title]); if (useNormalizelink) { complist.push([getNormalizedPermalink(buf.URL), 'Normalized URL: ' + buf.title]); } // detect rel="bookmark" var elem; var relb = buf.evaluateXPath( '//*[contains(concat(" ", normalize-space(@rel), " "), " bookmark ")]', null, null, true); while ((elem = relb.iterateNext()) !== null) { complist.push([elem.toString(), '@rel="bookmark" URL: ' + elem]); } return [0, complist]; } }); liberator.modules.mappings .addUserMap([liberator.modules.modes.NORMAL], ['<C-p>'], 'Post to Pukka', function() { var urlarg = liberator.globalVariables.pukka_normalizelink ? getNormalizedPermalink(buf.URL) : buf.URL; liberator.modules.commandline .open(':', 'pukka ' + urlarg, modes.EX); }, {}); // copied from Trapezoid's direct_hb.js function getNormalizedPermalink(url) { var xhr = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"] .createInstance(Components.interfaces.nsIXMLHttpRequest); xhr.open('GET', 'http://api.pathtraq.com/normalize_url2?api=json;url=' + encodeURIComponent(url), false); xhr.send(null); if (xhr.status != 200) { liberator.echoerr('Pathtraq: FAILED to normalize URL!!'); return url; } return window.eval('(' + xhr.responseText + ')'); //return xhr.responseText.substring(1, xhr.responseText.length - 1); //api=xml;return xhr.responseXML.documentElement.getElementsByTagName('url').item(0).childNodes.item(0).nodeValue; } })();