Как выглядит ваш .conkerorrc? - PullRequest
5 голосов
/ 20 апреля 2009

Conkeror изменил способ просмотра веб-страниц: в основном это Emacs + Firefox с конфигурацией на основе javascript в .conkerrorc , а не с конфигурацией elisp в .emacs.

За эти годы я собрал огромную библиотеку настроек .emacs, получая маленькие кусочки от других. Я только начинаю с Conkeror, но тот факт, что он использует JS (гораздо более широко известный, чем Elisp), должен означать, что есть кое-что удивительное.

Хотите поделиться своими произведениями? Мне особенно интересны материалы, которые хорошо взаимодействуют со страницами, созданными Django (или другими динамическими веб-страницами).

Например, мне бы понравился регистратор действий на основе Conkeror, который позволяет мне просматривать сайт и находить ошибки, а затем сразу же сохранять и отправлять последовательность действий в виде отчета об ошибке одним нажатием клавиши. Включая действия JS, необходимые для репликации ошибки, это станет наилучшим средством тестирования - даже лучше, чем Selenium, потому что оно будет полностью управляемым с клавиатуры.

Ответы [ 4 ]

5 голосов
/ 11 апреля 2011

Вот мой:

// homepage = "http://www.google.com";

// set default webjump
read_url_handler_list = [read_url_make_default_webjump_handler("google")];
// possibly valid URL
function possibly_valid_url (str) {
    return (/[\.\/:]/.test(str)) &&
        !(/\S\s+\S/.test(str)) &&
        !(/^\s*$/.test(str));
}

// page modes
require("page-modes/google-search-results.js"); // google search results
require("page-modes/wikipedia.js");     // wikipedia mode

// webjumps
define_webjump("gmail", "https://mail.google.com"); // gmail inbox
define_webjump("twitter", "http://twitter.com/#!/search/%s", $alternative = "https://twitter.com/");  // twitter
define_webjump("w3schools", "http://www.w3schools.com"); // w3schools site
define_webjump("w3search", "http://www.google.com/search?sitesearch=www.w3schools.com&as_q=%s"); // w3schools search
define_webjump("jquery", "http://docs.jquery.com/Special:Search?ns0=1&search=%s"); // jquery
define_webjump("archwiki", "https://wiki.archlinux.org/index.php?search=%s"); // arch wiki
define_webjump("stackoverflow", "http://stackoverflow.com/search?q=%s", $alternative = "http://stackoverflow.com/"); // stackoverflow
define_webjump("sor", "http://stackoverflow.com/search?q=[r]+%s", $alternative = "http://stackoverflow.com/questions/tagged/r"); // stackoverflow R section
define_webjump("stats", "http://stats.stackexchange.com/search?q=%s"); // stats
define_webjump("torrentz", "http://torrentz.eu/search?q=%s"); // torrentz
define_webjump("avaxsearch", "http://avaxsearch.com/avaxhome_search?q=%s&a=&c=&l=&sort_by=&commit=Search"); // avaxsearch
define_webjump("imdb", "http://www.imdb.com/find?s=all;q=%s"); // imdb
define_webjump("duckgo", "http://duckduckgo.com/?q=%s", $alternative = "http://duckduckgo.com"); // duckduckgo
define_webjump("blekko", "http://blekko.com/ws/%s", $alternative = "http://blekko.com/"); // blekko
define_webjump("youtube", "http://www.youtube.com/results?search_query=%s&aq=f", $alternative = "http://www.youtube.com"); // youtube
define_webjump("duckgossl", "https://duckduckgo.com/?q=%s"); // duckduckgo SSL
define_webjump("downforeveryoneorjustme", "http://www.downforeveryoneorjustme.com/%s"); // downforeveryoneorjustme
define_webjump("urbandictionary", "http://www.urbandictionary.com/define.php?term=%s"); // urban dictionary
define_webjump("rts", "http://rts.rs");             // RTS
define_webjump("facebook", "http://www.facebook.com");      // facebook homepage

// tab bar
require("new-tabs.js");

// clicks in new buffer
require("clicks-in-new-buffer.js");
// Set to either OPEN_NEW_BUFFER(_BACKGROUND)
clicks_in_new_buffer_target = OPEN_NEW_BUFFER_BACKGROUND; // Now buffers open in background.

// history webjump
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);
        yield co_return (result);
    });

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 the current buffer",
            "find-url-new-buffer",
            $browser_object = browser_object_history_url);

define_key(content_buffer_normal_keymap, "h", "find-url-from-history-new-buffer");
define_key(content_buffer_normal_keymap, "H", "find-url-from-history");

// load session module
require("session.js");
session_auto_save_auto_load = true; // auto-load session

// don't open download buffer automatically
remove_hook("download_added_hook", open_download_buffer_automatically);

// don't show clock
remove_hook("mode_line_hook", mode_line_adder(clock_widget));

// add favicons
require("favicon");
add_hook("mode_line_hook", mode_line_adder(buffer_icon_widget), true);
read_buffer_show_icons = true;

// add content handlers
content_handlers.set("application/pdf", content_handler_save); // pdf
// torrent
// mp3
// ogg

function define_switch_buffer_key (key, buf_num) {
    define_key(default_global_keymap, key,
               function (I) {
           switch_to_buffer(I.window,
                                    I.window.buffers.get_buffer(buf_num));
               });
}
for (let i = 0; i < 10; ++i) {
    define_switch_buffer_key(String((i+1)%10), i);
}

function enable_scrollbars (buffer) {
    buffer.top_frame.scrollbars.visible = true;
}
add_hook("create_buffer_late_hook", enable_scrollbars);
3 голосов
/ 11 февраля 2010

Поскольку никто не заинтересован в публикации фактического ответа, я буду.

function my_title_format (window) {
   return 'conkeror {'+get_current_profile()+'}'+window.buffers.current.description;
}

Мне полезно иметь имя профиля в заголовке окна, так как я использую несколько профилей. Теперь мне не очень помогает то, что я использую StumpWM и не очень много смотрю на список окон, но это очень полезно в других оконных менеджерах.

define_key(content_buffer_normal_keymap, "C-x C-c", "confirm-quit");
can_kill_last_buffer = false;

Эти двое мешают мне случайно закрыть окно conkeror, закрыв последний буфер.

1 голос
/ 24 апреля 2009

Ну, я не могу вам здесь помочь, но я просто хотел сказать, что, хотя я парень из Emacs, я выбрал Conkeror для vimperator , потому что ИМХО опыт просмотра намного лучше!

0 голосов
/ 01 мая 2009

Conkeror - это просто Firefox с сочетаниями клавиш Emacs. Я не думаю, что это есть и не собирается быть полнофункциональной средой, как в Emacs.

Это облегчает ваш просмотр, позволяя вам использовать вашу изношенную мышечную память Emacs. И позволяет вам больше держать руки на клавиатуре, вместо того чтобы постоянно переходить с клавиатуры на мышь.

Так что я не думаю, что он действительно способен делать некоторые вещи, которые вы себе представляете.

Его развитие также довольно медленное и, вероятно, недоукомплектовано. Например, вы обнаружите, что вы не можете использовать с ним большинство распространенных дополнений / расширений Firefox. Firebug, Greasemonkey, Gears и т. Д.

Мне нравится это для некоторых задач просмотра: у него есть специальные режимы для чтения Reddit, Google Reader и других, которые облегчают работу

Но я также согласен с binOr, что vimperator намного лучше, даже если вы парень из Emacs. Помогает, если вы используете VIM, конечно.

...