2009年10月29日の日記の1番目の記事へのコメント
■uim.elとEmacs23
Emacsでウィンドウを複数に分割して同じバッファを表示させた状態とし,片方のウィンドウで何か文字を入力した場合,もう片方のウィンドウは勝手にスクロールしたりせず元の位置のまま・・・というのが本来期待される動作なはずなんですが,Emacs23 + uim.el でこれをやると片方のウィンドウで入力した瞬間にもう片方のウィンドウがスクロールして同じ内容を表示するようになっちゃいます.こいつは片方でバッファの上の方を見たりしながら,もう片方でバッファの下の方に追記したい場合とかにものすごく不便です.
というわけで調べてみました.どうも uim-util.el にある以下の関数が期待したように動いていないのが原因っぽい.
(defun uim-goto-char (pt) (set-window-point (get-buffer-window (current-buffer)) pt))
Emacs23だと set-window-point がおかしいのかなーと思ったんですが,実験してみたところ set-window-point ではなく get-buffer-window が返してくるウィンドウの方がおかしいっぽいことが判明.たとえば以下を実行すると,本来なにも起こらないはずが隣のウィンドウに飛んじゃいますw
(select-window (get-buffer-window (current-buffer)))
うー,どうしたもんか.というかそもそも何でこんな複雑なことやってんだっけ・・・?普通に (goto-char pt) にしても動くんだよなぁw
2009年10月29日の日記の1番目の記事へのコメント
[コメントを書く]