.Rnw ファイルを操作する場合、ess を使用する emacs は R コード ブロックを紫色で強調表示します。これは素晴らしいことですが、私が抱えている問題は R コードの後です。すべてがまだ紫色です。
後でRコードを追加すると消えると言う人もいますが、私にはうまくいきませんでした。
例えば、
This is some text
<<>>=
This is some R-code, its in purple
@
This is some more text, but its still in purple!
ここに私の.emacsファイルがあります
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq TeX-PDF-mode t)
(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(require 'ess-site)
(require 'whitespace)
(setq whitespace-style '(face lines-tail))
(setq backup-by-copying t
backup-directory-alist '(("." . "~/.emacsBkups"))
delete-old-versions t
kept-new-versions 5
kept-old-versions 2
version-control t)
;; does not use white-space mode in latex-mode
(define-global-minor-mode white-space-no-latex-mode whitespace-mode
(lambda ()
(when (not (memq major-mode
(list 'latex-mode)))
(whitespace-mode))))
(white-space-no-latex-mode)
(ess-toggle-underscore nil)
(setq TeX-view-program-list '(("Evince" "evince --page-index=%(outpage) %o")))
(setq TeX-view-program-selection '((output-pdf "Evince")))
;; Make TeX and RefTex aware of Snw and Rnw files
(setq reftex-file-extensions
'(("Snw" "Rnw" "nw" "tex" ".tex" ".ltx") ("bib" ".bib")))
(setq TeX-file-extensions
'("Snw" "Rnw" "nw" "tex" "sty" "cls" "ltx" "texi" "texinfo"))
;; Lets you do 'C-c C-c Sweave' from your Rnw file
(defun emacsmate-add-Sweave ()
(add-to-list 'TeX-command-list
'("Sweave" "R CMD Sweave %s"
TeX-run-command nil (latex-mode) :help "Run Sweave") t)
(add-to-list 'TeX-command-list
'("LatexSweave" "%l %(mode) %s"
TeX-run-TeX nil (latex-mode) :help "Run Latex after Sweave") t)
(setq TeX-command-default "Sweave"))
(add-hook 'Rnw-mode-hook 'emacsmate-add-Sweave)
私の .emacs ファイルと関係があると思います。しかし、私は、競合がどこで起こっているのかを理解するのに十分なほどLispについて知りません...
編集犯人を見つけました...問題は、Rコードチャンク内でアンダースコアを使用している場合にのみ発生します。「$ が挿入されていません」というエラーが表示され、R コードの「_」を指しています。これが R コードであり、無視する必要があることを emacs に伝えるにはどうすればよいですか?