dired-launch 20170409.1923(in MELPA)
Use dired as a launcher

概要

dired-launch.elはdiredからファイルに関連付けられたアプリケーションを起動するマイナーモード、M-x dired-launch-modeを提供します。
このマイナーモードを有効にしたら、dired上で「J」を押せば現在のファイル(マークされたファイル全体)に関連付けられたアプリケーションを起動します。

同類のdired-open.elやopenwith.elやcrux.elはファイルをEmacsで開く代わりに関連付けられたアプリケーションを起動します。
対してdired-launch.elはRETではなくて別のキーに割り当てられているという特徴があります。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてdired-launchを使う方は
以下のコマンドを実行します。

M-x package-install dired-launch

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name dired-launch

設定の注意

Mac OS XとWindows(ネイティブ)はopenコマンドを使います。

Cygwinは現時点では対応していませんが、dired-launch-commandを書き換えることで対応できます。
実機がないので未確認ですが、こうでしょうか?

(setq dired-launch-mailcap-friend '("env" "cygstart"))
(defun dired-launch-command ()
  "Attempt to launch appropriate executables on marked files in the current dired buffer."
  (interactive)
  (save-window-excursion
    (dired-launch-homebrew
     (dired-get-marked-files t current-prefix-arg)
     (first dired-launch-mailcap-friend))))

GNU/LinuxではPerlスクリプトのmimeopenが使われるようにデフォルトでは設定されています。
「J」を押したとき、mimeopen -n FILENAME が実行されるため、mimeopenで一番上に設定されているアプリケーションが起動します。
もし一番上に設定されているアプリケーションが動かない場合は動作しないので注意してください。
そういう場合は代わりにxdg-openコマンドを使えばいいです。

FreeBSD等ではGNU/Linuxと同じように動くと思います。
ただ、元のコードはGNU/Linuxの場合に限定されていますので、dired-launch-commandを上記と同じように再定義します。

(defun dired-launch-command ()
  "Attempt to launch appropriate executables on marked files in the current dired buffer."
  (interactive)
  (save-window-excursion
    (dired-launch-homebrew
     (dired-get-marked-files t current-prefix-arg)
     (first dired-launch-mailcap-friend))))

設定 161007103716.dired-launch.el(以下のコードと同一)

;;; mimeopenが使えない人はxdg-openで代用
(setq dired-launch-mailcap-friend '("env" "xdg-open"))
;;; これでdired-launch-modeが有効になり[J]が使える
(dired-launch-enable)

実行方法

$ wget http://rubikitch.com/f/161007103716.dired-launch.el
$ emacs -Q -f package-initialize -l 161007103716.dired-launch.el

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。