Paul Kinnucan
Mon, 19 Mar 2001 10:55:54 -0800
Thank you, David, for this fix. I was hoping there would be a more elegant solution to getting the position of point than moving the mouse programmatically to point. However, I am sure that if there had been one, you would have found it so I'll include your fix in the next release. - Paul At 06:52 PM 3/19/01 +0100, David Ponce wrote: >Hello All, > >Following is an improved version of latest JDE's function >`jde-cursor-posn-as-event'. >This function converts the cursor position (point) into an event so the >completion menu can pop up at point. > >This implementation works in XEmacs too :-) and also move the mouse to >the cursor position, that is to the popup menu :-) > >Any feedback will be welcome. > >Sincerely, >David > >(defun jde-cursor-posn-as-event() > "Returns the text cursor position as an event. >Also move the mouse pointer to the cursor position." > (let* ((w (get-buffer-window (current-buffer))) > (x (mod (- (current-column) (window-hscroll)) > (window-width))) > (y (save-excursion > (save-restriction > (widen) > (narrow-to-region (window-start) (point)) > (goto-char (point-min)) > (1+ (vertical-motion (buffer-size)))))) > ) > (if (featurep 'xemacs) > (let* ((at (progn (set-mouse-position w x (1- y)) > (cdr (mouse-pixel-position)))) > (x (car at)) > (y (cdr at))) > (make-event 'button-press > (list 'button 3 > 'modifiers nil > 'x x > 'y y))) > (set-mouse-pixel-position (window-frame w) > (* x (frame-char-width)) > (* y (frame-char-height))) > ;;(list (list x y) window) > t)))