define_browser_object_class: changed arg `hint` to keyword `$hint`
[conkeror/arlinius.git] / modules / page-modes / google-search-results.js
blobf912d3eeedf411716907e09ee005fbc6c15e9685
1 /**
2  * (C) Copyright 2008 Jeremy Maitin-Shepard
3  *
4  * Use, modification, and distribution are subject to the terms specified in the
5  * COPYING file.
6 **/
8 require("content-buffer.js");
9 require("bindings/default/content-buffer/normal.js");
11 define_keymap("google_search_results_keymap", $parent = content_buffer_normal_keymap);
13 // Keys for the "experimental" keyboard search
14 define_key(google_search_results_keymap, "j", "ensure-content-focused", $fallthrough);
15 define_key(google_search_results_keymap, "k", "ensure-content-focused", $fallthrough);
16 define_key(google_search_results_keymap, "o", "ensure-content-focused", $fallthrough);
17 define_key(google_search_results_keymap, "/", "ensure-content-focused", $fallthrough);
18 define_key(google_search_results_keymap, "return", "ensure-content-focused", $fallthrough);
20 /**
21  * Note: escape already does the same thing as the Google key binding.
22  */
24 define_browser_object_class("google-search-results-links", null,
25     xpath_browser_object_handler("//a[@class='l']"),
26     $hint = "select search result");
29 // Bind keys 1 through 9 to follow corresponding results links
31 define_browser_object_class("google-search-result-by-digit", null,
32     function (I, prompt) {
33         var doc = I.buffer.document;
34         var digit = I.event.charCode - 48;
35         var res = doc.evaluate("//a[parent::node()/@class='r']", doc, null,
36                                Ci.nsIDOMXPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
37                                null);
38         yield co_return(res.snapshotItem(digit - 1));
39     });
41 function google_search_bind_number_shortcuts () {
42     for (var j = 1; j <= 9; j++) {
43         let o = j;
44         var function_name = "gsearch-follow-result-" + j;
45         interactive(function_name,
46                     "Follow google search result number " + j,
47                     "follow",
48                     $browser_object = browser_object_google_search_result_by_digit);
49         define_key(google_search_results_keymap, String(j), function_name);
50     }
54 define_page_mode("google_search_results_mode", "Google Search Results",
55                  $enable = function (buffer) {
56                      var link_using_commands = ["follow",
57                                                 "follow-new-buffer",
58                                                 "follow-new-buffer-background",
59                                                 "follow-new-window",
60                                                 "save",
61                                                 "copy",
62                                                 "shell-command-on-file"];
63                      for each (var c in link_using_commands)
64                          buffer.default_browser_object_classes[c] =
65                              browser_object_google_search_results_links;
66                  },
67                  $keymaps = {normal_input_mode: google_search_results_keymap});
69 let (google_search_re = build_url_regex(
70          $domain = "google",
71          $allow_www = true,
72          $path = "search?",
73          $tlds = ["com", "com.au", "co.uk", "de", "dk", "es",
74                   "fr", "it", "no", "se", "uk"])) {
75     auto_mode_list.push([google_search_re, google_search_results_mode]);