page-modes: whitespace
[conkeror.git] / modules / page-modes / duckduckgo.js
blob06ce3029d6d9a45f29e9387d27230b1ee736379e
1 /**
2  * (C) Copyright 2012 John J. Foerch
3  *
4  * Use, modification, and distribution are subject to the terms specified in the
5  * COPYING file.
6 **/
8 in_module(null);
10 require("content-buffer.js");
12 define_keymap("duckduckgo_keymap", $display_name = "duckduckgo");
13 define_keymap("duckduckgo_anchor_keymap", $display_name = "duckduckgo-anchor");
14 define_keymap("duckduckgo_select_keymap", $display_name = "duckduckgo-select");
16 function duckduckgo_call_command (buffer, command) {
17     var s = Components.utils.Sandbox(buffer.top_frame);
18     s.window = buffer.top_frame.wrappedJSObject;
19     s.document = buffer.document.wrappedJSObject;
20     Components.utils.evalInSandbox("window."+command+"()", s);
23 function duckduckgo_command (command) {
24     return function (I) {
25         duckduckgo_call_command(I.buffer, command);
26     };
29 // The bindings were found in <http://duckduckgo.com/d676.js>.  Each one
30 // corresponds to a call to 'new YAHOO.util.KeyListener(...)', from which
31 // the keycode and function name can be gotten.
33 interactive("duckduckgo-down",
34     "Calls DuckDuckGo command.",
35     duckduckgo_command("nkda"));
37 interactive("duckduckgo-up",
38     "Calls DuckDuckGo command.",
39     duckduckgo_command("nkua"));
41 interactive("duckduckgo-focus-search",
42     "Calls DuckDuckGo command.",
43     duckduckgo_command("nks"));
45 interactive("duckduckgo-related-topics",
46     "Calls DuckDuckGo command.",
47     duckduckgo_command("nkr"));
49 interactive("duckduckgo-main-results",
50     "Calls DuckDuckGo command.",
51     duckduckgo_command("nkm"));
53 interactive("duckduckgo-bang-dropdown",
54     "Calls DuckDuckGo command.",
55     duckduckgo_command("nkex"));
57 interactive("duckduckgo-domain-search",
58     "Calls DuckDuckGo command.",
59     duckduckgo_command("nkd"));
61 interactive("duckduckgo-follow-current",
62     "Calls DuckDuckGo command.",
63     alternates(duckduckgo_command("nke"),
64                duckduckgo_command("nkn")));
66 define_key(duckduckgo_keymap, "j", "duckduckgo-down");
67 define_key(duckduckgo_keymap, "k", "duckduckgo-up");
68 define_key(duckduckgo_keymap, "down", "duckduckgo-down");
69 define_key(duckduckgo_keymap, "up", "duckduckgo-up");
70 define_key(duckduckgo_keymap, "r", "duckduckgo-related-topics");
71 define_key(duckduckgo_keymap, "m", "duckduckgo-main-results");
72 define_key(duckduckgo_keymap, "/", "duckduckgo-focus-search");
73 define_key(duckduckgo_keymap, "!", "duckduckgo-bang-dropdown");
74 define_key(duckduckgo_keymap, "d", "duckduckgo-domain-search");
75 define_key(duckduckgo_anchor_keymap, "return", "duckduckgo-follow-current");
76 define_key(duckduckgo_select_keymap, "return", "duckduckgo-follow-current");
78 var duckduckgo_modality = {
79     normal: duckduckgo_keymap,
80     anchor: duckduckgo_anchor_keymap,
81     select: duckduckgo_select_keymap
84 define_page_mode("duckduckgo_mode",
85     $display_name = "DuckDuckGo",
86     $enable = function (buffer) {
87         buffer.content_modalities.push(duckduckgo_modality);
88     },
89     $disable = function (buffer) {
90         var i = buffer.content_modalities.indexOf(duckduckgo_modality);
91         if (i > -1)
92             buffer.content_modalities.splice(i, 1);
93     });
95 var duckduckgo_re = build_url_regex($domain = "duckduckgo");
96 auto_mode_list.push([duckduckgo_re, duckduckgo_mode]);
98 provide("duckduckgo");