X 用 FSF Emacs の背景拡張非公式パッチです。
Emacs-BGEX patch を適用すると背景に画像や色を指定できるようになります。
フレーム単位ではなく、バッファごとに異なる背景を指定することもできます。
presentation_bgex_20080308_0_2.mp4 demo movie (15.6Mbytes)
| Emacs version | patch (sha1sum) | 備考 |
|---|---|---|
| Emacs-23 bzr trunk | patch-bgex_20100106_0-bzr-emacs-trunk.tar.bz2 (sha1sum:9cf0fb4737c72d31c8a636316c6507cae25aa846) | 2010年2月1日(月) に動作確認。 |
| Emacs-23 CVS HEAD 20091117 より前 | patch-bgex_20091021_0-emacs-cvshead.tar.bz2 (sha1sum:6ef7d08243d9f5e7b60527cd52910baf82baa48e) | 2009年11月17日(火) に動作確認。 |
| Emacs-23 CVS HEAD 20091117 以降 | patch-bgex_20091123_1-emacs-cvshead.tar.bz2 (sha1sum:f53dc292f07510737c9c3def5c73ce25d22aef70) | 2009年12月23日(水) に動作確認。 |
| Emacs-22.3 | patch-bgex_20060712_0-emacs-cvshead.tar.bz2 (sha1sum:be98ddae75428933d7c96f4c00e319099b6f950f) | |
| Emacs-21.4 | patch-bgex_20050921_0-emacs-21.4.tar.bz2 (sha1sum:f91e5354bc8ad785a885e0c61a3f9b33f7f4ea6e) | 21.3 にも適用できます。 |
Emacs-21.4 と bzr trunk に対応しています。
設定や概念などややこしいこともありますので、何かありましたら wac@umiushi.org へのメイルや 電言板 までお気軽にどうぞ。
バッファごとに背景が指定できると、バッファの意味や属性を modeline だけではなく背景色や画像で表現することができます。
その他にも例えば、
などといった応用が考えられます。
っていうか楽しいじゃん。
変更点は以下のとおりです。
この版から「--enable-font-backend 対応パッチ」は必要ありません。
描画アルゴリズムの改良により、色付きの領域を背景色の影響を受けた色をもつ画像で表現するモードで大きな背景画像の描画が高速になりました。以下のような設定で list-colors-display を実行しても実用的な速度になります。
(bgex-set-image-default "~/background_1600x1200.jpg" t)
画像をクリックすると大きな画像を表示します。
Emacs-BGEX patch は以下の環境で動作確認しています。
| X サーバ名 | OS | 備考 |
|---|---|---|
| X.org@Linux | Linux(amd64) | |
| X11@Mac | MacOSX(x86) | |
| X.org@Linux | Linux(x86) | |
| XFree86@Linux | Linux(x86) | 最近はテストしていません。 |
| XFree86@Linux | Solaris9(UltraSPARC) | 最近はテストしていません。 |
| XFree86@Cygwin | Linux(x86) | 最近はテストしていません。 |
| ASTEC-X@WindowsXP | Linux(x86) | 最近はテストしていません。 |
作者は以下 5 台の機械で毎日使用しています。 Emacs は bzr trunk です。
| マシン名 | OS | X サーバ | CPU | 表示先 | Emacs-BGEX patch バージョン |
|---|---|---|---|---|---|
| lifeforce | gentoo linux | X.org | Athlon64 X2 3800+ | localhost(GeForce 7800GT) | 20100106_0 |
| salamander | gentoo linux | X.org | Athlon X2 4850e | localhost(Radeon HD 3200) | 20100106_0 |
| falsion | MacOSX | X11 | Core Duo | localhost(GMA950) | 20100106_0 |
| skykid | gentoo linux | - | Athlon X2 4850e | X@(lifeforce on B-flets(100M), salamander or falsion) | 20100106_0 |
| aleste | gentoo linux | - | Atom N270 | X@(lifeforce on B-flets(100M), salamander or falsion) | 20100106_0 |
次のような手順で導入します。
Emacs のディレクトリ src/ に移動しパッチを当てます。 CVS 版ならば
$ cd emacs/src $ patch < patch-bgex_20060712_0-emacs-cvshead
のように入力します。
Emacs-21.4 も同様に
$ cd emacs-21.4/src $ patch < patch-bgex_20050921_0-emacs-21.4
と入力します。
load-path に含まれる場所へ bgex.el を置き、 .emacs に
;; Emacs-BGEX patch (require 'bgex)
のように書いておきます。
XEmacs の背景画像機能と似ています。 (boundp 'bgex-exist-p) で、 Emacs-BGEX patch が組み込まれているかどうかを調べることができます。
(when (boundp 'bgex-exist-p) (bgex-set-image-default "~/.Emacs22/background.xpm"))
このとき以下のような表示になります。
(when (boundp 'bgex-exist-p) (bgex-set-image-default "~/.Emacs22/background.xpm" t))
このとき以下のような表示になります。このモードは CPU とネットワークリソースを大量に消費します。色の計算式は SRC * DST / factor です 。
(bgex-set-color "HTML" 'bgex-identifier-type-major-mode '(60000 40000 40000) t)
(bgex-set-color "*scratch*" 'bgex-identifier-type-buffer-name "skyblue")
(bgex-set-image "*scratch*" 'bgex-identifier-type-buffer-name "~/tmp/bg.jpg")
(bgex-destroy-all)
(when (boundp 'bgex-exist-p) (bgex-set-image-default "~/.Emacs22/.emacs22_back.xpm" t) (bgex-set-image "svn-status" 'bgex-identifier-type-major-mode "~/.Emacs22/w-cork12.jpg" t) (bgex-set-color "*YaDEV*glmm2-COMPILE*" 'bgex-identifier-type-buffer-name '(60000 50000 40000) t) (bgex-set-image "YaDEV-INTERFACE" 'bgex-identifier-type-major-mode "~/.Emacs22/w-surface04.jpg" t) (bgex-set-image "Buffer Menu" 'bgex-identifier-type-major-mode "~/.Emacs22/w-ca01.jpg" t) (bgex-set-color "Dired by name" 'bgex-identifier-type-major-mode '(60000 40000 40000) t) (bgex-set-color "Dired by date" 'bgex-identifier-type-major-mode '(40000 60000 40000) t) (bgex-set-image "C" 'bgex-identifier-type-major-mode "~/.Emacs22/w-ca05.jpg" t) (bgex-set-image "*scratch*" 'bgex-identifier-type-buffer-name "~/.Emacs22/w-sptit18.png" t))