Emacs で全角スペース/タブ文字を可視化

どちらもソースコード中にあると気になるので、このように設定して一目で分かるようにしています。

(setq whitespace-style
      '(tabs tab-mark spaces space-mark))
(setq whitespace-space-regexp "\\(\x3000+\\)")
(setq whitespace-display-mappings
      '((space-mark ?\x3000 [?\□])
        (tab-mark   ?\t   [?\xBB ?\t])
        ))
(require 'whitespace)
(global-whitespace-mode 1)
(set-face-foreground 'whitespace-space "LightSlateGray")
(set-face-background 'whitespace-space "DarkSlateGray")
(set-face-foreground 'whitespace-tab "LightSlateGray")
(set-face-background 'whitespace-tab "DarkSlateGray")

表示例:

dabbrev-expand-multiple による動的略語展開

この週末に tokyo-emacs なんていう勉強会があったんですね。完全にノーチェックでした。もし次回があったら参加したいのですが、あるのかな… (追記:あるみたいです。次回は絶対参加しよう。)

せっかくなので、 Emacs についてなんか書いてみることにします。僕は単語の補完に dabbrev-expand-multiple を愛用しています。動的略語展開の候補を tooltip もしくはインラインで複数表示してくれるものです。単語を途中まで入力して、 M-/ を押すと補完してくれるのですが、ここでさらに / を押すと他の候補一覧がツールチップで表示されます。で、それらの候補は SKK 風に a,s,d,f,g で選択することができます。

こういうのは実際に使ってみないと便利さがなかなか伝わらないのですが、おすすめ。

;; dabbrev-expand-multiple
(require 'dabbrev-expand-multiple)
(global-set-key "\M-/" 'dabbrev-expand-multiple)

;; 補完候補を一度に5つにする
(setq dabbrev-expand-multiple-select-keys '("a" "s" "d" "f" "g"))
;; 複数候補表示に移るキーに / を足す
(add-to-list 'dabbrev-expand-multiple-multi-selection-keys "/")
;; 複数候補表示時に次の候補表示に使用するキーに n を足す
(add-to-list 'dabbrev-expand-multiple-next-keys "n")
;; 複数候補表示時に前の候補表示に使用するキーに p を足す
(add-to-list 'dabbrev-expand-multiple-previous-keys "p")
;; ツールチップを表示する秒数
(setq dabbrev-expand-multiple-tooltip-timeout 2000)
;; 10秒で消えるように設定する
(setq dabbrev-expand-multiple-tooltip-timeout 10)
;; 最初に展開した文字列に highlight をかける.
(setq dabbrev-expand-multiple-highlight-face 'highlight)
;; インライン表示のときに使用するフェイス.
(setq dabbrev-expand-multiple-inline-show-face 'underline)
;; インライン表示の見た目の変更 (アンダーラインをなしにする)
(setq dabbrev-expand-multiple-inline-show-face nil)

関連リンク:
» anything.el が手放せなくなった
» emacs-snapshot-gtk

IIIMECF + ATOK X3 を Emacs の日本語入力に使う

僕は、emacs-snapshot-gtk をメインのエディタとして使っています。そのままでも日本語入力はできるのですが、入力時のフォントがどうしても気に入らないので、 Emacs では IIIMECF を使って、IIIMサーバと直接通信するようにしています。

インストール方法

IIIMECF-0.75.tar.gz (2007/1/10)
$ tar zxvf IIIMECF-0.75.tar.gz
$ cd iiimecf
$ emacs -q --no-site-file -batch -l iiimcf-comp.el
# mkdir /usr/share/emacs/site-lisp/IIIMECF
# cp lisp/* /usr/share/emacs/site-lisp/IIIMECF

.emacs の設定

UNIXソケットのデフォルトは、 /tmp/.iiim-username/:1.0 のようですが、自分の場合は :0.0 だったので次のように設定しています。これで Shift+space で IIIMECF 経由で ATOK が利用可能です。

;; iiimecf
(setq iiimcf-server-control-hostlist (list
          (concat "/tmp/.iiim-" (user-login-name) "/:0.0")))
(setq iiimcf-server-control-default-language "ja")
(setq iiimcf-server-control-default-input-method "atokx3")
(setq default-input-method 'iiim-server-control)
(require 'iiimcf-sc)
(global-set-key [?\S-\ ] 'toggle-input-method)

GNOMEランチャの設定

emacs 起動時の環境変数に XMODIFIERS="@im=none" を渡すようにします。GNOMEのランチャから起動する場合は、次のように設定すればOKです。

env XMODIFIERS="@im=none" emacs-snapshot-gtk