* List possible completions in pop-up menu and choose from it. @ 2005-08-19 11:35 Rolex JM 2005-08-19 17:57 ` Kevin Rodgers 0 siblings, 1 reply; 4+ messages in thread From: Rolex JM @ 2005-08-19 11:35 UTC (permalink / raw) 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. Would anybody tell me how to write that elisp? Thanks. _________________________________________________________________ 免费下载 MSN Explorer: http://explorer.msn.com/lccn ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: List possible completions in pop-up menu and choose from it. 2005-08-19 11:35 List possible completions in pop-up menu and choose from it Rolex JM @ 2005-08-19 17:57 ` Kevin Rodgers 2005-08-20 7:52 ` Jimmy Rolex 0 siblings, 1 reply; 4+ messages in thread From: Kevin Rodgers @ 2005-08-19 17:57 UTC (permalink / raw) 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 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: List possible completions in pop-up menu and choose from it. 2005-08-19 17:57 ` Kevin Rodgers @ 2005-08-20 7:52 ` Jimmy Rolex 2005-08-22 13:15 ` Jimmy Rolex 0 siblings, 1 reply; 4+ messages in thread From: Jimmy Rolex @ 2005-08-20 7:52 UTC (permalink / raw) Cc: help-gnu-emacs Thank you for your help. Now I add following code to my site-start.el. When I press [M-up], the menu appears at point, with possible completions inside. It looks good. However, after I select one item inside with mouse or keyboard, the selection isn't inserted into the buffer. Have I done something wrong? (defun my-dabbrev-completion () "*Just like `dabbrev-completion', but display a popup menu." (interactive) (save-window-excursion ; suppress *Completions* buffer (dabbrev-completion)) (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)) (autoload 'senator-completion-menu-point-as-event "senator" "" t) (x-popup-menu (senator-completion-menu-point-as-event) menu));;pop-up at point ) (global-set-key [M-up] 'my-dabbrev-completion) >From: Kevin Rodgers <ihs_4664@yahoo.com> >To: help-gnu-emacs@gnu.org >Subject: Re: List possible completions in pop-up menu and choose from it. >Date: Fri, 19 Aug 2005 11:57:21 -0600 > >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 _________________________________________________________________ 与联机的朋友进行交流,请使用 MSN Messenger: http://messenger.msn.com/cn ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: List possible completions in pop-up menu and choose from it. 2005-08-20 7:52 ` Jimmy Rolex @ 2005-08-22 13:15 ` Jimmy Rolex 0 siblings, 0 replies; 4+ messages in thread From: Jimmy Rolex @ 2005-08-22 13:15 UTC (permalink / raw) Now I have more information. If there's only one possible completion, the selection will be inserted into the text. Any idear? ----- Rolex >From: "Jimmy Rolex" <rolexletter@hotmail.com> >To: ihs_4664@yahoo.com >CC: help-gnu-emacs@gnu.org >Subject: Re: List possible completions in pop-up menu and choose from it. >Date: Sat, 20 Aug 2005 07:52:50 +0000 > >Thank you for your help. > >Now I add following code to my site-start.el. When I press [M-up], >the menu > >appears at point, with possible completions inside. It looks good. > >However, after I select one item inside with mouse or keyboard, the >selection >isn't inserted into the buffer. Have I done something wrong? > >(defun my-dabbrev-completion () > "*Just like `dabbrev-completion', but display a popup menu." > (interactive) > (save-window-excursion ; suppress *Completions* >buffer > (dabbrev-completion)) > (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)) > (autoload 'senator-completion-menu-point-as-event "senator" "" >t) > (x-popup-menu (senator-completion-menu-point-as-event) >menu));;pop-up at point > ) > >(global-set-key [M-up] 'my-dabbrev-completion) > > > >>From: Kevin Rodgers <ihs_4664@yahoo.com> >>To: help-gnu-emacs@gnu.org >>Subject: Re: List possible completions in pop-up menu and choose >>from it. >>Date: Fri, 19 Aug 2005 11:57:21 -0600 >> >>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 > >_________________________________________________________________ >与联机的朋友进行交流,请使用 MSN Messenger: >http://messenger.msn.com/cn > > > >_______________________________________________ >Help-gnu-emacs mailing list >Help-gnu-emacs@gnu.org >http://lists.gnu.org/mailman/listinfo/help-gnu-emacs _________________________________________________________________ 免费下载 MSN Explorer: http://explorer.msn.com/lccn ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2005-08-22 13:15 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-08-19 11:35 List possible completions in pop-up menu and choose from it Rolex JM 2005-08-19 17:57 ` Kevin Rodgers 2005-08-20 7:52 ` Jimmy Rolex 2005-08-22 13:15 ` Jimmy Rolex
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).