メモ:WSLでEmacs+ESSを使う(ESS導入まで)

前回の続き。

参考資料

この辺を見ながらやります。

とりあえず補完がきくようにするまで

ESSを有効にする。補完はcompanyを使っている。

(require 'ess-site)

Rを起動するときディレクトリを尋ねてこないようにする。

;; shut up and start R
(setq ess-ask-for-ess-directory nil)

_<-に変換されるのを止める。

;; we are so young that _ no more means <-
(ess-toggle-underscore nil)

R-mode-hookでRを起動する。ウィンドウ分割とかもろもろあんまり理解できてないのでこの部分はかなり要改善。。

(defun R-mode-hooks ()
  ;; show help
  (define-key company-active-map (kbd "M-h") 'company-show-doc-buffer)
  ;; start R
  (split-window-below)
  (R))
(add-hook 'R-mode-hook 'R-mode-hooks)

ってやるととりあえず補完候補が出るようになった。Rを起動させないといけないと気づくまでがちょっと時間かかった...

f:id:yutannihilation:20180309001421p:plain

ここ数年のESSの進化

と言えるほど昔を知らないんですが(なんといってもまだEmacs歴実質4日目...)ESS関連でググると出てくる設定はもう不要になってたり、便利機能が入ってたりするみたいです。

R-modeの自動立ち上げ

拡張子を見てR-modeを立ち上げるというこういう設定。

(add-to-list 'auto-mode-alist '("\\.[rR]$" . R-mode))

これは2016年にすでにESS本体に取り込まれているので、(require 'ess-site)してるなら上の設定はもう不要なはず。

補完

companyに関しては2015年にbuilt-in supportが入っています。

auto-completeもわからないけどデフォルトでサポートされてそう(まあ、それでは足りないとかあるんだと思いますけど)

関数定義へのジャンプ

これは出来立てほやほやです。もともと、2016年にこのissueが立って、ctagsならできる? ggtags?みたいに議論してたのが、

今年の1月にこのPRがマージされていました。パッケージ開発のとき便利そう。

なぜこんなにバリバリ開発されてるの??

tidyevalをガリガリ進めるRStudio社のLionel Henryさん(RStudio社、Emacs使っててもいいんだ...自由...)と、lubridateパッケージの開発者Vitalie SpinuがESSの開発メンバーに入っているからです。 というか、私はLionelさんがEmacsやってるのを見て、圧倒的開発速度のためにはやっぱEmacsが必要なのか...??と思って興味を持ちました。

期待!