■ Linux の Emacs で利用できる設定


【本題】


VirtualBox 上の Ubuntu から Windows Subsystem for Linux(WSL)を経由して Windows 環境にアクセスするための設定(戦略3)です。

戦略の説明は、次のページを参照ください。

1) 次のページを参考にして Emacs on Ubuntu on VirtualBox の環境を構築する。((戦略1)の設定を行っていれば不要)

2) VirtualBox の「設定」->「共有フォルダー」の機能を使って、Ubuntu から Windows のドライブを参照できるように設定する。((戦略2)の設定を行っていれば不要)

※ 共有フォルダーにアクセスするには権限設定が必要です。
※ 設定後は仮想マシンの再起動が必要です。

3) 次の設定を行う。((戦略2)の設定を行っていれば不要)
$ sudo ln -s /media/sf_C_DRIVE /mnt/c
※ 「共有フォルダー」の機能で C ドライブ以外の設定も行った場合は、上記と同様の設定を行ってください。

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

そして以下の設定を行う。
(require 'cl-lib)
(require 'windows-path)

(let ((system-type 'cygwin))
  (cl-letf (((symbol-function 'cygwin-mount-get-cygdrive-prefix)
             (lambda () "/mnt/")))
    (windows-path-activate)))

6) さらに次のページにある一つ目の設定を行う。

7) さらに以下の設定を行う。NTFS シンボリックリンクも辿るために必要な設定となります。
(defun ad-dired-get-file-for-visit-2 (orig-fun &rest args)
  (if current-prefix-arg
      (cl-letf (((symbol-function 'file-exists-p-original)
                 (symbol-function 'file-exists-p))
                ((symbol-function 'file-exists-p)
                 (lambda (filename)
                   (file-exists-p-original (ad-dired-get-file-for-visit filename)))))
        (apply orig-fun args))
    (apply orig-fun args)))

(advice-add 'dired-get-file-for-visit :around #'ad-dired-get-file-for-visit-2)
上記の設定は、noflet package を使うことで、以下のとおりに簡素に書き換えることができます。(this-fn が使えるのがミソです。)
(参考) http://emacs.rubikitch.com/noflet/
(require 'noflet)

(defun ad-dired-get-file-for-visit-2 (orig-fun &rest args)
  (if current-prefix-arg
      (noflet ((file-exists-p (filename)
                              (funcall this-fn (ad-dired-get-file-for-visit filename))))
        (apply orig-fun args))
    (apply orig-fun args)))

(advice-add 'dired-get-file-for-visit :around #'ad-dired-get-file-for-visit-2)

8) 以上まで設定したら Emacs を再起動し、設定を有効にする。

9) Emacs の dired で c:/ と入力することにより、/mnt/c へのアクセスとなることを確認する。

10) Emacs で /mnt 以下にあるドライブに dired でアクセスし、シンボリックリンクの上にカーソルを合わせた後、 universal-argument(C-u)を付けてから fキー や oキー を押すことで、シンボリックリンクの先のパスに移動できることを確認する。


<変更履歴>
  • 2016/10/01 このページを作成した。


最終更新:2019年11月03日 09:39