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.
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:
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
Install It's All Text.
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))
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:
In the following screenshot is an Emacs buffer in markdown-mode editing this post:
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))
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:
When in an Org-mode buffer enter <s
on a newline and press Tab. This will result in
#+begin_src
#+end_src
Enter markdown
after #+begin_src
so that you have
#+begin_src markdown
#+end_src
When inside the source block (between #+begin_src markdown
and #+end_src
) press C-c ' to edit the source block with markdown-mode.
Edit the source block in markdown-mode.
Press C-c ' to return to the Org-mode buffer and insert the edit. This can look like what the following screenshot shows:
There is markdown-mode: http://jblevins.org/projects/markdown-mode/
See http://emacswiki.org/emacs/MarkdownMode for some customization.
And there is a markdown backend for the new export engine here: http://orgmode.org/w/?p=org-mode.git;a=blob_plain;f=contrib/lisp/org-md.el;hb=HEAD
Make sure you add the contrib/lisp/
directory to your load-path
.
Then (require 'org-export)
and (require 'org-md)
.
M-x org-md-export-to-markdown RET
will export to markdown.
@N.N's answer is applicable to Chrome also, with these changes in details.
Chrome has Edit with Emacs extension, which is similar to It's all text. After installing it, you'll find further instructions from the extension options page.
There is an emacs customization group edit-server
with options, most importantly the major mode change per site is configured differently than in @N.N's answer:
(add-to-list 'edit-server-url-major-mode-alist
'("^stackoverflow" . markdown-mode))
Also, for the edit-server to work in terminal emacs, I had to disable the edit-server-new-frame
option.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With