require("content-policy.js"); require("favicon"); load_paths.push("file:///usr/local/clark/share/conkeror/modules/"); theme_load_paths.push("/home/slash/.conkerorrc/themes/"); require("clark"); 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 ext_title_format(window) { return '(' + get_current_profile() +') ' + window.buffers.current.description; } function oni_add_sheet(css) { let (sheet = get_home_directory()) { sheet.append(".conkerorrc"); sheet.append("styles"); sheet.append(css); register_user_stylesheet(make_uri(sheet)); }; } 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_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/"); define_webjump("monsterhunter", "http://monsterhunter.wikia.com/wiki/index.php?search=%s&fulltext=Search", $alternative="http://monsterhunter.wikia.com/"); // 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"); /// Chickadee // From http://conkeror.org/Webjumps function chickadee_completer (input, cursor_position, conservative) { var completions = []; var content = yield send_http_request( load_spec({uri: "http://api.call-cc.org/cdoc/ajax/prefix?q="+ encodeURIComponent(input)})); if (content.responseText) { var parser = Cc["@mozilla.org/xmlextras/domparser;1"] .createInstance(Ci.nsIDOMParser); var doc = parser.parseFromString(content.responseText, "text/xml"); var res = doc.getElementsByTagName("li"); for (let i = 0, n = res.length; i < n; ++i) { completions.push(res[i].textContent); } } yield co_return(prefix_completer($completions = completions) (input, cursor_position, conservative)); } define_webjump("chickadee", "http://api.call-cc.org/cdoc?q=%s&query-name=Lookup", $alternative = "http://api.call-cc.org/doc/", $completer = chickadee_completer); /// /Chickadee // content_policy_bytype_table.object = oni_block_flash; cwd = make_file("/home/slash/downloads/"); hint_digits = "arstdhneio"; read_buffer_show_icons = true; title_format_fn = ext_title_format; url_remoting_fn = load_url_in_new_buffer; markam_program = "/home/slash/projects/markam/src/markam"; define_key(content_buffer_normal_keymap, "C-x C-b", "switch-to-buffer"); define_key(content_buffer_normal_keymap, "C-y", "paste-url-new-buffer"); define_key(content_buffer_normal_keymap, "H", "find-url-from-history"); define_key(content_buffer_normal_keymap, "h", "find-url-from-history-new-buffer"); define_key(default_base_keymap, "C-x f", "follow-new-buffer"); define_key(content_buffer_normal_keymap, "b", clark_keymap); 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)); add_hook("mode_line_hook", mode_line_adder(buffer_icon_widget), true); add_hook("mode_line_hook", mode_line_adder(clark_bookmarked_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("yoshi"); external_content_handlers.set("application/pdf", "zathura"); external_content_handlers.set("application/vnd.ms-excel", "libreoffice"); 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})(?:\s+([a-zA-Z0-9%/]+))?$/.exec(input), rv = null; if (m) { rv = "http://localhost:" + m[1]; if (m[2]) rv += "/" + m[2]; } return rv; } read_url_handler_list = [read_url_local_port_handler, read_url_github_command_handler]; // Mozrepl let (mozrepl_init = get_home_directory()) { mozrepl_init.appendRelativePath(".mozrepl-conkeror.js"); session_pref('extensions.mozrepl.initUrl', make_uri(mozrepl_init).spec); }; // if ('@hyperstruct.net/mozlab/mozrepl;1' in Cc) { // let mozrepl = Cc['@hyperstruct.net/mozlab/mozrepl;1'] // .getService(Ci.nsIMozRepl); // if (!mozrepl.isActive()) // mozrepl.start(4242); // } register_user_stylesheet( "data:text/css," + escape( "@namespace url(\"http://www.w3.org/1999/xhtml\");\n" + "span.__conkeror_hint {\n" + " font-family: \"Envy Code R\" !important;\n" + " font-size: 12px !important;\n" + " line-height: 12px !important;\n" + " padding: 0 2px !important;\n" + "}" ) ); oni_add_sheet("github.css"); oni_add_sheet("help.css"); oni_add_sheet("git-scm.css");