dired で ファイルを選択状態でエクスプローラを起動

dired でだいたいのことはできるけど、 Windows だと エクスプローラ を使って操作する必要がたまにある。dired から エクスプローラを起動できるようにしておく。/select オプションは、ファイルを選択した状態でエクスプローラを起動できるので便利。

このあたりを参考にMeadow/Emacs memo: ディレクトリ表示 ― dired など

;; ファイルを選択状態でエクスプローラを起動 (Windows)
(defun my-dired-do-exec-explorer ()
  (interactive)
  (let ((file (dired-get-filename)))
    (if (file-directory-p file)
        (setq file (file-relative-name file))
      (setq file (file-name-nondirectory file)))
    (setq file (unix-to-dos-filename file))
    (start-process "my_explorer.pl"
                   "diredfiber" "my_explorer.pl" file)))

;; Eでエクスプローラ起動
(define-key dired-mode-map "E" 'my-dired-do-exec-explorer)

my_explorer.pl

#!/usr/bin/perl
use strict;
use warnings;
use Encode;

my $file = shift;
if ( $file =~ m/"(.*)"/ ) {
    $file = $1;
}
Encode::from_to( $file, 'utf8', 'cp932' );
exec 'explorer', '/select,', $file;