For the past year or so, I’ve been using the amazingly full-featured Emacs Speaks Statistics package for my R coding. Though RStudio has a nice GUI and additional features, the benefit of being able to run ESS on a server1 through the terminal is a killer feature, as well as the fact that I can leverage all the other available emacs tools (such as emacs shell).
But a major frustration (and I’m not alone) has been that I’ve been unable to use ESS with Rmarkdown files. Thus, I’ve been reduced to the hack of coding a .R file, and symbolically linking a .Rmd file to it that I could knit.
As recommended on SO, I finally looked into using polymode. Lo-and-behold, it works!
Getting it to work wasn’t easy though, so here are my steps.
Polymode requires emacs 24.3 (documented in this issue. For Ubuntu, this can be installed using a PPA as described here
Install markdown-mode.el from Ubuntu package manager
sudo apt-get install emacs-goodies-el
Add the following code to .emacs file to associate markdown-mode with .text, .markdown and .md files
(autoload ‘markdown-mode “markdown-mode” “Major mode for editing Markdown files” t) (add-to-list ’auto-mode-alist’(“\.text\‘" . markdown-mode)) (add-to-list ’auto-mode-alist’(”\.markdown\‘" . markdown-mode)) (add-to-list ’auto-mode-alist’(“\.md\’” . markdown-mode))
Restart emacs and open .md file. Confirm that markdown-mode works by trying one of the questionably-useful2 commands:
C-c C-a l inserts an inline link of form [text](url)C-c C-i i inserts markup for inline imageC-c C-s b inserts blockquote for active region (nice!!)C-c C-s p inserts code block for active region (nice!!)Clone “polymode” from github repository.
git clone https://github.com/vitoshka/polymode.git
Add “polymode” and “polymode/modes” directories to emacs path in your .emacs:
(setq load-path (append ’(“/home/jsg/.emacs.d/polymode/” “/home/jsg/.emacs.d/polymode/modes”) load-path))
Require polymode bundles in your .emacs
(require ’poly-R) (require ’poly-markdown)
Restart emacs and open a .Rmd file. All the beauty of ESS should now work!
A tangentially-related but useful tip: if you’re working on a remote server via ssh, to get plots to appear interactively on local desktop (when working on server), use:
ssh -X -t user@server

This work is licensed under a Creative Commons Attribution 4.0 International License.