2009-04-20 18 views
5

Conkeror ha cambiato il modo in cui navigo nel Web: è fondamentalmente Emacs + Firefox con la configurazione basata su javascript in .conkerrorc piuttosto che la configurazione elisp in .emacs.Che aspetto ha il tuo .conkerorrc?

Ho costruito un'enorme libreria di personalizzazioni .emacs nel corso degli anni ottenendo piccoli pezzi da altri. Sto solo iniziando con Conkeror ma il fatto che usi JS (molto più ampiamente conosciuto di Elisp) deve significare che ci sono alcune cose incredibili là fuori.

Cura di condividere i tuoi pezzi? Sono particolarmente interessato a cose che interagiscono bene con le pagine prodotte da Django (o altre pagine web dinamiche).

Per esempio, mi piacerebbe un registratore di azioni Conkeror-based che mi permetta di esplorare un sito e trovare i bug, e poi subito a salvare & sottoporre la sequenza di azioni come un bug report con un solo tasto. Includendo le azioni JS richieste per replicare l'errore, sarebbe l'imbracatura di test finale, persino migliore di Selenium perché sarebbe totalmente pilotata da tastiera.

+0

Perché i voti per chiudere? Questo è molto simile ai thread che richiedono suggerimenti sulla personalizzazione di Emacs/Elisp: http: //i.stackoverflow.it/questions/41522/tips-for-learning-elisp/156861 – ramanujan

+2

Hai aperto una taglia su questo, ma non è affatto chiaro che questa domanda abbia una risposta definitiva. Voterò anche a chiudere, se avessi il rappresentante per questo. – bignose

risposta

3

Poiché nessun altro sembra interessato a pubblicare una risposta effettiva, lo farò.

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

Trovo utile avere il nome del profilo nel titolo della finestra poiché utilizzo più profili. Non mi aiuta molto ora che uso StumpWM e non guardo molto l'elenco delle finestre, ma è molto utile in altri gestori di finestre.

Questi due mi impediscono di chiudere accidentalmente una finestra del conkeror chiudendo l'ultimo buffer.

1

Beh, non posso davvero aiutarti qui ma volevo solo dire che, anche se sono un ragazzo emacs, ho abbandonato Conkeror per vimperator perché IMHO l'esperienza di navigazione è molto meglio!

-2

Conkeror è semplicemente Firefox con combinazioni di tasti Emacs. Non penso che sia, né intende essere, un ambiente completo come quello di Emacs.

Facilita la tua esperienza di navigazione permettendoti di utilizzare la tua memoria muscolare Emacs ben indossata. E ti consente di tenere le mani sulla tastiera di più, invece di saltare dalla tastiera al mouse tutto il tempo.

Quindi non penso che sia davvero in grado di fare alcune delle cose che immagini.

Il suo sviluppo è anche piuttosto lento ed è probabilmente a corto di personale. Ad esempio, scoprirai che non puoi utilizzare le estensioni/estensioni di Firefox più comuni con esso. Firebug, Greasemonkey, Gears, ecc.

Mi piace per alcune attività di navigazione: dispone di modalità speciali per leggere Reddit, Google Reader e altri che rendono le cose molto più semplici.

Ma concordo anche con binO che il vimperator è molto meglio, anche se sei un ragazzo emacs. Aiuta se usi VIM, naturalmente.

+1

Il team di sviluppo potrebbe essere piccolo ma siamo scrappy! :-) Dal momento che ha un completo linguaggio completo di Turing per la configurazione ed è, infatti, scritto in JS puoi fare qualsiasi cosa tu voglia. Inoltre, è una specie di sofferenza provare a usare le estensioni basate sul mouse come Firebug per lavorare con la tastiera. E cosa avresti bisogno di Greasemonkey visto che hai già accesso al DOM con JS? – baudtack

+0

Inoltre, non è possibile utilizzare molte estensioni di Firefox perché Conkeror non è Firefox. Sono entrambi basati su xulrunner, ma molte estensioni, come Firebug, si basano sul chrome di Firefox. – baudtack

5

Ecco la mia:

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