dynamic-abbreviation,dynamic-abbreviation-ja,kill-summary,(yasnippet)
より快適になりましたよ。ん? de-ja vu?
目的は,関数名補完や変数名補完。理想は,インテリセンスみたいなん。
けど,動的略語展開でがんばっているけど,いやがんばっているのは,emacs の方だ。
だけど,いろんなバッファを開いていると,補完候補がたくさんになってきて面倒。
というのが,動機。
dabbrev の対象バッファをバッファにより切り替える
これは,すごくうれしい。
けど,正規表現の `|' のエスケープではまりましたよ。
2回エスケープ?するなんて,びっくらこいたよ。
つまり,a または b なら 「a\\|b」ですよ,殿。
で,正規表現なんてほとんど知らないのに,C 関連のソースに関しては,頑張ってみたよ。
たぶん,大丈夫なはず。
ついでに,日本語対応を導入。
;; dabbrev の対象バッファをバッファにより切り替える ;; http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=dabbrev%20ignored (defvar *dabbrev-buffer-name-inclusion-list* '()) (defvar *dabbrev-buffer-name-exclusion-list* '()) (defun dabbrev-buffer-in-list-p (buffer-name buffer-name-regexps) (cond ((null buffer-name-regexps) nil) ((string-match (car buffer-name-regexps) buffer-name) t) (t (dabbrev-buffer-in-list-p buffer-name (cdr buffer-name-regexps))))) (defun dabbrev-filter-buffers (buffer-list) (let ((dabbrev-buffers nil)) (while buffer-list (if (and (dabbrev-buffer-in-list-p (buffer-name (car buffer-list)) *dabbrev-buffer-name-inclusion-list*) (not (dabbrev-buffer-in-list-p (buffer-name (car buffer-list)) *dabbrev-buffer-name-exclusion-list*))) () (setq dabbrev-buffers (cons (buffer-name (car buffer-list)) dabbrev-buffers))) (setq buffer-list (cdr buffer-list))) dabbrev-buffers)) (setq dabbrev-my-ignored-case '( ;; buffer-name include exclude ;; (例) バッファ名に scratch という文字を含んでいれば ;; texi をバッファ名に含むバッファのみを補完対象とし, ;; navi2ch や gnus をバッファ名に含むバッファは補完対象としない ;; ("scratch" ("texi") ("navi2ch" "gnus")) ("\.[chs]$\\|\.[ch]pp$\\|\.cc$\\|\.hh$" ;; for C, C++ and assembly ("\.[chs]$\\|\.[ch]pp$\\|\.cc$\\|\.hh$") ;; .c, .h, .s, .C, .H, .S, .cpp, .hpp, .cc, .hh ("\.[^chs]$\\|\.\\([^ch]p\\|.[^p]\\)p$\\|\...[^p]$\\|\.[^c]c$|\..[^c]$\\|\.[^h]h$\\|\..[^h]$")) ;上記以外のファイルは,除外対象 ("el" ("el") ()) ("texi" ("texi") ()) ("." ("^[^ ]+") ()) ;; Default )) (defadvice dabbrev-expand (around dabbrev-ignored-buffer activate) "" (if (or (eq last-command 'abbrev-expand) (eq last-command 'dabbrev-expand)) () (let ((alist dabbrev-my-ignored-case) (case-fold-search t) (command nil) (name (buffer-name (current-buffer)))) (while (and (not command) alist) (if (string-match (car (car alist)) name) (setq command (car (car alist)))) (setq alist (cdr alist))) (setq *dabbrev-buffer-name-inclusion-list* (nth 1 (assoc command dabbrev-my-ignored-case))) (setq *dabbrev-buffer-name-exclusion-list* (nth 2 (assoc command dabbrev-my-ignored-case))) (setq dabbrev-ignored-buffer-names (dabbrev-filter-buffers (buffer-list))) )) ad-do-it ) ;; 日本語でも,dynamic abbreviation を快適に。 ;; http://namazu.org/%7Etsuchiya/elisp/dabbrev-ja.el (load "dabbrev-ja")
kill-summary
M-y は,頻繁に使われているそうですが,当方,ぶっちゃけしらんかったです。
はずかしいです。でも,別にいいです。
こりゃー便利だわさ。
;; kill-summary.el ;; M-y で,kill-ring を表示し,選択,yank。使い方は,ソースファイル中にあり。 ;; http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Programs/elisp/kill-summary.el (autoload 'kill-summary "kill-summary" nil t) (global-set-key "\M-y" 'kill-summary)
minibuf を快適に
minibuf でのインクリメンタルサーチ,ほしかったんだよねぇ。
いやー,便利便利。んで,人間様は退化と。
;; minibuf のインクリメンタルサーチ ;; http://www.sodan.org/%7Eknagano/emacs/minibuf-isearch/ (require 'minibuf-isearch) ;; minibuf で,ヒストリから補完 ;; http://homepage1.nifty.com/bmonkey/emacs/elisp/mcomplete.el ;; http://www.bookshelf.jp/elc/mcomplete-history.el (require 'mcomplete) (require 'cl) (load "mcomplete-history") (turn-on-mcomplete-mode)
作者様方に,大変感謝します。
yasnippet を試してみたけど,すげー便利なのはわかったが,
私が欲しているモノとはちとちがったので,コメントアウトしておいた。
これをやっちまうと,私みたいな阿呆は,ほんとにダメ人間になってしまいそうで。
つまり,電卓的な強力さを感じてしまったんですよ。