最近、私が最近非常に頻繁に使用するコードR
でのパイプ演算子%>%
またはthen
演算子のスマートな導入を目撃しました。これは、ESSの最新バージョンですでに実装されているのでしょうか。そうでない場合でも、そのelisp
ための関数を作成するコードを考え出すことは問題になりません。これを実装して、その演算子%>%
を出力してから、インデントされた新しい行にジャンプするようにする必要があります。
MWE
library(ggplot2)
library(dplyr)
diamonds %>%
filter(cut=="Ideal") %>%
ggplot(aes(price)) +
geom_histogram() +
facet_wrap (~ color)
私のelispトライアル-で.init.el
または.emacs
ファイル:
(defun then_R_operator ()
"%>% operator or 'then' pipe operator"
(interactive)
(insert " %>%") ; note the space before the first %
(reindent-then-newline-and-indent))
(global-set-key (kbd "C-%") 'then_R_operator)
動作しますが、何か問題があるかどうか、またはそれを改善するための提案(elispの初心者)があるかどうかを確認したいと思います。これをESS
モードのみに制限する方法は?
メモの
フォントロックは、ESSメニューから%>%
有効にすることで実行できることに気付きましたess-fl-keyword:operators
。
ありがとう!2つの違いは何ですか:
—
博士号
inferior...
とess-mode...
?
ess-mode
.R
ファイルなどの編集時に自分自身をアクティブにします。Emacs内でinferior-ess-mode
対話型R
プロセスを実行するときにアクティブ化されます(つまり、R
コマンドを使用するか、C-c C-z
と呼び出しますess-switch-to-inferior-or-script-buffer
)。
@undostresありがとう。これでこの演算子のキーを定義したい場合、
—
博士号
inferior...
これにより、Emacs内にあるインタラクティブなRコンソールでそれを使用できますか?はいの場合、ess-mode
との両方にキーを定義する方が良いと思いますinferior
よね?
@doctorateはい。
—
2015
(just-one-space 1)
パイプの前にあるスペース文字に注意します。を使用してキーを設定しますess-mode-map
(適切にはinferior-ess-mode-map
)(define-key ess-mode-map (kbd "C-%") 'then_R_operator)
。