高かった global の壁

どうもりんこです。
歯がいてーでやんす。以前歯医者にいって,削られて以来,
前歯の異常なまでの知覚過敏的なものに悩まされているわけで。
治療した晩,激歯痛に悩まされ,眠剤とかぶっこんで無理矢理寝たのです。
その後,歯医者に行ったら,歯医者の先生曰く,かなり削ったので,第2象牙質?がでていて,
それでしみるのかもしれんのこと。時間がたてばなおるかもね〜,と軽い感じ。
えぇ〜。


それから,数ヶ月たった今日。
おかしい。何かがおかしい。
悪化している気がする。モノを噛んだときに,違う痛みが発生する。
歯を削って以来,おかしな痛みに悩まされるようになった。
あと,そのしみる場所の近くをデンタルフロスで掃除すると,引っかかる。
引っかかるときは虫歯の可能性があるらしい。
しかし,レントゲン撮っても虫歯は確認できなかったのこと。
うーん。ん?
あれ? これってあの医者がや(ry。


しゃーない,近いうちにいっとくか。
歯医者金かかるからやなんだよなー。
てか,これってそもそも治療ミスなんじゃねーの?
しかも,歯石を取るとかなんとかで,歯を磨いてもらいフロスをしてもらって以来,
下の歯もたまーに痛くなるようになったんですが。
なので,熱いモノも冷たいモノもいかんのです。
ましてや,水で歯を磨いて,水で口をゆすぐなんて,あぁ恐ろしい。
まぁ,いいや。来週に,歯医者行ってみる。

ac-source-gtags で大文字小文字一緒くたっぽくしたいなぁ。

以前もいいましたが,auto-complete.el 内では,

(defun ac-gtags-candidate ()
  (ignore-errors
    (split-string (shell-command-to-string (format "global -ci %s" ac-prefix)) "\n")))

となっていますが,global のソースを確認すると,-c オプションのときには,
-i オプションは無視されます(global-5.7.5で確認)。
なので,-ci としても,case-insensitive で探してくれません。

効かぬなら,変えてしまえ,global のソースを,字余り。

前回も挑戦してあきらめたが,こりずに。
しかし,頑張ったが,挫折した。
strncasecmp, strcasecmp を使うようにしてみたけど,
global で使われている DB 内の並び順のせいか,無理っぽい。
オレの現在のテクではお手上げ。しょぼん。

それが無理なら,ac-gtags-candidate を変えてしまえ!

オレオレ ac-gtags-candidate,その名も my-ac-gtags-candidate をつくっちゃった。
昨日,寝ぼけながら書いていて全然できなくて,なぜに ac-prefix が nil になるんだ?
と目をつむって考えてたら,うとうとしてしまったので,寝た。
起きて再開したら,何故にできなかったのか不思議なくらい簡単にでけた。
でけたので,さらす。
なーに,本家のとほとんどかわらんとです。
オレオレ仕様にしただけ。
ac-ignore-case が nil でなけりゃー,ac-prefix の頭の文字を大文字にして検索しますよっと。

(require 'auto-complete)

(defface my-ac-gtags-candidate-face
  '((t (:background "lightgray" :foreground "navy")))
  "Face for my gtags candidate"
  :group 'auto-complete)

(defface my-ac-gtags-selection-face
  '((t (:background "navy" :foreground "white")))
  "Face for the my gtags selected candidate."
  :group 'auto-complete)

(defun my-ac-gtags-candidate ()
    (let ((ret nil))
      (setq ret (split-string (shell-command-to-string
                               (format "global -c %s" ac-prefix)) "\n"))
      (when ac-ignore-case
        (dolist (elt (split-string (shell-command-to-string
                                    (format "global -c %s" (upcase-initials ac-prefix))) "\n"))
          (add-to-list 'ret elt)))
      ret))

(defvar my-ac-gtags-source
  '((candidates . my-ac-gtags-candidate)
    (candidate-face . my-ac-gtags-candidate-face)
    (selection-face . my-ac-gtags-selection-face)
    (symbol . "s")))

(provide 'my-auto-complete-gtags)
;;; my-auto-complete-gtas.el ends here

SomeClass っていうのを補完したくて,けど,バッファとかにもないけど,
GTAGS にはあるっていう場合に,「so」と入力すると,
補完してくれるちゅうことです。意外に便利。クラス名の補完とか。
upcase ではなくて,upcase-initials を使っているので,その辺微妙かも。
それにまぁ,あれだ。大体 same-major-mode とか,他に何かしらの候補があるから,
あまり便利でない気も。どないやねん。
あとソートとかどうなんだろ。今は何もしてないが。

設定

auto-complete.el を require したあとで,require して,好みの色にかえるがよろし。
あと,こないだ言っていた`f'とか表示したい件ですが,あれ,自分で設定するというか,
そんな感じなんだね。へぇ。
さらに,どうもタイムラグがでるのがいやなので,ac-auto-show-menu を 0 にして,
すぐメニューを表示してもらうようにしました。

  ;; 色々略
  (require 'my-auto-complete-gtags)
  (global-auto-complete-mode t)
  (setq ac-auto-start 2)
  (setq ac-auto-show-menu 0)
  (custom-set-faces  '(my-ac-gtags-candidate-face ((t (:background "slate gray" :foreground "white"))))
                     '(my-ac-gtags-selection-face ((t (:background "dark slate blue" :foreground "white"))))
                     ;; ...)
  ;; ...

まとめ

Rsense を使ってみたいからといって,さわったこともない Ruby の勉強をしようとするのは,
なんか間違ってる気がするので,我慢した。オレは我慢もできる子。