続 *git-diff* の件

ぶえーっくしょん。ずるずる。
あぁ,すみませんね,ベタベタで。
花粉が非常に多いですね,今日。
一応わからない人のために言っておくけど,
鼻水のベタベタ感と,ベタがかかってるんだからね。
よし,出だし好調。

結論

ん? はて? ページャとな?
cygwin から。

% GIT_PAGER='lv -Os' git diff
+ほげ

あうちっ!


Poderosa で設定を utf-8 に変えてみる。
再度!

% GIT_PAGER='lv -Ou8' git diff
+ほげ

あうあうあー。
何これ。何なの?

その前の結論

うがー。無理無理。しばらく寝かすことにするお。

その1分くらい前

なぜだめなんだ?
あぁ,別の方法で試してみよう。

cygwin から
% git diff | nfk --guess
UTF-8

うん,そりゃそうだろう。

% git diff
+縺サ縺・

あうあうあー。化ける。

Meadow 内の shell から。

shell バッファで,C-xC-mf utf-8-unix
そして!

% git diff
+縺サ縺・

だめぽ。

ソースのエンコーディングsjis にしてみる。

あれ? 化けないね。しかも shell のエンコーディングが,utf-8-unix にであるにも関わらず!
(そう,この時,ページャのフラグは立っていたのかもしれない。。。)
(のちに,「ページャのフラグ維新」と呼ばれることにはならない)

さかのぼること30分くらい。

よし。このアドバイスでいけるだろう。
オレにしては結構頑張ったな。

(defadvice git-run-command-buffer (before my-git-run-command-buffer-advice)
  (let ((bufname (ad-get-arg 0))
        (files (ad-get-arg 6))
        from-coding f b)
    (when (equal bufname "*git-diff*")
      (if (listp files) (setq f (car files)) (setq f files))
      (cond ((get-buffer f)
             (save-excursion
               (set-buffer (get-buffer f))
               (setq from-coding buffer-file-coding-system)))
            (t (setq b (get-buffer-create f))
               (save-excursion
                 (set-buffer b)
                 (setq from-coding buffer-file-coding-system))
               (kill-buffer b)))
      (save-excursion
        (set-buffer (get-buffer-create bufname))
        (set-buffer-file-coding-system from-coding))
      (message (format "DEBUG: %s" from-coding)))))
(ad-activate 'git-run-command-buffer)

git-status バッファから,= して diff みてみた。
ダメだ。utf-8 にはなっているけど,化けている。
でも,この化け方はどっかでなじみがある気がするお。

さらに30分くらい前

呼び出しの流れはこんな感じだから,

- git-status
    git-diff-file
      git-run-command-buffer
        get-buffer-create buffer-name # ここで *git-diff* バッファを作っている
      git-setup-diff-buffer
        with-current-buffer
          display-buffer (built-in function)

"*git-diff*" バッファを作る前に,"*git-diff*" バッファを先に作って,
コーディングを utf-8 にしてしまえばよろしいんでないかい?
我ながらナイスアイデア
教えてもらった,set-process-coding-system を使おうと思ったけど,
オレのテクでは,プロセスを捕まえられなかった。orz
ごめんなさい。
にいちゃん,ごめん。あやまるな,みきお。みたいな。

まとめ

疲れたお。
流れを,逆から書いてみたが,破綻した。
読みにくくてごめんなさい。
どうやら,原因は GIT_PAGER にありそうだな。
設定した覚えはないし。
たぶん,それを調べれば行けそう。
でも! でも! 現実逃避でやっていたけど,疲れたんだ。
お先で〜す。
あぁ,まだ続くよ,きっと。ずっと。きみと。ぼくと。