アーティストモードでメリークリスマス

この日記はEmacs Advent calender の21日目 です。19日はmyuheさんの「連続操作を素敵にするsmartrep.el作った」でした。前日はid:ken_mさんのEmacs で Excel のオートフィルのようなことをするでした。明日はid:khikerさんです。



メリークリスマスといってもartist-modeの話。四角や丸を文字で書くという picture-mode の上位版なのだが、その中でも特に試す価値があるのが、スプレー文字のspray-can 。( M-x artist-mode してからC-c C-a S)

いわゆるドロー系ソフトの感覚で右ドラッグで線を引き、 shift+右クリックドラッグでスプレーのサイズを変更できる。

これで書道アーティスト気分を味わえる。ただしスプレーなので重ね書きしているのが書道としては反則だが・・・

出来ることなら、でかいディスプレーに黒背景 Emacs と小さいフォント(shift+右クリックで変更)を用意して書くと、次のようなホワイトクリスマス気分を味わう事もできる。



ちなみにここでは、こだわりのスプレー缶を使用している。

(setq artist-spray-chars '(?\s ?. ?, ?: ?; ?- ?~ ?_ ?+ ?o ?i ?C ?O ?Y ?D ?Q ?X ?W ?% ?* ?# ?*))

サンタの服を赤色に

例えばスプレー缶をもう一系列用意して、

(setq artist-spray-chars '(?\s ?. ?' ?c ?r ?e ?d ?l ?= ?A ?H ?R ?E ?@))
(font-lock-add-keywords 'picture-mode
'(("['credl=AHRE@]" 0 (emacs-wiki-font-tag-face "#ff2222" 0) append)))

などとして、赤色フェースを作って、サンタの服をもう一度スプレーしなおして、色付けしてみる。と思ったけど、先ほど作ったドットをまず消さなければならない。

消しスプレー

artist-spray-chars は最初がスペースで次がドットで、そのあと文字が続く。徐々に濃くなるのがポイント。これを逆に並べれば、色を消すためのスプレーが出来る。問題なのは、artist-spray-chars に無い文字があった場合、artist-spray-new-char で上書きするので、これを設定しておかなければならない。

(setq artist-spray-chars (reverse artist-spray-chars))
(setq artist-spray-new-char ?\s)

完成「Emacs でやることに意義がある」

服の部分を消して、赤色スプレー缶で服を塗りなおしたら、完成。

ここまでするなら、M-x tetris の色付けのように background face を塗りたくって文字を1文字1色対応を作って、本気の色塗りすればいいじゃないかという話もあるけど、そこまでするなら「ペイントソフトでいいじゃん」という話になるので、今回は見送った。お暇な人はぜひ。

ちなみに、 XEmacs ではなく、実は、Meadow3・・・