BUW で emacs を使うための設定

【お知らせ】


<2017/09/15 追記>
オプションで紹介している「BUW で cygstart 的コマンドを使うための設定」の内容を見直しました。

<2017/09/04 追記>
「w32-symlinks を dired と連携して使うための設定」を見直し、「w32-symlinks を dired と連携して使うための設定(その2)」のリンクに置き換えました。

<2017/06/22 追記>
本設定を使って WSL 上で emacs を動かすと、VirtualBox 等の仮想環境での Linux 上で動かすものと異なり、以下のメリットがあります。
  • 軽い。
  • WSL の機能により、Linux 側から Windows をシームレスに利用することができる。(EXE の実行など。)
  • Windows 上の mozc_emacs_helper.exe を利用できることから、Windows 上の「Google 日本語入力」と連携できる。このことから「Google 日本語入力」のユーザ辞書を利用できる。
  • ウィンドウの切り替えなどの Windows ショートカットが利用できる。(Keyhac の設定と相性が良い。)

一方、以下はデメリットかと思っています。
  • VirtualBox では「共有フォルダー」の機能を使って Windows のファイルシステムにアクセスでき、NTFS シンボリックにもアクセスできるが、WSL を使った本設定では NTFS シンボリックアクセスできない。
 (どちらの方法でも、w32-symlinks.el を使って Windows ショートカットにアクセスすることはできます。)

【本題】


Bash on Ubuntu on Windows (BUW) で emacs を使うための設定です。

Windows 10 Creators Update がリリースされ、インストールされる Ubuntu が 16.04 になったことにより、インストールされる emacs も 24.5.1 になりました。
この emacs は X Windows で動作しますし、Windows 側の Google日本語入力 と連携する emacs-mozc を利用することで、日本語入力も問題なく利用できます。

以下では、この設定方法について紹介します。( 以下では、BUW で emacs を使うために推奨される設定のみを紹介しています。emacs を使うための基本的な設定は別途必要です。



1) Windows 10 Creators Update をインストールする。

2) 以下から X Window サーバソフトの VcXsrv をダウンロードし、インストール&起動する。

3) Bash on Ubuntu on Windows をインストールし、コンソールを起動する。

4) インターネットにプロキシを介して接続している場合は、.bashrc に http_proxy や https_proxy 環境変数を設定し、コンソールを再起動する。

5) locale を変更する。
$ sudo -E apt install language-pack-ja language-pack-gnome-ja
$ sudo update-locale LANG=ja_JP.UTF-8

6) emacs 等をインストールする。
$ sudo -E apt install emacs24
$ sudo -E apt install cmigemo ← 必要であれば..
※ Ubuntu 16.04 では、emacs のバージョン 24.5.1 がインストールされます。emacs 25系をインストールしたい場合は、以下をお試しください。emacs25-el も併せてインストールすることをお勧めします。
プロキシが必要な環境下では apt や add-apt-repository 実行時の sudo に -E オプションを付けてください。

7) emacs 起動時のエラーを少なくするために以下を実行する。
$ sudo -E apt install gconf2
$ sudo dbus-uuidgen --ensure

8) ~/.bashrc に以下の設定を行う。
if [ "$INSIDE_EMACS" ]; then
    TERM=eterm-color
fi

export DISPLAY=localhost:0.0

alias emacs="NO_AT_BRIDGE=1 LIBGL_ALWAYS_INDIRECT=1 emacs"
※ NO_AT_BRIDGE は emacs の起動時に出力される「WARNING **: Couldn't connect to accessibility bus: ...」というワーニングを消すために設定しています。
※ LIBGL_ALWAYS_INDIRECT は emacs の起動時に出力される「libGL error: No matching fbConfigs or visuals found / libGL error: failed to load driver: swrast」というエラーを消すために設定しています。

9) 以下から Migu 1M フォントをダウンロードして、ttf ファイルを ~/.fonts フォルダにコピーする。

※ 生成が必要ですが Ricty 系もお勧めです。

そして以下を実行する。
$ fc-cache -fv

10) ~/.emacs.d/init.el 等に以下のフォントの設定を行う。
;; デフォルト フォント
(set-face-attribute 'default nil :family "Migu 1M" :height 120)
;; プロポーショナル フォント
(set-face-attribute 'variable-pitch nil :family "Migu 1M" :height 120)
;; 等幅フォント
(set-face-attribute 'fixed-pitch nil :family "Migu 1M" :height 120)
;; ツールチップ表示フォント
(set-face-attribute 'tooltip nil :family "Migu 1M" :height 90)
※ この設定は gnupack の init.el にある設定を転記したものです。これがベストな設定方法かは分かりません..。
※ NTEmacs で Migu フォントを使う場合より、多少フォントの滲みが強いような気がします。気になる場合は、他のフォントを探してみてください。

11) さらに ~/.emacs.d/init.el 等に以下の色の設定を行う。
;; 色を設定する
(setq default-frame-alist
      (append '((background-color . "black")
                (foreground-color . "white"))
              default-frame-alist))

12) BUW のコンソールを再起動してから emacs を起動し、X Window サーバ上に表示することを確認する。

13) 以下を参考に emacs-mozc の設定を行う。



※ 以降はオプションです。

21) 以下をダウンロードし、~/.emacs.d/site-lisp 等の load 対象となるディレクトリ配下にサブディレクトリを作成し格納する。

そして以下の設定を行う。これで、find-file などで C:/ などの Windows のパスを直接利用可能となる。
(require 'windows-path)

(let ((system-type 'cygwin))
  (cl-letf (((symbol-function 'cygwin-mount-get-cygdrive-prefix)
             (lambda () "/mnt/")))
    (windows-path-activate)))
※ 以下で紹介している「w32-symlinks を dired と連携して使うための設定(その2)」を使う場合には必要な設定となります。

22) さらに以下の設定を行う。これで、dired で Windows ショートカットがシンボリックリンクのように利用可能となる。

23) さらに以下の一つ目の方の設定を行う。これで、dired で ディレクトリのシンボリックリンクを実体のパスで開くことができるようになる。

24) さらに以下の設定を行う。これで、dired が Windows のファイラーのように利用できるようになる。

25) さらに以下の設定を行う。これで、tramp の接続先の shell から Xクライアントが起動できるようになる。上記の「dired を OS と連携して使うための設定」と組み合わせると、xdg-open などを使ってリモートにあるドキュメント等が開けるようになる。

26) さらに以下の設定を行う。これで、tramp 接続環境でも動作する shell-pop のような環境を利用できるようになる。

27) さらに以下の設定を行う。これで emacs のバッファの内容を Windows の notepad を通して印刷できるようになる。

28) さらに以下の「emacs 全般で利用できる設定」の箇所にあるもの等から必要なものがあれば設定を行う。

29) 最後に以下の設定を行う。これで Windows 全体を emacs キーバインドで操作できるようになる。


<変更履歴>
  • 2017/05/23 このページを作成した。
  • 2017/06/12 emacs 起動時のエラーを抑制するため、LIBGL_ALWAYS_INDIRECT 環境変数の設定を追加した。
  • 2017/07/04 色の設定を追加した。
  • 2017/08/21 locale の設定を追加しました。
  • 2017/08/21 emacs-25 のインストールする方法を追記した。
  • 2017/08/25 21番以降の「オプション」の説明を幾つか追加した。
  • 2017/09/04 「w32-symlinks を dired と連携して使うための設定」を見直しバージョン「(その2)」のリンクに置き換えた。



添付ファイル