有没有办法在Spacemacs中使用Rmarkdown?

时间:2017-09-06 04:06:48

标签: emacs r-markdown spacemacs

我知道Emacs有一个允许在RMarkdown中编码的多代码包。但是,似乎Spacemacs仍然缺少等效的多边形层。

我一直试图将它直接安装到Spacemacs中,但没有成功。因此我的问题是:有没有办法在Spacemacs中编辑RMarkdown文件(不是普通的Emacs)。

2 个答案:

答案 0 :(得分:3)

您可以将包添加到spacemacs中,方法是将其添加到dotspacemacs-additional-packages中的.spacemacs

dotspacemacs-additional-packages '(polymode poly-R poly-noweb poly-markdown)

重新启动后,应自动安装软件包,您可能希望在dotspacemacs/user-config ()中设置其他一些选项,例如类似的东西:

(add-to-list 'auto-mode-alist '("\\.md" . poly-markdown-mode))
(add-to-list 'auto-mode-alist '("\\.Snw" . poly-noweb+r-mode))
(add-to-list 'auto-mode-alist '("\\.Rnw" . poly-noweb+r-mode))
(add-to-list 'auto-mode-alist '("\\.Rmd" . poly-markdown+r-mode))

编辑: polymode进行了返工。

答案 1 :(得分:0)

Spacemacs没有正式的polymode层,但是我在GitHub上的随机配置中发现了一些实现。这是一个对我有用的东西:

;;; packages.el --- polymode layer packages file for Spacemacs.
;;
;; Copyright (c) 2012-2016 Sylvain Benner & Contributors
;;
;; Author: Walmes Zeviani & Fernando Mayer
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; Layer retrieved from here:
;; https://github.com/MilesMcBain/spacemacs_cfg/blob/master/private/polymode/packages.el
;;
;;; Code:

(defconst polymode-packages
  '(polymode
    poly-R
    poly-markdown))

(defun polymode/init-poly-R ())

(defun polymode/init-poly-markdown ())

(defun polymode/init-polymode ()
  (use-package polymode
    :mode (("\\.Rmd"   . Rmd-mode))
    :init
    (progn
      (defun Rmd-mode ()
        "ESS Markdown mode for Rmd files"
        (interactive)
        (require 'poly-R)
        (require 'poly-markdown)
        (R-mode)
        (poly-markdown+r-mode))
      ))
  )

;;; packages.el ends here

可以使用几种方法来处理私有自定义层,但是一种简单易行的方法是...

  1. 将以上代码另存为packages.el中名为~/.emacs.d/layers/private/polymode/的文件。
  2. polymode添加到您的dotspacemacs/layers列表中,例如
(defun dotspacemacs/layers ()
  ess
  polymode
  python
  ...
  1. 重新启动Emacs,应该安装polymode软件包。

使用此方法,您不必使用(add-to-list 'auto-mode-alist...来声明.Rmd文件应使用的特定模式,因为它是在图层中定义的。我从here中检索了该特定层。我也尝试过一两个,但是它们对我没有用。