让 minibuffer 像菜单一样在光标处弹出, emacs26已经可以实现了。

一个小栗子

(setq my-frame
      (let ((after-make-frame-functions nil))
        (make-frame
         `((parent-frame . ,(window-frame))
           (undecorated . t)
           (cursor-type . nil)
           (minibuffer . nil)
           (width . 50)
           (height . 1))
         )))

(set-window-parameter
 (frame-root-window my-frame)
 'mode-line-format 'none)

(setq my-timer nil)

(setq my-timer
      (progn
        (when my-timer
         (cancel-timer my-timer))
      (run-with-timer
       0 0.1
       #'(lambda ()
           (let* ((pos (cdr (mouse-pixel-position)))
                  (x (car pos))
                  (y (cdr pos)))
             (set-frame-parameter
              my-frame 'top (+ y 30))
             (set-frame-parameter
              my-frame 'left (+ x 30)))
           ))))
2 个赞