Emacs mode for Stack Overflow's markdown

blueFast picture blueFast · Apr 30, 2012 · Viewed 12k times · Source

I am using Org-mode in Emacs to handle all my technical documentation. I would like to use Emacs to prepare questions that I have for Stack Overflow. Is there an Emacs mode for that, or even better, an extension for Org-mode to handle Stack Overflow formatting? Ideally it should include all formatting options supported by the markdown syntax used in the Stack Overflow question/comment buffers.

Answer

N.N. picture N.N. · Apr 30, 2012

Integrating Emacs with Stack Overflow

As mentioned you can use markdown-mode. To integrate markdown-mode with Stack Overflow you can use the Firefox plugin It's All Text which lets you edit textareas with an external editor. Here is how to set it up:

  1. Install markdown-mode. If you use Debian or Ubuntu you can install it by issuing

    sudo apt-get install emacs-goodies-el
    

    or if you're on emacs 24 (or have package.el on emacs 23) and Marmalade or Melpa you can install it with

    M-x package-install RET markdown-mode
    
  2. Install It's All Text.

  3. Set It's All Text's preferences to use Emacs. Either you can set it to the executable (e.g. /usr/bin/emacs) or the emacsclient.
  4. Add the following to your .emacs to enable markdown-mode for Stack Overflow and Stack Exchange textareas:

    ;; 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))
    

    Alternatively, if as-external-alist is defined—if M-x describe-variable RET as-external-alist doesn't fail—it will probably override your auto-mode-alist. It has a slightly different format (it's a list of pairs instead of a list of cons cells) so this will work:

    (add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" markdown-mode))
    
  5. Press the blue edit button at the bottom right side of a textarea to edit it via emacs. The blue edit button is shown in the following screenshot:

    Screenshot of the blue edit button at the bottom right side of this textarea

    In the following screenshot is an Emacs buffer in markdown-mode editing this post:

    Screenshot of an Emacs buffer in markdown-mode editing this post

  6. When you are done editing in Emacs save the buffer to send it to Firefox.

If you want this functionality for other domains you need to change the regexp above. The following recognizes Stack Exchange, Stack Overflow, Ask Ubuntu and 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))

Using markdown-mode with Org-mode

To use markdow-mode with Org-mode you can use its feature for working with source code. With it you can include blocks of markdown inside your Org-mode buffers which you can edit via markdown-mode. You can use it as follows:

  1. When in an Org-mode buffer enter <s on a newline and press Tab. This will result in

    #+begin_src 
    
    #+end_src
    
  2. Enter markdown after #+begin_src so that you have

    #+begin_src markdown
    
    #+end_src
    
  3. When inside the source block (between #+begin_src markdown and #+end_src) press C-c ' to edit the source block with markdown-mode.

  4. Edit the source block in markdown-mode.

  5. Press C-c ' to return to the Org-mode buffer and insert the edit. This can look like what the following screenshot shows:

    An Org-mode buffer editing a block of markdown code for this post