auto-completeをforkしてみた

http://github.com/buzztaiki/auto-complete

とりあえずの目標は

  • 候補が多いときにanythingで補完する機能のサポート
  • 個人的に使いそうなsourceの追加

あたりで。

追記

tomoya 元々、anything による絞り込みは ac-anything.el というのがあったけど、開発版では pulldown.el を使うようになったので、動作しない。http://d.hatena.ne.jp/rubikitch/20090210/auto_complete_anything 2009/11/11

あー、やっぱりあったのか。ある程度作っちゃったけど名前もかぶるし、ac-anythingを元にするかなぁ。

posn-at-point

posn-at-pointとposn-col-rowを使うと画面で表示されてるcolとかrowがとれるんだけどクソ重い。
vline.elをorgとかoutlineみたいにinvisible propertyがあっても大丈夫にするのに使おうと思ってたんだけど、これじゃ使い物にならないかもしれない。
next-single-char-property-changeとかでなんとかなるかなぁ。org対応させたいなぁ。

vline.elを更新したよ。

ものすごく久しぶりに。変更点は以下。

  • window幅を越えて行末を広げないように
  • 物理行(visual-line)のハイライトに対応。

ものは EmacsWikiからどぞ。
http://www.emacswiki.org/emacs/download/vline.el

この手のことをやるときは posn-at-point とその周辺関数が便利だった。

emacsの継続行の扱い

vlineで継続行まわりを変えようとしてて微妙にはまってるんでメモ。
# 行末処理といってもlonglinesとかvisual-line-modeで日本語を扱おうとかそういう話じゃないです。そっちもやりたいけど禁則まわりとかfill.elみてもようわからんです。むずかしい。


で、以下めも。

overflow-newline-into-fringe が non-nil だと

  • 行の最後が改行で改行だけはみでる場合
  • ちょうどwindowの幅と行のカラム数が一緒の場合

のどっちかの場合にカーソルが fringe にめりこむ。

(with-current-buffer (get-buffer-create "*hoge*")
  (display-buffer (current-buffer))
  (let ((w (get-buffer-window (current-buffer)))I)
    (erase-buffer)
    (setq truncate-lines nil)
    (save-excursion
      (insert (make-string (window-width w) ?x)))
    (set-window-point w (line-end-position))))

はみでた直後の文字が全角文字で、はみでる前の行の半角での文字数がwindowsの幅-1の場合に、表示上のカラムと current-column がずれる(これって前からだったかな?前は違ったような)。

(with-current-buffer (get-buffer-create "*hoge*")
  (display-buffer (current-buffer))
  (let ((w (get-buffer-window (current-buffer)))I)
    (erase-buffer)
    (setq truncate-lines nil)
    (save-excursion
      (insert (make-string (1- (window-width w)) ?x) "あx\n")
      (insert (make-string (window-width w) ?x) "あx\n"))
    (save-excursion
      (loop 
       until (eobp) collect
       (prog1
           (progn (end-of-line) (current-column))
         (forward-line))))))

Emacsの内部コードがunicodeになったことを感じる一瞬

emacs23でこんなんを書くと

(char-to-string ?\x3042)

こんなんなる

"あ"

Unicode一覧 3000-3FFF - Wikipediaとか参考。


あと、ucs-insertの実装が単純にinsert-and-inherit呼ぶだけになってたり。emacs22のころはdecode-charしてた。