Skeleton Mode がいいですねぇ。

Web で,Google の中の人がコーディングしている映像をみたんですが,
括弧の自動補完がされていました。
・・・。
かっくいいじゃん!!
しばし調べる。


ほうほう,SkeletonMode があるそうな。
参考ページ


早速 Meadow に導入してみました。
以下注意点。

  • .emacs 内に (require 'skeleton) を足す。

これを書かないと,起動直後,scratch バッファで skeleton-pair とかを評価すると,
void symbol といって怒られるので。
なぜかわからん。。。

  • make-variable-buffer-local

これしないと,グローバルに変更されている様子。
下記の,tab-width は,scratch バッファで評価すると,4 となるので
不思議。
だって,c-mode で,M-; して (local-variable-p 'tab-width) すると,t になるんだもん。
ま,lisp にしても emacs にしても,わかっていない/知らないことの方が圧倒的に
多いだろうから,なんかしらのカラクリがあるとみた。

(add-hook 'c-mode-common-hook
          '(lambda()
             ;; ...
             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
             ;; こっから
             (make-variable-buffer-local 'skeleton-pair)
             (make-variable-buffer-local 'skeleton-pair-on-word)
             (make-variable-buffer-local 'skeleton-pair-alist)
             (setq skeleton-pair-on-word t)
             (setq skeleton-pair t)
             (local-set-key (kbd "(") 'skeleton-pair-insert-maybe)
             (local-set-key (kbd "[") 'skeleton-pair-insert-maybe)
             (local-set-key (kbd "{") 'skeleton-pair-insert-maybe)
             (local-set-key (kbd "`") 'skeleton-pair-insert-maybe)
             (local-set-key (kbd "\"") 'skeleton-pair-insert-maybe)
             ;; ここまで追加
             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			 ;; ...
             ))

いやー,実は長い時間はまっていたのです。
風邪が治っていないせいか,腕の関節がいたーていたーて。
寒いんだか暑いんだかよーわからんし。


グローバルに変更しちゃえば楽なんですが,なんかこっちの方がかっこいい気がしたので。


あと,skeleton には,他に,たくさん便利機能があるみたいですが,
それはこれからのお楽しみということで。


あとあと,skeleton.el 内の,skeleton-pair-default-alist に文字化け? して
わからない行があるんだけど,あれはなんなんだろうか。

(defvar skeleton-pair-default-alist '((?( _ ?)) (?\))
                      (?[ _ ?]) (?\])
                      (?{ _ ?}) (?\})
                      (?< _ ?>) (?\>)
                      (?ォ _ ?サ) (?\サ) ;; <-- ここね。
                      (?` _ ?')))