Is it possible to present Markdown rendered in an Emacs buffer using Emacs\' own buffer text formatting capabilities? Emacs in graphical environments has rich text presentation
Me too, I've been looking for something like this for a very long time. The best I could find, though, is not am Emacs solution, it is an independent great piece of software called ReText.
If it is only about the rendering, go with Bozhidar's suggestion and do a Markdown to HTML conversion, then display the HTML in a W3 buffer. markdown-mode has code to call the external Markdown command with a few goodies.
But if you really want to do everything within Emacs Lisp, you'll have to write a Markdown parser first.
I guess you can use the source code of latex-preview for inspiration or pretty-lambda(a much simpler piece of software).
Alternatively you can convert the markdown to html in a background process and preview the html.
Everything is possible in Emacs, but not everything is easily achieved :-)
I have this in my .emacs file:
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(markdown-header-delimiter-face ((t (:inherit font-lock-function-name-face :underline t :weight bold))) t)
'(markdown-header-face-1 ((t (:inherit markdown-header-face :height 1.5))) t)
'(markdown-header-face-2 ((t (:inherit markdown-header-face :height 1.3))) t)
'(markdown-header-face-3 ((t (:inherit markdown-header-face :underline t :height 1.2))) t)
'(markdown-header-face-4 ((t (:inherit markdown-header-face :underline t :height 1.1))) t)
'(markdown-header-face-5 ((t (:inherit markdown-header-face :underline t))) t)
'(markdown-header-face-6 ((t (:inherit markdown-header-face :underline t))) t))
(put 'set-goal-column 'disabled nil)
which enlarges all the headlines. Markdown-mode itself will italicize starred text and boldface double-starred text, so this will get you there. However, it will not make the control characters invisible.
If you want that, you should probably look into pretty-lambda for examples (as Bozhidar Batsov suggested)
Depending on the context where you'd like to see the rendered text, you might be able to get pretty close to what you need by just tweaking markdown-mode's font-lock rules.
Personally, I use the following workflow:
C-c C-c m
to run Markdown on the current buffer and preview the output in another buffer. html-mode
on this other buffer (M-x html-mode
)M-x sgml-tags-invisible
)Then every time you want to refresh the rendering, simply run again C-c C-c m
on the markdown buffer.
Yet I confess until now for Markdown editing/previewing, nothing beats for me Textmate and its markdown preview panel. Actually, from a personal perspective, the only case where I prefer to run Textmate rather than Emacs is when I want to edit markdown files. Yet the path to have the same quality of preview on emacs is not so difficult and probably I should investigate it. As I see it, it's simply: