peck@SUN.COM (04/19/89)
I don't know what the prompt string is, so we just guess... This code from sun-fns.el, the "common cases" are `Eval: ', ie 4 char prompts If your prompt string is longer, the mouse will still be a few more chars to the right. (defun mini-move-point (window x y) ;; -6 is good for most common cases (mouse-move-point window (- x 6) 0)) If there is a variable holding the current prompt string, the "6" could be replaced with (length prompt-string) + 1 or + 2 for the punctuation. The "point" for move-point refers to buffer position, but the "x" is in window coordinates, and the beginning of buffer is *not* at the left edge of the window. Does someone out in GNU-land know the appropriate transformation?
jbw%bucsf.BU.EDU@BU-CS.BU.EDU (Joe Wells) (04/20/89)
Jeff Peck wrote this:
I don't know what the prompt string is, so we just guess... This
code from sun-fns.el, the "common cases" are `Eval: ', ie 4 char
prompts. If your prompt string is longer, the mouse will still be a
few more chars to the right.
(defun mini-move-point (window x y)
;; -6 is good for most common cases
(mouse-move-point window (- x 6) 0))
If there is a variable holding the current prompt string,
the "6" could be replaced with (length prompt-string) + 1 or + 2
for the punctuation.
Does someone out in GNU-land know the appropriate transformation?
Try this function:
(defun minibuffer-prompt-length ()
"Returns the length of the current minibuffer prompt."
(let ((window (selected-window))
length)
(select-window (minibuffer-window))
(let ((point (point)))
(goto-char (point-min))
(insert-char ?a 200)
(goto-char (point-min))
(vertical-motion 1)
(setq length (- (screen-width) (point)))
(goto-char (point-min))
(delete-char 200)
(goto-char point))
(select-window window)
length))
Enjoy!
--
Joe Wells <jbw@bucsf.bu.edu>
jbw%bucsf.bu.edu@bu-it.bu.edu
...!harvard!bu-cs!bucsf!jbw