ac-slime.el 導入メモ
どもです。
腰が痛い。痛いが,だいぶましになってきた。
姿勢を正せば椅子に座れる感じ。ちょっと痛いけど。
そうそう,auto-complete-etags で,タグ名が,SomeClass::func といった
場合に,ドキュメントが表示されかったり,複数のドキュメントを1つ見つけた後,
2つ目を探しに行ってエラーになったら,全部エラーになったりといったバグを修正したっす。
これで,QObject::connect とかのシグニチャを表示できるようになったっす。
なったが,関数の引数リスト内で,#ifdef とか使われているから,表示がぐっちゃになるっす。
こういう場合はどうしよっかなぁーとかっす。ifdef とかあったら切り捨て御免にするっす?
そうなってくると,eldoc だっけ? がプリプロセッサを走らせてからシグニチャを表示する,
というのに納得がいくっす。ん? プリプロセッサに通したファイルからタグファイルを作成して,
補完とかかっす? いや,ダメだ。たぶんぐちゃぐちゃになるっす。うーん。悩ましいっす。
ac-slime.el を導入したけど,少しハマッタのでメモ。
基本的に,
http://modern-cl.blogspot.com/2011/04/3-slime.html
に書いてあるとおりでオッケー牧場なはず。
なんか前も書いた記憶があるぞ。
でも,なぜか ac-souce-slime-simple から補完されない。
そもそも,ac-source-slime-simple-candidates が呼ばれてない。
その後色々ためしてみたところ,ac-sources の先頭に ac-source-slime-simple
がある場合には,補完が効く。そうでない場合は,ac-source-slime-simple から
補完されないということが解った。
原因はわからん。
ついでなので,設定を晒しておきます。
環境は,Windows XP SP3, Cygwin, NTEmacs 23.2.1 どえす。
(defun my-lisp-mode-hook-func () (interactive) (define-key lisp-mode-map "`" 'self-insert-command) (define-key lisp-mode-map "\C-c\C-i" 'auto-complete) (slime-mode t) (show-paren-mode 1) (when (require 'auto-complete nil t) (require 'ac-slime nil t) (setq ac-sources '(ac-source-slime-simple ac-source-words-in-same-mode-buffers)) (auto-complete-mode t))) (add-hook 'lisp-mode-hook 'my-lisp-mode-hook-func) (require 'slime) (define-key slime-mode-map "\C-c\C-i" 'auto-complete) (require 'ac-slime) (add-hook 'slime-mode-hook 'set-up-slime-ac) (add-hook 'slime-repl-mode-hook 'set-up-slime-ac) (slime-setup '(slime-repl)) (setq common-lisp-hyperspec-root "file:///cygdrive/e/cygwin/home/whitypig/doc/hyperspec/Hyperspec/" common-lisp-hyperspec-symbol-table "file:///cygdrive/e/cygwin/home/whitypig/doc/hyperspec/Hyperspec/Data/Map_Sym.txt") ;; (ad-deactivate 'common-lisp-hyperspec) ;; (ad-remove-advice 'common-lisp-hyperspec 'around 'hyperspec-lookup-w3m) ;; 以下は,どっかのサイトにあったのをコピーしてきたもの。 ;; 感謝感謝です。 (setq browse-url-browser-function #'w3m-browse-url) (defadvice common-lisp-hyperspec (around hyperspec-lookup-w3m () activate) (let* ((window-configuration (current-window-configuration)) (w3m-pop-up-windows nil) (browse-url-browser-function (lambda (url new-window) (other-window 1) (w3m-browse-url url nil) (let ((hs-map (copy-keymap w3m-mode-map))) (define-key hs-map (kbd "q") `(lambda () (interactive) (kill-buffer nil) (set-window-configuration ,window-configuration))) (use-local-map hs-map))))) ad-do-it))