Rolex JM wrote: > I want to list in pop-up menu the possible completions returned from > (dabbrev-completion). Then I can choose one from it and insert it into > the text, just as (semantic-ia-complete-symbol-menu) > does.
dabbrev-completion stores its results in dabbrev--last-obarray, which is a data structure suitable for the completion functions. You can read about obarrays in the "Creating [and Interning] Symbols ==============================" node of the Emacs Lisp manual. Converting that to a menu keymap was too interesting for me to pass up: (let ((menu (make-sparse-keymap "dabbrev-completion")) (completions (let ((symbols '())) (mapatoms (lambda (sym) (setq symbols (cons sym symbols))) dabbrev--last-obarray) (sort symbols 'string-lessp)))) (mapc (lambda (completion) (define-key menu (vector completion) `(,(symbol-name completion) . (lambda () (interactive) (insert ,(symbol-name completion)))))) (nreverse completions)) (x-popup-menu t menu)) You can create your own command that you could bind to a key, mouse click, or menu item by wrapping that in something like: (defun dabbrev-mouse-completion (event) "*Just like `dabbrev-completion', but display a popup menu." (interactive "*e") (save-window-excursion ; suppress *Completions* buffer (dabbrev-mouse-completion)) ... ) And then replace the t POSITION argument to x-popup-menu with event. -- Kevin Rodgers _______________________________________________ Help-gnu-emacs mailing list Help-gnu-emacs@gnu.org http://lists.gnu.org/mailman/listinfo/help-gnu-emacs