113

在 Emacs 中打开 knitr markdown 文档时,是否对现有工具或新工具进行了语法高亮(颜色)R 代码块的修改?

我正在查看的 knitr 块是[```]包含 R 代码的三重反引号块。

编辑:到目前为止我尝试过的事情:

-带有 Emacs 23 的Ubuntu 12.04

emacs --version
GNU Emacs 23.3.1

1. 多模

https://github.com/vitoshka/polymode/issues/3

我试图让 polymode 语法高亮我的 Rmd 文件,但它抱怨“颜色”加载文件:

cd ~/.emacs.d
git clone https://github.com/vitoshka/polymode.git

在我的 .emacs 文件中:

(add-to-list 'load-path "/home/avilella/.emacs.d/polymode/")
(add-to-list 'load-path "/home/avilella/.emacs.d/polymode/modes/")

;; Require any polymode bundles that you are interested in:

(require 'poly-R)
(require 'poly-markdown)

评估缓冲区:

Cannot open load file: color

-带有 Emacs 24 的CentOS :

emacs --version
GNU Emacs 24.2.1

1.正确安装多模

打开一个 Rmd 文件,M-x polymode-minor-mode不改变语法高亮。


emacs --version
GNU Emacs 24.3.1

1.正确安装多模

打开一个 Rmd 文件,M-x poly-markdown+r-mode开始出现一些语法高亮显示,但我需要手动修改每个三勾代码块中的测试,以使其完全显示语法。

在此处输入图像描述

在此处输入图像描述

第二张图片是在 knitr 块之前键入 Return 之后。

4

2 回答 2

3

这可能会有所帮助:http ://sjp.co.nz/posts/emacs-ess-knitr/

通过 ESS 在 Emacs 中进行 Knitr 降价

于 2013-09-02T10:26:51.950 回答
2

你的问题

首先,您说您拥有 GNU Emacs 23.3.1,但在 中polymode readme.md,它显示为:

使用 Emacs 24.3.1 和 24.4.5 测试。

至于您的错误:“无法打开加载文件:颜色”,在中polymode.el,有一行:

(require 'color)

这个包在 Emacs 24 中,但它可能会在你的版本中丢失。

解决方案

  1. 升级到 Emacs 的最新(因此受支持)版本。

  2. 在保存 Emacs 材料的目录中提取polymode.zip,例如:

    ~\conf\emacs
    

并将生成的polymode-master目录更改为polymode

  1. 将此添加到您的 init 文件中(如果您在上面使用了不同的名称,请相应地更改下面的名称):

    ;; Just an Emacs personal dir containing polymode packages etc.
    (setq MY-EMACS  "~/conf/emacs") 
    
    (defun my-emacs  (subfolder)
    "Get path to personal dir + subfolder"
    (concat (expand-file-name MY-EMACS) "/" subfolder))
    
    ;; ESS Markdown
    ;; -------------
    (defun rmd-mode ()
      "ESS Markdown mode for rmd files"
      (interactive)
      (setq load-path 
        (append (list (my-emacs "polymode/") 
                  (my-emacs "polymode/modes/"))
            load-path))
      (require 'poly-R)
      (require 'poly-markdown)
      (poly-markdown+r-mode))
    
    ;; Wrap line in markdown. Comment if you don't dislike words cut in the middle
    (add-hook 'markdown-mode-hook (lambda () (visual-line-mode 1)))
    
    ;; Let you use markdown buffer easily
    (setq ess-nuke-trailing-whitespace-p nil)  
    
  2. Meta+rmd当 Rmd 文件打开或将模式设置为<!-- Local Variables: -->
    ... 享受您的生产力的巨大变化。

PS
不要忽略最后一条 elisp 行。它将允许正确保存降价。否则,当您重新打开文档时,您会遇到令人不快的意外。

致 Windows 用户的注意事项

如果您是 Linux 人,请跳过此步骤,但是,尽管问题提到了 Ubuntu,但我的回答也完全适用于 Windows Emacs。只是关于:

  • 第 2 步)您将提取polymode.zip

    %USERPROFILE%\conf\emacs
    

    如您所料,环境变量 %USERPROFILE% 包含您的用户配置文件目录的路径。如果您不确定它是什么, set USERPROFILE请在 CLI 提示符下执行。
    作为 Windows 用户,您可能习惯于将东西存储在My Documents. 在这种情况下,您的目录将是:

    %USERPROFILE%\Documents\conf\emacs
    
  • 第 3 步)如果在第 2 步)中使用了路径%USERPROFILE%\Documents\conf\emacs,请相应地更改第一行代码:

    (setq MY-EMACS  "~/conf/emacs") 
    

    到(注意斜线):

    (setq MY-EMACS  "~/Documents/conf/emacs") 
    

    在这两种情况下(有和没有“我的文档”),您可能更喜欢 Windows 风格:

    (setq MY-EMACS (substitute-in-file-name "$USERPROFILE/Documents/conf/emacs")) 
    
于 2014-12-19T20:32:19.880 回答