Como vivo a visualização do Markdown enquanto estou escrevendo?

14

Como posso fazer isso em um buffer diferente ou mesmo no buffer atual?

Estou tentando fazer o Github README.md e outras renderizações do Markdown no Github (para anotações e coisas assim),

CodeSammich
fonte
À primeira vista, isso parece fácil de usar markdown-exporte eww, baseado em um gancho e cronômetro de notificação de alterações. Mas parece que a parte interessante seria determinar a que parte do ewwHTML do buffer corresponde pointno buffer de remarcação (para que eles pudessem rolar "em sincronia").
precisa

Respostas:

4

Aqui está uma solução bastante longa, mas eficiente.

  1. Instale simple-httpde M-x httpd-start.
  2. Instale a markdownpartir do gerenciador de pacotes do seu sistema.
  3. Abra seu buffer de remarcação e execute markdown-export. Isso produz um arquivo HTML no mesmo diretório.
  4. Abra esse arquivo HTML.
  5. Instale impatient-modee M-x impatient-mode.
  6. Volte para o seu arquivo de remarcação.

Por fim, avalie este código:

(defun markdown-export-continuous (&optional output-file)
  (interactive)
  (let ((input-file (buffer-file-name))
        (output-file (markdown-export-file-name ".html")))
    (when output-file
      (with-current-buffer (find-file-noselect output-file)
        (erase-buffer)
        (insert
         (shell-command-to-string
          (format "markdown %s" input-file)))
        (save-buffer)))))
(add-hook 'after-save-hook 'markdown-export-continuous t t)

Observe que a add-hookinstrução precisa ser local para o Markdown, portanto, execute-a nesse buffer.

Depois de tudo isso, abra o navegador http://localhost:8080/imp/e ele será atualizado sempre que você C-x C-s.

abo-abo
fonte
Estou vendo o arquivo html em localhost: 8080 / imp, mas tenho que clicar nele para vê-lo e o Cx Cs não parece ser atualizado. Ou isso é pretendido?
CodeSammich
Além disso, em vez de apenas exportar remarcações, existe uma maneira de exportar remarcações com sabor do Github?
CodeSammich
5

No modo de remarcação 2.1 , essa funcionalidade é fornecida em markdown-live-preview-mode(vinculada a C-c C-c l).

Ele usa eww para renderizar o HTML. Captura de tela:

visualização ao vivo de remarcação

Wilfred Hughes
fonte