buffer 内の位置を読み込む方法は
(point) は、現在のカーソルの位置を返します。これとは違って、
つぎのような関数がないでしょうか。
その関数を実行すると、それ以降キーを監視して、
* 矢印キー あるいは、C-n, C-p, C-b, C-f だったら、その矢
印キーあういは C-n, C-p, C-b, C-f をタイプしたときの通
常の動作にしたがってカーソル位置が変更される。
* それ以外のキーを押したら、そのときのカーソル位置を返す。
ちょっと自分で書いてみたのですが、不十分です。
(defun read-movement ()
(let (p (pos nil))
(setq p (read-char))
(cond
((eq p 14); C-n
(next-line 1))
((eq p 16); C-p
(next-line -1))
((eq p 6); C-f
(forward-char 1))
((eq p 2); C-b
(forward-char -1))
(t
(setq pos (point))))
pos))
(defun get-point ()
(interactive)
(let ((p nil))
(while (not p)
(setq p (read-movement)))
(message "%d" p)))
get-point が、求める関数のつもりですが、つぎの点で不十分です。
* 矢印キーには対応できていない。read-movement 関数で使用してい
る read-char ではダメ。
* ミニバッファに押したキーに関する情報がエコーされるのが嫌。
こういうときに使用する関数がすでにあれば教えてください。上に書い
たコードを直せばよいのなら、その方法を教えていただけないでしょうか。
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735