Modo Emacs para redução do Stack Overflow


96

Estou usando o modo Org no Emacs para lidar com toda a minha documentação técnica. Eu gostaria de usar o Emacs para preparar as perguntas que tenho para o Stack Overflow. Existe um modo Emacs para isso, ou melhor ainda, uma extensão para o modo Org para lidar com a formatação Stack Overflow? O ideal é incluir todas as opções de formatação suportadas pela sintaxe de redução usada nos buffers de perguntas / comentários do Stack Overflow.


Quem estiver lendo esta pergunta pode se interessar pelo SX - Stack Exchange for Emacs!
Sean Allred de

Respostas:


144

Integrando Emacs com Stack Overflow

Como mencionado, você pode usar o modo de redução . Para integrar o modo markdown com Stack Overflow, você pode usar o plugin do Firefox It's All Text, que permite editar áreas de texto com um editor externo. Aqui está como configurá-lo:

  1. Instale o modo de redução . Se você usa Debian ou Ubuntu, você pode instalá-lo emitindo

    sudo apt-get install emacs-goodies-el

    ou se você estiver no emacs 24 (ou tiver o package.el no emacs 23) e Marmalade ou Melpa, você pode instalá-lo com

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

  3. Defina as preferências do It's All Text para usar o Emacs. Você pode defini-lo como executável (por exemplo, / usr / bin / emacs) ou como emacsclient .
  4. Adicione o seguinte ao seu .emacs para ativar o modo de redução para as áreas de texto do 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))
    

    Alternativamente, se as-external-alistfor definido - se M-x describe-variable RET as-external-alistnão falhar - provavelmente substituirá o seu auto-mode-alist. Ele tem um formato ligeiramente diferente (é uma lista de pares em vez de uma lista de células cons), então isso funcionará:

    (add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" markdown-mode))
  5. Pressione o botão de edição azul no lado inferior direito de uma área de texto para editá-la via emacs. O botão de edição azul é mostrado na seguinte captura de tela:

    Captura de tela do botão de edição azul no lado inferior direito desta área de texto

    Na captura de tela a seguir, há um buffer Emacs em modo de marcação editando esta postagem:

    Captura de tela de um buffer Emacs em modo markdown editando esta postagem

  6. Quando você terminar de editar no Emacs, salve o buffer para enviá-lo ao Firefox.

Se você deseja esta funcionalidade para outros domínios, você precisa alterar o regexp acima. O seguinte reconhece 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))

Usando o modo de redução com o modo Org

Para usar o modo markdow com o modo Org, você pode usar seu recurso para trabalhar com o código-fonte . Com ele, você pode incluir blocos de redução dentro de seus buffers de modo Org, que podem ser editados por meio do modo redução. Você pode usá-lo da seguinte maneira:

  1. Quando estiver <sem um buffer de modo Org, digite uma nova linha e pressione Tab. Isso resultará em

    #+begin_src 
    
    #+end_src
    
  2. Entre markdowndepois #+begin_srcpara que você tenha

    #+begin_src markdown
    
    #+end_src
    
  3. Quando dentro do bloco de origem (entre #+begin_src markdowne #+end_src), pressione C-c 'para editar o bloco de origem com modo de redução.

  4. Edite o bloco de origem no modo de redução.

  5. Pressione C-c 'para retornar ao buffer do modo Org e inserir a edição. Isso pode ser parecido com o que a seguinte captura de tela mostra:

    Um buffer de modo Org editando um bloco de código de redução para esta postagem


2
Se você tiver as-externalinstalado (ou nxhtml-modeque instala as-external) pode ignorar completamente o ajuste de auto-mode-alist, a variável que deseja modificar , em seguida, é as-external-alist.
quodlibetor

@quodlibetor Eu modificaria as-external-alistexatamente da mesma maneira então?
NN

@NN É quase exatamente o mesmo, mas você precisa tirar o período da célula interna, eu tenho isso e está funcionando para mim:(add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+" markdown-mode))
quodlibetor

Talvez você possa atualizar esta resposta para mencionar SX - Stack Exchange for Emacs :)
Sean Allred

1
Seu All Text não é mais compatível e não será executado com versões recentes do firefox (57+)
Iain

14

Existe o modo de marcação : http://jblevins.org/projects/markdown-mode/

Veja http://emacswiki.org/emacs/MarkdownMode para alguma personalização.

E há um back-end de markdown para o novo mecanismo de exportação aqui: http://orgmode.org/w/?p=org-mode.git;a=blob_plain;f=contrib/lisp/org-md.el;hb= CABEÇA

Certifique-se de adicionar o contrib/lisp/diretório ao seu load-path.

Então (require 'org-export)e (require 'org-md).

M-x org-md-export-to-markdown RET irá exportar para redução.



Encontrei um exportador básico de org-markdown: github.com/alexhenning/ORGMODE-Markdown
Nate Parsons

4

A resposta de @NN também se aplica ao Chrome, com essas mudanças nos detalhes.

O Chrome tem a extensão Editar com Emacs , que é semelhante a É todo texto. Depois de instalá-lo, você encontrará mais instruções na página de opções de extensão.

Há um grupo de personalização do emacs edit-servercom opções, o mais importante é que a mudança principal de modo por site é configurada de maneira diferente da resposta de @NN:

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

Além disso, para o servidor de edição funcionar no emacs de terminal, tive que desabilitar a edit-server-new-frameopção.


1

Pandoc tem suporte para leitura de um subconjunto do modo org e pode gerar markdown.

Em outras palavras, você pode continuar escrevendo no modo org, incluindo a escrita em itálico / como este /, e então exportar para markdown. No emacs, você pode converter em markdown selecionando a região, pressionando Cu MS- \ e digitando pandoc -r org -t markdown, obtendo uma saída como esta:

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

Ou você pode salvar o arquivo e convertê-lo na linha de comando.


0

Também é fácil com o Chrome

Isso é menos uma resposta do que um teste da minha solução usando o plugin do cromo Editar com Emacs e o Servidor de Edição Emacs configurado para usar o modo de redução para Stackoverflow (e outros sites Stackexchange que eu uso). Tudo que tive que fazer depois de instalar a extensão e os pacotes MELPA foi definido

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

Suporte para mensagens do Gmail

Observe na configuração acima, estou usando o modo org para mensagens do gmail. Ainda preciso trabalhar um pouco aqui, mas é possível, com um pouco de esforço, esboçar sua mensagem do gmail usando org-mode e, em seguida, usar org-mime para gerar html a partir de seu texto estruturado org. Você poderia apenas usar o markdown e um markdown para conversão de html.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.