Modalità Emacs per il markdown di Stack Overflow


96

Sto usando la modalità Org in Emacs per gestire tutta la mia documentazione tecnica. Vorrei usare Emacs per preparare le domande che ho per Stack Overflow. Esiste una modalità Emacs per questo, o ancora meglio, un'estensione per la modalità Org per gestire la formattazione di Stack Overflow? Idealmente dovrebbe includere tutte le opzioni di formattazione supportate dalla sintassi di markdown utilizzata nei buffer di domande / commenti di Stack Overflow.


Coloro che leggono questa domanda potrebbero essere interessati a SX - Stack Exchange for Emacs!
Sean Allred

Risposte:


144

Integrazione di Emacs con Stack Overflow

Come accennato puoi usare la modalità markdown . Per integrare la modalità markdown con Stack Overflow puoi utilizzare il plugin di Firefox It's All Text che ti consente di modificare le aree di testo con un editor esterno. Ecco come configurarlo:

  1. Installa la modalità markdown . Se usi Debian o Ubuntu puoi installarlo emettendo

    sudo apt-get install emacs-goodies-el

    oppure se sei su emacs 24 (o hai package.el su emacs 23) e Marmalade o Melpa puoi installarlo con

    M-x package-install RET markdown-mode
  2. Installa è tutto testo .

  3. Imposta le preferenze di It's All Text per usare Emacs. O puoi impostarlo sull'eseguibile (ad esempio / usr / bin / emacs) o su emacsclient .
  4. Aggiungi quanto segue al tuo .emacs per abilitare la modalità markdown per le aree di testo Stack Overflow e Stack Exchange:

    ;; Integrate Emacs with Stack Exchange https://stackoverflow.com/a/10386560/789593
    (add-to-list 'auto-mode-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" . markdown-mode))

    In alternativa, se as-external-alistè definito, se M-x describe-variable RET as-external-alistnon fallisce, probabilmente sovrascriverà il tuo auto-mode-alist. Ha un formato leggermente diverso (è un elenco di coppie invece di un elenco di celle contro), quindi funzionerà:

    (add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" markdown-mode))
  5. Premere il pulsante di modifica blu in basso a destra di un'area di testo per modificarla tramite emacs. Il pulsante di modifica blu è mostrato nella seguente schermata:

    Screenshot del pulsante di modifica blu nella parte inferiore destra di questa area di testo

    Nello screenshot seguente c'è un buffer Emacs in modalità markdown che modifica questo post:

    Screenshot di un buffer Emacs in modalità markdown modificando questo post

  6. Quando hai finito di modificare in Emacs salva il buffer per inviarlo a Firefox.

Se desideri questa funzionalità per altri domini, devi modificare la regexp sopra. Quanto segue riconosce Stack Exchange, Stack Overflow, Ask Ubuntu e Super User:

;; Integrate Emacs with Stack Exchange https://stackoverflow.com/a/10386560/789593
(add-to-list 'auto-mode-alist '("\\(stack\\(exchange\\|overflow\\)\\|superuser\\|askubuntu\\)\\.com\\.[a-z0-9]+\\.txt" . markdown-mode))

Utilizzo della modalità markdown con la modalità Org

Per usare la modalità markdow con la modalità Org puoi usare la sua funzionalità per lavorare con il codice sorgente . Con esso puoi includere blocchi di markdown all'interno dei buffer della modalità Org che puoi modificare tramite la modalità markdown. Puoi usarlo come segue:

  1. Quando ci si trova in un buffer in modalità Org, immettere <suna nuova riga e premere Tab. Questo risulterà in

    #+begin_src 
    
    #+end_src
  2. Entra markdowndopo in #+begin_srcmodo da avere

    #+begin_src markdown
    
    #+end_src
  3. Una volta all'interno del blocco sorgente (tra #+begin_src markdowne #+end_src), premere C-c 'per modificare il blocco sorgente con la modalità markdown.

  4. Modifica il blocco sorgente in modalità markdown.

  5. Premere C-c 'per tornare al buffer della modalità Org e inserire la modifica. Questo può assomigliare a quello che mostra lo screenshot seguente:

    Un buffer in modalità Org che modifica un blocco di codice markdown per questo post


2
Se hai as-externalinstallato (o nxhtml-modequale installa as-external) potrebbe ignorare completamente la tua regolazione auto-mode-alist, la variabile che vuoi modificare allora è as-external-alist.
quodlibetor

@quodlibetor Modificherei as-external-alistesattamente allo stesso modo allora?
NN

@NN È quasi esattamente lo stesso, ma devi togliere il periodo dalla cella interna, ce l'ho e per me funziona:(add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+" markdown-mode))
quodlibetor

Forse puoi aggiornare questa risposta per menzionare SX - Stack Exchange for Emacs :)
Sean Allred

1
Tutto il testo non è più supportato e non funzionerà con le versioni recenti di Firefox (57+)
Iain

14

C'è la modalità markdown : http://jblevins.org/projects/markdown-mode/

Vedi http://emacswiki.org/emacs/MarkdownMode per alcune personalizzazioni.

E c'è un backend markdown per il nuovo motore di esportazione qui: http://orgmode.org/w/?p=org-mode.git;a=blob_plain;f=contrib/lisp/org-md.el;hb= TESTA

Assicurati di aggiungere la contrib/lisp/directory al tuo file load-path.

Allora (require 'org-export)e (require 'org-md).

M-x org-md-export-to-markdown RET esporterà in markdown.



Ho trovato un esportatore di markdown org di base: github.com/alexhenning/ORGMODE-Markdown
Nate Parsons

4

La risposta di @ NN è applicabile anche a Chrome, con queste modifiche nei dettagli.

Chrome ha l' estensione Modifica con Emacs , che è simile a È tutto testo. Dopo averlo installato, troverai ulteriori istruzioni dalla pagina delle opzioni di estensione.

Esiste un gruppo di personalizzazione di emacs edit-servercon opzioni, soprattutto il cambio di modalità principale per sito è configurato in modo diverso rispetto alla risposta di @ NN:

(add-to-list 'edit-server-url-major-mode-alist
             '("^stackoverflow" . markdown-mode))

Inoltre, affinché il server di modifica funzioni nel terminale emacs, ho dovuto disabilitare l' edit-server-new-frameopzione.


1

Pandoc supporta la lettura di un sottoinsieme di modalità org e può generare markdown.

In altre parole, puoi continuare a scrivere in modalità org, inclusa la scrittura in corsivo / come questo /, e quindi esportare in markdown. Da emacs puoi convertire in markdown selezionando la regione, premendo Cu MS- \ e digitando pandoc -r org -t markdown, ottenendo un output come questo:

In other words, you can keep writing in org-mode, including writing italics *like this*, and then export to markdown.

Oppure puoi salvare il file e convertirlo dalla riga di comando.


0

È facile anche con Chrome

Questa è meno una risposta che un test della mia soluzione utilizzando il plug-in Edit with Emacs chrome e l'Emacs Edit Server configurato per utilizzare la modalità markdown per Stackoverflow (e altri siti Stackexchange che uso). Tutto quello che dovevo fare dopo aver installato l'estensione e i pacchetti MELPA era impostato

(setq edit-server-url-major-mode-alist
             '(("mail.google.com" . org-mode)
               ("stackoverflow\\.com" . markdown-mode)
               (".*\\.stackexchange\\.com" . markdown-mode)
               ("github\\.com" . markdown-mode)))

Assistenza messaggi Gmail

Nota nell'impostazione sopra, sto usando la modalità org per i messaggi di Gmail. Ho ancora bisogno di fare un po 'di lavoro qui, ma è possibile, con un piccolo sforzo, redigere il tuo messaggio gmail utilizzando la modalità org e quindi utilizzare org-mime per generare html dal testo strutturato dell'organizzazione. Potresti semplicemente usare un markdown e un markdown in conversione html.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.