unify-opening 20170215.657(in MELPA)
Make everything use the same mechanism to open files

概要

特定のファイルに対してはEmacsではなくて
外部アプリケーションを使いたいことはよくあります。

たとえば、org-modeでの file: のリンクを開き方は
org-file-apps という変数で設定します。

たとえば、画像ファイルをxzgvという画像ビューワで開きたいのなら、

(add-to-list 'org-file-apps '("bmp$" . "xzgv %s"))
(add-to-list 'org-file-apps '("png$" . "xzgv %s"))
(add-to-list 'org-file-apps '("jpe?g$" . "xzgv %s"))

というエントリを加えます。

一方、diredで「!」を実行したときのデフォルトのアプリケーションは
dired-guess-shell-alist-default
dired-guess-shell-alist-user で決定されます。

helmで「Open file with default tool」というアクションを
実行するときに使うアプリケーションは
helm-external-programs-associations で設定します。

このように、パッケージごとに同じような設定をする必要があるのは無駄です。

そこで unify-opening.el はorg-modeとhelmとmu4e(メーラ)
で使う外部アプリケーションをdiredのものに統一します。

つまり、dired-guess-shell-alist-*を使うということです。

unify-opening.elはrequireしただけで挙動が変更される設定集です。

diredで使うアプリケーションといえばrunner.el(レビュー)
がありますが、これと併用することをおすすめします。

runner.elで設定してしまえば、それが使われます。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.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/")))

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

M-x package-install unify-opening

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

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

設定 150211080449.unify-opening.el(以下のコードと同一)

;;; 画像ファイルをemacsではなくて外部アプリケーションで開く場合はこの設定が必要
(require 'cl-lib)
(setq auto-mode-alist
      (cl-delete-if (lambda (x) (equal (cdr x) 'image-mode))
                    auto-mode-alist))

(require 'runner nil t)                ;インストールされているなら使う
(require 'unify-opening)

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