anything-c-lisp-complete-symbolで候補の生成にmapatomsを使う
元ネタhttp://d.hatena.ne.jp/IMAKADO/20080326/1206613916
all-completionsはobarrayからリンク辿ってシンボルの探索をしなかったように見えたので、より多くのシンボルを候補に入れるためにmapatomsを使うように anything-c-lisp-complete-symbol-get-cands を弄る
(when (functionp 'anything-c-lisp-complete-symbol-get-cands) (defun anything-c-lisp-complete-symbol-get-cands () (multiple-value-setq (anything-c-lisp-complete-symbol-initial-input beg end type) (anything-c-lisp-complete-symbol-get-cmp-context)) (let (ret) (cond ((and (eq type 'function) (not anything-c-lisp-complete-symbol-all-type)) (all-completions anything-c-lisp-complete-symbol-initial-input obarray 'functionp) (mapatoms (lambda (e) (let ((name (symbol-name e))) (when (and (functionp e) (string-match anything-c-lisp-complete-symbol-initial-input name)) (push name ret)))) obarray)) (t (mapatoms (lambda (e) (let ((name (symbol-name e))) (when (string-match anything-c-lisp-complete-symbol-initial-input name) (push name ret)))) obarray))) ret)) (setq anything-c-source-lisp-complete-symbol (cons '(action . (("Insert" . (lambda (candidate) (delete-backward-char (length anything-c-lisp-complete-symbol-initial-input)) (insert candidate))) ("describe" . (lambda (s) (let* ((sym (intern-soft s)) (fun (if (fboundp sym) 'describe-function 'describe-variable))) (funcall fun sym)))) ("find" . (lambda (s) (let* ((sym (intern-soft s)) (fun (if (fboundp sym) 'find-function 'find-variable))) (funcall fun sym)))))) ;; (assq-delete-all 'action anything-c-source-lisp-complete-symbol))))
ついでにfind-*を追加したアクションに差し変えてみる。このようなalistをペアごと差し替える関数もあるはずなんだけどな‥emacs-clにはあ「った」のかな?
Infoからシンボルの検索をするようなアクションも欲しいけどInfo.elは読む気がしない。