メモ:WSLでEmacs+ESSを使う準備

Emacs歴実質3日目くらいです。↓を読みながら勉強中。変なとこあればやさしく突っ込んでもらえれば...

[改訂新版]Emacs実践入門―思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

[改訂新版]Emacs実践入門―思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)

インストール

ダウンロード

GNU Emacs download - GNU Projectを見てソースをダウンロードしてくる。

wget http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-25.3.tar.xz
wget http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-25.3.tar.xz.sig

HTTPになってるので一応GPGで署名を検証しておく。

$ gpg --recv-keys 7C207910
gpg: requesting key 7C207910 from hkp server keys.gnupg.net
gpg: /home/user1/.gnupg/trustdb.gpg: trustdb created
gpg: key 7C207910: public key "Nicolas Petton <nicolas@petton.fr>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
$ gpg emacs-25.3.tar.xz.sig
gpg: assuming signed data in `emacs-25.3.tar.xz'
gpg: Signature made Tue 12 Sep 2017 05:43:53 AM DST using RSA key ID 7C207910
gpg: Good signature from "Nicolas Petton <nicolas@petton.fr>"
gpg:                 aka "Nicolas Petton <petton.nicolas@gmail.com>"
gpg:                 aka "Nicolas Petton <nicolas@foretagsplatsen.se>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 28D3 BED8 51FD F3AB 57FE  F93C 2335 87A4 7C20 7910

28D3 BED8 51FD F3AB 57FE F93C 2335 87A4 7C20 7910は公式ページに書かれているフィンガープリントと一致するので大丈夫そう。

ビルドとインストール

Windows用のX Window Serverが、XmingにしてもVcXsrvにしてもsourceforgeなのがなんとなく不安だなと思い(偏見)、とりあえずしばらくはコンソールで使ってみることにする。

参考:

tar xf emacs-25.3.tar.xz
cd emacs-25.3/

# 一時的にASLRを無効に
echo 0 | sudo dd of=/proc/sys/kernel/randomize_va_space

./configure --without-x --without-dbus
make
sudo make install

# ASLRを再度有効に
echo 2 | sudo dd of=/proc/sys/kernel/randomize_va_space

.emacs.d/init.el

キーバインディング

BackSpaceキーを押すと文字を削除できるようにする。

https://www.emacswiki.org/emacs/BackspaceKey

(define-key key-translation-map (kbd "C-h") (kbd "<DEL>"))
(define-key global-map (kbd "C-x ?") 'help-command)

レポジトリの設定とパッケージのインストール

レポジトリの追加は、marmaladeはたぶんもう使わない?

(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(package-initialize)

(setq pkgs '(helm
             company
             ess
             dracula-theme
             flycheck
             quickrun
             projectile
             magit))

(package-refresh-contents)
(dolist (pkg pkgs)
  (unless (package-installed-p pkg)
    (package-install pkg)))

custom-fileを別ファイルに

参考:Saving Customizations - GNU Emacs Manual

(setq custom-file "~/emacs.d/custom.el")
(load custom-file)

補完はcompany

特にこだわりはないけどこっちで。

(add-hook 'after-init-hook 'global-company-mode)

テーマはdracula

これもなんとなく。

draculatheme.com

(load-theme 'dracula t)

Helm

Helmはもうちょいいろいろ設定した方がよさげだけどとりあえず動く程度に。

(require 'helm-config)
(define-key global-map (kbd "M-y") 'helm-show-kill-ring)

TODO

  • magit
  • ESS
  • projectile
  • flycheck
  • quickrun
  • wgrep/agあたり...?