2009-04-20 16 views
5

Conkeror已經改變了我瀏覽網頁的方式:它基本上是Emacs + Firefox,其基於JavaScript的配置爲.conkerrorc,而不是.emacs中的elisp配置。.conkerorrc的外觀如何?

多年來,我已經建立了一個龐大的.emacs自定義庫,只需從其他人那裏獲取一點零碎碎片。我剛剛開始使用Conkeror,但它使用JS(比Elisp更廣泛的知名度)的事實意味着有一些驚人的東西在那裏。

小心分享你的作品嗎? 我對與Django(或其他動態網頁)產生的頁面交互良好的東西特別感興趣。

比如,我很想基於Conkeror行動記錄,讓我瀏覽一個網站,並發現錯誤,然後立即保存&提交的動作序列作爲一個bug報告使用一個按鍵。通過包含複製錯誤所需的JS操作,它將成爲最終的測試工具 - 甚至比Selenium更好,因爲它完全是由鍵盤驅動的。

+0

爲什麼票關閉?這與要求Emacs/elisp定製提示的線程非常相似: http://i.stackoverflow。com/questions/41522/tips-for-learning-elisp/156861 – ramanujan 2009-04-20 15:17:33

+2

您已經打開了這個賞金,但這個問題有一個明確的答案並不是一目瞭然。如果我有代表,我也會投票結束。 – bignose 2009-04-27 07:51:31

回答

3

由於沒有人似乎有興趣發佈實際答覆,我會。

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

嗯,我真的不能幫你,但我只想說雖然我是一個emacs傢伙,但我放棄了Conkeror的vimperator,因爲恕我直言,瀏覽體驗好多了!

-2

Conkeror僅僅是帶有Emacs鍵綁定的Firefox。我不認爲它是Emacs所具有的全功能環境,也不是Emacs所希望的。

它通過允許您使用您熟悉的Emacs肌肉記憶體來促進您的瀏覽體驗。並且可以讓您將手放在鍵盤上,而不是始終從鍵盤跳到鼠標。

所以我不認爲它真的能夠做你想象中的一些事情。

其發展也相當緩慢,可能人手不足。例如,你會發現,你不能使用最常見的Firefox插件/擴展。 Firebug,Greasemonkey,Gears等

我喜歡它的一些瀏覽任務:它具有特殊的閱讀Reddit,Google閱讀器,以及其他使事情變得更容易的模式。

但我也同意binOr vimperator更好,即使你是一個emacs人。如果你使用VIM,當然會有幫助。

5

這裏是我的:

// 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);