Modo Emacs para la rebaja de Stack Overflow

96

Estoy usando Org-mode en Emacs para manejar toda mi documentación técnica. Me gustaría usar Emacs para preparar las preguntas que tengo para Stack Overflow. ¿Existe un modo Emacs para eso, o incluso mejor, una extensión para el modo Org para manejar el formateo de Stack Overflow? Idealmente, debería incluir todas las opciones de formato admitidas por la sintaxis de reducción utilizada en los búferes de preguntas / comentarios de Stack Overflow.

blueFast
fuente
Aquellos que lean esta pregunta pueden estar interesados ​​en SX - Stack Exchange for Emacs.
Sean Allred

Respuestas:

144

Integrando Emacs con Stack Overflow

Como se mencionó , puede usar el modo de reducción . Para integrar el modo Markdown con Stack Overflow, puede usar el complemento de Firefox It's All Text, que le permite editar áreas de texto con un editor externo. A continuación se explica cómo configurarlo:

  1. Instale el modo de rebajas . Si usa Debian o Ubuntu, puede instalarlo emitiendo

    sudo apt-get install emacs-goodies-el

    o si está en emacs 24 (o tiene package.el en emacs 23) y Marmalade o Melpa puede instalarlo con

    M-x package-install RET markdown-mode
  2. Instale todo es texto .

  3. Establezca las preferencias de It's All Text para usar Emacs. O puede configurarlo como ejecutable (por ejemplo, / usr / bin / emacs) o emacsclient .
  4. Agregue lo siguiente a su .emacs para habilitar el modo de reducción para las áreas de texto de Stack Overflow y 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))

    Alternativamente, si as-external-alistestá definido, si M-x describe-variable RET as-external-alistno falla, probablemente anulará su auto-mode-alist. Tiene un formato ligeramente diferente (es una lista de pares en lugar de una lista de celdas de contras) por lo que esto funcionará:

    (add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" markdown-mode))
  5. Presione el botón de edición azul en la parte inferior derecha de un área de texto para editarlo a través de emacs. El botón de edición azul se muestra en la siguiente captura de pantalla:

    Captura de pantalla del botón de edición azul en la parte inferior derecha de este área de texto

    En la siguiente captura de pantalla hay un búfer de Emacs en modo de rebajas editando esta publicación:

    Captura de pantalla de un búfer de Emacs en modo de rebajas editando esta publicación

  6. Cuando haya terminado de editar en Emacs, guarde el búfer para enviarlo a Firefox.

Si desea esta funcionalidad para otros dominios, debe cambiar la expresión regular anterior. Lo siguiente reconoce Stack Exchange, Stack Overflow, Ask Ubuntu y 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))

Usando el modo de rebajas con el modo Org

Para usar el modo Markdow con el modo Org, puede usar su función para trabajar con código fuente . Con él, puede incluir bloques de rebajas dentro de los búferes del modo Org que puede editar mediante el modo de rebajas. Puede usarlo de la siguiente manera:

  1. Cuando esté en un búfer en modo Org, ingrese <sen una nueva línea y presione Tab. Esto resultará en

    #+begin_src 
    
    #+end_src
  2. Entra markdowndespués #+begin_srcpara que tengas

    #+begin_src markdown
    
    #+end_src
  3. Cuando esté dentro del bloque fuente (entre #+begin_src markdowny #+end_src) presione C-c 'para editar el bloque fuente con el modo de reducción.

  4. Edite el bloque fuente en modo de rebajas.

  5. Presione C-c 'para volver al búfer del modo Org e insertar la edición. Esto puede parecerse a lo que muestra la siguiente captura de pantalla:

    Un búfer en modo Org editando un bloque de código de rebajas para esta publicación

NN
fuente
2
Si ha as-externalinstalado (o nxhtml-modecuál se instala as-external), es posible que ignore completamente su ajuste auto-mode-alist, la variable que desea modificar entonces es as-external-alist.
quodlibetor
@quodlibetor ¿Modificaría as-external-alistexactamente de la misma manera entonces?
NN
@NN Es casi exactamente lo mismo, pero necesitas sacar el período de la celda interna, tengo esto y me está funcionando:(add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+" markdown-mode))
quodlibetor
Tal vez se puede actualizar esta respuesta mencionar SX - Pila de cambio de Emacs :)
Sean Allred
1
Su All Text ya no es compatible y no se ejecutará con versiones recientes de firefox (57+)
Iain
14

Hay un modo de rebajas: http://jblevins.org/projects/markdown-mode/

Consulte http://emacswiki.org/emacs/MarkdownMode para ver algunas personalizaciones.

Y hay un backend de rebajas para el nuevo motor de exportación aquí: http://orgmode.org/w/?p=org-mode.git;a=blob_plain;f=contrib/lisp/org-md.el;hb= CABEZA

Asegúrese de agregar el contrib/lisp/directorio a su load-path.

Entonces (require 'org-export)y (require 'org-md).

M-x org-md-export-to-markdown RET exportará a markdown.

bzg
fuente
4

La respuesta de @ NN también es aplicable a Chrome, con estos cambios en los detalles.

Chrome tiene la extensión Edit with Emacs , que es similar a It's all text. Después de instalarlo, encontrará más instrucciones en la página de opciones de extensión.

Hay un grupo de personalización de emacs edit-servercon opciones, lo más importante es que el cambio de modo principal por sitio se configura de manera diferente a la respuesta de @ NN:

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

Además, para que el servidor de edición funcione en la terminal emacs, tuve que deshabilitar la edit-server-new-frameopción.

ristohietal
fuente
1

Pandoc tiene soporte para leer un subconjunto del modo org y puede generar rebajas.

En otras palabras, puede seguir escribiendo en modo de organización, incluida la escritura en cursiva / like this /, y luego exportar a markdown. Desde emacs puede convertir a markdown seleccionando la región, presionando Cu MS- \ y escribiendo pandoc -r org -t markdown, obteniendo un resultado como este:

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

O puede guardar el archivo y convertirlo en la línea de comando.

Sandra
fuente
0

También es fácil con Chrome

Esta es menos una respuesta que una prueba de mi solución usando el plugin Edit with Emacs chrome y el Emacs Edit Server configurado para usar el modo markdown para Stackoverflow (y otros sitios de Stackexchange que uso). Todo lo que tenía que hacer después de instalar la extensión y los paquetes MELPA estaba configurado

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

Soporte de mensajes de Gmail

Tenga en cuenta que en la configuración anterior, estoy usando el modo de organización para los mensajes de Gmail. Todavía necesita hacer un poco de trabajo aquí, pero es posible, con un poco de esfuerzo, redactar su mensaje de Gmail usando org-mode y luego usar org-mime para generar html a partir de su texto estructurado de organización. Podrías simplemente usar markdown y un markdown a la conversión html.

Tim X
fuente