はじめに
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)