松尾です。
> (4) カーソル位置が予期しない位置に移動する問題
>
> 「navi2ch の jit が動いている時に twitering-mode の更新が入ると
> navi2ch のカーソル位置がずれる」という指摘がTLに流れました。
>
> これは、松尾さんが以前に書いていたこの件だと思います。
>
> | 現状、ひとつよく分からない点があって、
> | 「scroll-modeにしておき、*twittering* bufferをC-x b等で
> | 非表示にした状況」で放置しておいて、
> | 再び *twittering* buffer に戻るとカーソル位置のstatusが
> | 元々のものとは違うものになっている場合があります。
この件ですが、どうやらEmacs 22.2のバグのようです。
以下の手順で再現できます。
----
1. emacsを素の状態で起動し、test.elを読み込む
emacs -q --no-site-file --load test.el
2. M-x myprepare を実行
3. C-x bで"test buffer"に switch する
----
2.で実行した myprepare() の末尾で mytest() を呼んでいます。
(defun mytest ()
(interactive)
(with-current-buffer test-buffer-name
(goto-char (point-max))
(save-excursion
(goto-char (point-min))
(insert "a"))))
呼び出し後には "test buffer" での point が buffer 末尾に
移動しているはずなのですが、Emacs 22.2 では buffer の途中に
置かれてしまいます。
嫌らしいことに、3.で実際に switch するまでは末尾を指して
いるようです。(2.の後で M-x mycheck とすると確認できます)
いくつかのバージョンで試してみましたが Emacs 21.4、22.1では
問題ありませんでした。Emacs 22.2 はDebian lennyのものも
NTEmacsもアウトです。
問題発生せず:
GNU Emacs 21.4.1 (i486-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of
2008-08-19 on ninsei, modified by Debian
GNU Emacs 22.1.1 (i686-pc-cygwin) of 2007-07-19 on HERRING
問題あり:
GNU Emacs 22.2.1 (i486-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of
2008-11-10 on raven, modified by Debian
GNU Emacs 22.2.1 (i386-mingw-nt5.1.2600) of 2008-03-27 on A208752
下記のbugと関連があるのかもしれませんが、よく分かっていません。
"bug#197: marked as done (next-error wrong position in target file) -
gnu.emacs.bug | Google グループ"
http://groups.google.co.jp/group/gnu.emacs.bug/msg/75284e1f162a69b1
"Emacs bug report logs - #367"
http://debbugs.gnu.org/db/36/367.html
対処法としては indirect buffer を使えばこの bug を回避できないか
と考えています。
"Indirect Buffers - GNU Emacs Lisp Reference Manual"
http://www.gnu.org/software/emacs/manual/html_node/elisp/Indirect-Buffers.html#Indirect-Buffers
---
松尾 直志 <t...@mymail.twin.jp>
(setq test-buffer-name "test buffer")
(defun myprepare (&optional arg)
(interactive)
(let ((height (window-text-height))
(buffer (generate-new-buffer test-buffer-name))
(shift (if (integerp arg)
arg
1)))
(with-current-buffer buffer
(mapc
(lambda (e)
(insert "a\n"))
(make-list (+ shift height) nil)))
(switch-to-buffer buffer)
(goto-char (point-min))
(unless current-prefix-arg
(set-window-start (selected-window)
(line-beginning-position (1+ shift))))
(switch-to-buffer "*scratch*")
(mytest)
))
(defun mytest ()
(interactive)
(with-current-buffer test-buffer-name
(goto-char (point-max))
(save-excursion
(goto-char (point-min))
(insert "a"))))
(defun mycheck ()
(interactive)
(with-current-buffer test-buffer-name
(message "%s %s %s %s" (point) (point-max) (point-marker) (mark-marker))))
(defun myswitch ()
(interactive)
(let ((before
(with-current-buffer test-buffer-name
(point))))
(switch-to-buffer test-buffer-name)
(message "before:%s, after:%s" before (point))))
------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev
_______________________________________________
twmode-users mailing list
twmode-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/twmode-users