require("content-policy.js"); require("favicon"); theme_load_paths.push("/home/slash/.conkerorrc/themes/"); define_browser_object_class( "history-url", null, function (I, prompt) { check_buffer(I.buffer, content_buffer); var result = yield I.buffer.window.minibuffer.read_url( $prompt = prompt, $use_webjumps = false, $use_history = true, $use_bookmarks = false, $sort_order = 'date_descending' ); yield co_return(result); } ); function oni_before_quit_func() { var w = get_recent_conkeror_window(); var result = (w == null) || "y" == (yield w.minibuffer.read_single_character_option( $prompt="Quit Conkeror? (y/n)", $options=["y", "n"])); yield co_return(result); } function oni_block_flash(content_type, content_location) { var Y = content_policy_accept, N = content_policy_reject; var action = ({ "youtube.com": Y } [content_location.host] || N); if (action == N) dumpln("blocked flash: " + content_location.spec); return action; } function oni_escape(str) { return str.replace(/(["$`])/g, '\\$1'); } function oni_linkwave_add(I) { check_buffer(I.buffer, content_buffer); let url = load_spec_uri_string(load_spec(I.buffer.top_frame)); let title = escape(yield I.minibuffer.read( $prompt = "name (required): ", $initial_value = I.buffer.title)); let tags = escape(yield I.minibuffer.read( $prompt = "tags (space delimited): ")); let description = escape(yield I.minibuffer.read( $prompt = "extended description: ")); let command = '/home/slash/development/projects/linkwave/src/linkwave "' + url + '" "' + title + '" "' + description + '"'; I.window.minibuffer.message(command); } interactive("linkwave-add", "Bookmark the page in linkwave", oni_linkwave_add); function oni_linkwave_add_link(I) { bo = yield read_browser_object(I); let url = load_spec_uri_string( load_spec(encodeURIComponent(bo))); check_buffer(I.buffer, content_buffer); let title = escape(yield I.minibuffer.read( $prompt = "name (required): ", $initial_value = bo.textContent)); let tags = escape(yield I.minibuffer.read( $prompt = "tags (space delimited): ")); let description = escape(yield I.minibuffer.read( $prompt = "extended description: ")); let command = '/home/slash/development/projects/linkwave/src/linkwave "' + url + '" "' + title + '" "' + description + '"'; let result = yield shell_command(command); if (!result) I.window.minibuffer.message('Added to linkwave'); else I.window.minibuffer.message('Couldn\'t add to linkwave'); } interactive("linkwave-add-link", "Bookmark the a link in linkwave", oni_linkwave_add_link); function oni_org_store_link(I) { var cmd_str = 'emacsclient \"org-protocol://store-link://' + encodeURIComponent(I.buffer.display_uri_string) + '/' + encodeURIComponent(I.buffer.document.title) + '\"'; if (I.window != null) { window.minibuffer.message('Issuing ' + cmd_str); } shell_command_blind(cmd_str); } interactive("org-store-link", "Stores [[url][title]] as org link and copies url to emacs " + "kill ring", oni_org_store_link); interactive("find-url-from-history", "Find a page from history in the current buffer", "find-url", $browser_object = browser_object_history_url); interactive("find-url-from-history-new-buffer", "Find a page from history in a new buffer", "find-url-new-buffer", $browser_object = browser_object_history_url); define_webjump("emacswiki", "http://www.google.com/cse?cx=004774160799092323420%3A6-ff2s0o6yi&q=%s", $alternative="http://www.emacswiki.org"); define_webjump("php", "http://www.php.net/manual-lookup.php?pattern=%s&scope=quickref", $alternative="http://www.php.net"); define_webjump("python", "http://docs.python.org/search.html?q=%s&check_keywords=yes&area=default", $alternative="http://www.python.org"); define_webjump("ddg", "https://duckduckgo.com/?q=%s", $alternative="https://duckduckgo.com"); define_webjump("metal-archives", "http://www.metal-archives.com/search?searchString=%s&type=band_name", $alternative="http://www.metal-archives.com"); define_webjump("djangodocs", "https://docs.djangoproject.com/search/?q=%s&release=5", $alternative="https://docs.djangoproject.com/"); define_webjump("google", "https://duckduckgo.com?q=!google%%20%s"); define_webjump("github", "https://github.com/search?q=%s&type=Everything&repo=&langOverride=&start_value=1", $alternative="https://github.com"); define_webjump("mdn", "https://developer.mozilla.org/en-US/search?q=%s", $alternative="https://developer.mozilla.org/"); // Archlinux define_webjump("arch/wiki", "https://wiki.archlinux.org/index.php?search=%s", $alternative="https://wiki.archlinux.org"); define_webjump("arch/aur", "https://aur.archlinux.org/packages.php?O=0&K=%s&do_Search=Go", $alternative="https://aur.archlinux.org"); define_webjump("arch/packages", "https://www.archlinux.org/packages/?sort=&q=%s&limit=50", $alternative="https://packages.archlinux.org"); content_policy_bytype_table.object = oni_block_flash; cwd = make_file("/home/slash/downloads/"); hint_digits = "arstdhneio"; read_buffer_show_icons = true; url_remoting_fn = load_url_in_new_buffer; define_key(content_buffer_normal_keymap, "h", "find-url-from-history-new-buffer"); define_key(content_buffer_normal_keymap, "H", "find-url-from-history"); define_key(default_base_keymap, "C-x f", "follow-new-buffer"); add_hook("before_quit_hook", oni_before_quit_func); add_hook("content_policy_hook", content_policy_bytype); add_hook("mode_line_hook", mode_line_adder(buffer_count_widget, true)); add_hook("mode_line_hook", mode_line_adder(buffer_icon_widget, true)); add_hook("mode_line_hook", mode_line_adder(downloads_status_widget)); remove_hook("download_added_hook", open_download_buffer_automatically); hints_minibuffer_annotation_mode(true); theme_load("naquadah"); var gh_url = "http://github.com/"; function read_url_github_ad_command_handler(input) { var m = /^gh\s+@(\S+)(?:\s+((?:un)?follow))?/.exec(input); if (m) { if (m[2]) return gh_url + "users/follow?target="; return gh_url + m[1]; } return null; } function read_url_github_my_command_handler(input) { var m = /^gh\s+my\s+(dashboard|issues|notifications|profile|pulls|stars)/.exec(input); if (m) { switch (m[1]) { case "dashboard": case "notifications": case "stars": return gh_url + m[1]; case "issues": case "pulls": return gh_url + "dashboard/" + m[1]; case "profile": return gh_url + "settings/" + m[1]; } } return null; } function read_url_github_repo_command_handler(input) { var m = /^gh\s+(\S+\/\S+)(?:\s+(\#\d+|\@\S+|issues|pulls|wiki|graphs|network|admin)(?:\s+(\#\d+|new))?)?$/.exec(input); if (m) { repo_url = gh_url + m[1] + "/"; switch (m[2]) { case "issues": issues_url = repo_url + m[2] + "/"; if (m[3]) { if (m[3][0] == '#') return issues_url + m[3].substring(1); else if (m[3] == "new") return issues_url + m[3]; else break; } return issues_url; case "pulls": case "wiki": case "graphs": case "network": case "admin": return repo_url + m[2]; default: // Still need watch and unwatch if (m[2]) { if (m[2][0] == '#') return repo_url + "issues/" + m[2].substring(1); else if (m[2][0] == '@') return repo_url + "tree/" + m[2].substring(1); else break; } return repo_url; } } return null; } function read_url_github_command_handler(input) { return read_url_github_ad_command_handler(input) || read_url_github_my_command_handler(input) || read_url_github_repo_command_handler(input); } function read_url_local_port_handler(input) { var m = /^lh (\d{1,5})$/.exec(input); if (m) { return "http://localhost:" + m[1]; } return null; } read_url_handler_list = [read_url_local_port_handler, read_url_github_command_handler];