CygwinでEmacs Diredを使ってWindowsアプリを起動する話


はじめに

Emacs標準ファイラのDiredでWindowsアプリを起動したくなったので設定してみた

概要

既にdired-open.elというDiredからWindowsアプリでファイルを開くパッケージがリリースされているけれど、拡張子ごとに設定をしなければならないのが面倒だったので、追加パッケージ無しでWindowsの関連付けに基づいてファイルが開けるスクリプトを考えた。

環境

Windows10 Pro 64bit
Cygwin 64bit
GNU Emacs 26.3 (build 1, x86_64-pc-cygwin)

スクリプト

本体

CygwinにはWindowsコマンドプロンプトのSTARTコマンドに相当する、cygstartコマンドが存在するためこれを利用する。カーソル位置またはマークしたファイル/フォルダに対してcygstartコマンドを実行する。

;; markしたファイルに対して`cygstart`コマンドを実行する
(defun dired-do-open-with-application ()
  (interactive)
    (let ((files (dired-get-marked-files t current-prefix-arg)))
      (dired-do-shell-command "cygstart ?" nil files)))

ちなみに、MacOSの場合はcygstartの部分をopenコマンドに書き換えることで簡単に対応できる

キー割り当て

;; キーバインド
(define-key dierd-mode-map (kbd "C-c o") 'dired-do-open-with-application)