0

我想以这种方式从 RMarkdown 文件中编辑我的 R 块org-edit-special。我从jonathan leech-pepin找到了generic-edit-special ,它对html 文件中的 js、css 和 ruby​​ 做了类似的事情。我想我可以按照作者的建议对其进行调整,使其适用于我的情况,但即使是原始形式,我也无法使其工作。

我能够ges/org-edit-special从带有 js 脚本块的 html 文件运行该函数,但没有发生任何事情(没有错误,也没有新的缓冲区)。我使用此处的内部脚本示例作为此测试的 html 文件。

这是我为测试而制作的init.el:

(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
(setq package-list
    '(js2))

; activate all the packages
(package-initialize)
(load "~/.emacs.d/lisp/generic-edit-special")

; Org setup (telling org-mode to edit javascript with js2)
(push (cons "javascript" 'js2) org-src-lang-modes)
;; For html-mode

(require 'generic-edit-special)
(eval-after-load "sgml-mode" '(define-key sgml-mode-map [(control c) ?'] 'ges/org-edit-special))

我对 emacs 很陌生,通常使用 spacemacs,所以我想这只是我无法正确配置东西,但我现在显然迷路了。

我也知道polymode编辑 RMarkdown 文件,但不喜欢使用它。我更喜欢“外部代码缓冲区”方法。而且我也不能使用纯组织模式,因为我必须与不使用 Emacs 的人合作。

4

2 回答 2

1

和你一样,我更喜欢“外部代码缓冲区”,但经常需要共享 .Rmd 或其他格式。幸运的是,两者都knitr支持rmarkdownR 代码缓冲区中的标记。有关“旋转”您的 R 代码的(过时的)介绍,请参见此处

无论如何,格式基本上只是##'注释后的降价(带引号的双哈希),带有一些 yaml 头信息,如 Rmd 文件中,例如。以下可以作为纯 R 代码运行,

##' ---
##' title: "Foo"
##' output:
##'   html_document:
##'     toc: TRUE
##' author: Me
##' ---

##- r setup, include=FALSE -------------------------------------------------
library(ggplot2)
knitr::opts_chunk$set(echo = TRUE)
## /* end r setup */

##' # A header
##' a code block
##- blk1 -------------------------------------------------------------------
dat <- data.frame(x=sample(10, 10), y=runif(10))
## /* end blk1 */

##' # Another section
##' A code block w/ image
##- img,  fig.width=9, fig.height=4 ----------------------------------------
plot(y ~ x, data=dat, type='l')
## /* end sem */

##' # Next section
##' etc.

并使用 转换为 Rmd knitr::spin("<filename.R>", knit=FALSE),或使用 . 呈现为 HTML(如上所述)rmarkdown::render("<file.R>")

就个人而言,我会使用 Makefile 简化文件生成(确保这些是选项卡),例如。渲染和创建 Rmd,

foo.html: foo.R
    rscript -e "knitr::spin(\"$^\", knit=FALSE); \
    rmarkdown::render(\"$^\", \"all\")"

或者,可以使用 Emacs 中的命令进行编译等。

于 2020-02-03T00:39:43.027 回答
0

我刚刚markdown-edit-code-block从 markdown-mode 中发现了完全符合我要求的功能。

我将 .Rmd 文件的主要模式设置为,markdown-mode并在 R 块内执行它会打开一个具有ess-r-mode主要模式的间接缓冲区。(在 doom emacs 中,默认的键绑定是, '

于 2020-05-17T13:11:11.823 回答