From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Jimmy Rolex" Newsgroups: gmane.emacs.help Subject: Re: List possible completions in pop-up menu and choose from it. Date: Mon, 22 Aug 2005 13:15:21 +0000 Message-ID: References: NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=gb2312; format=flowed X-Trace: sea.gmane.org 1124718918 4875 80.91.229.2 (22 Aug 2005 13:55:18 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Mon, 22 Aug 2005 13:55:18 +0000 (UTC) Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Aug 22 15:55:10 2005 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by ciao.gmane.org with esmtp (Exim 4.43) id 1E7Cjc-0005nT-17 for geh-help-gnu-emacs@m.gmane.org; Mon, 22 Aug 2005 15:53:08 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1E7CnK-00023k-N1 for geh-help-gnu-emacs@m.gmane.org; Mon, 22 Aug 2005 09:56:58 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1E7Cfz-0007Wq-0A for help-gnu-emacs@gnu.org; Mon, 22 Aug 2005 09:49:23 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1E7Cfu-0007Uq-PF for help-gnu-emacs@gnu.org; Mon, 22 Aug 2005 09:49:21 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1E7CeG-0006Ut-N4 for help-gnu-emacs@gnu.org; Mon, 22 Aug 2005 09:47:36 -0400 Original-Received: from [64.4.46.86] (helo=hotmail.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1E7C9e-0003D4-Vo for help-gnu-emacs@gnu.org; Mon, 22 Aug 2005 09:15:59 -0400 Original-Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Mon, 22 Aug 2005 06:15:21 -0700 Original-Received: from 80.15.249.146 by by9fd.bay9.hotmail.msn.com with HTTP; Mon, 22 Aug 2005 13:15:21 GMT X-Originating-IP: [210.21.227.66] X-Originating-Email: [rolexletter@hotmail.com] X-Sender: rolexletter@hotmail.com In-Reply-To: Original-To: help-gnu-emacs@gnu.org X-OriginalArrivalTime: 22 Aug 2005 13:15:21.0399 (UTC) FILETIME=[8C8DDC70:01C5A71B] X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:28914 X-Report-Spam: http://spam.gmane.org/gmane.emacs.help:28914 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" >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 >>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