From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Lennart Borgman (gmail)" Newsgroups: gmane.emacs.devel Subject: Re: A simple implementation of context-sensitive keys Date: Sat, 13 Sep 2008 01:46:29 +0200 Message-ID: <48CAFF55.5040508@gmail.com> References: <87y72079mg.fsf@thinkpad.tsdh.de> <87d4jbg62j.fsf@thinkpad.tsdh.de> <48C92024.6080804@gmail.com> <48C921CB.3010700@gmail.com> <87hc8miwy0.fsf@thinkpad.tsdh.de> <48C981C6.9030201@gmail.com> <87abed97gl.fsf@thinkpad.tsdh.de> <48CA29A7.1040501@gmail.com> <87d4j9r90k.fsf@thinkpad.tsdh.de> <87wshhpcjr.fsf@thinkpad.tsdh.de> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1221263218 31293 80.91.229.12 (12 Sep 2008 23:46:58 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 12 Sep 2008 23:46:58 +0000 (UTC) To: Tassilo Horn , emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Sep 13 01:47:53 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1KeIMi-0007kU-2Z for ged-emacs-devel@m.gmane.org; Sat, 13 Sep 2008 01:47:53 +0200 Original-Received: from localhost ([127.0.0.1]:42438 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KeILg-0001U4-Bu for ged-emacs-devel@m.gmane.org; Fri, 12 Sep 2008 19:46:48 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KeILa-0001Sv-Pb for emacs-devel@gnu.org; Fri, 12 Sep 2008 19:46:42 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KeILX-0001RY-Ad for emacs-devel@gnu.org; Fri, 12 Sep 2008 19:46:42 -0400 Original-Received: from [199.232.76.173] (port=34887 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KeILX-0001RQ-4M for emacs-devel@gnu.org; Fri, 12 Sep 2008 19:46:39 -0400 Original-Received: from ch-smtp01.sth.basefarm.net ([80.76.149.212]:45568) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KeILW-0006EV-0E for emacs-devel@gnu.org; Fri, 12 Sep 2008 19:46:38 -0400 Original-Received: from c83-254-151-87.bredband.comhem.se ([83.254.151.87]:65213 helo=[127.0.0.1]) by ch-smtp01.sth.basefarm.net with esmtp (Exim 4.68) (envelope-from ) id 1KeILT-0002wT-4f; Sat, 13 Sep 2008 01:46:35 +0200 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071031 Thunderbird/2.0.0.9 Mnenhy/0.7.5.666 In-Reply-To: <87wshhpcjr.fsf@thinkpad.tsdh.de> X-Enigmail-Version: 0.95.7 X-Antivirus: avast! (VPS 080912-1, 2008-09-12), Outbound message X-Antivirus-Status: Clean X-Originating-IP: 83.254.151.87 X-Scan-Result: No virus found in message 1KeILT-0002wT-4f. X-Scan-Signature: ch-smtp01.sth.basefarm.net 1KeILT-0002wT-4f 10a48c9443c28e6f55c04ff44af82703 X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:103861 Archived-At: Tassilo Horn wrote: > "Lennart Borgman" writes: > > Hi Lennart, > >>> Sorry, no time to write the code now. What I mean is that in >>> >>> (info "(elisp)Searching Keymaps") >>> >>> there's the pseudocode how emacs finds the command for a key. Now >>> you can surrogate "FIND-IN" with lookup-key and see if the key is >>> bound in the map. In that code you know the map or at least the >>> mode, cause you either have the variable directly (like >>> overriding-local-map) or you walk an alist of the form ((mode-name >>> . keymap)...) in the case of FIND-IN-ANY. >> It would be good if that where true, but it is not. You have to take a >> closer look to understand how this works. I think a good start might >> be the code I sent before. > > Here's a q&d implementation of what I thought should do the trick. It > works for me, although only very briefly tested. > > --8<---------------cut here---------------start------------->8--- > (defun find-key-commands (key) > (let (list) > (when overriding-terminal-local-map Yes, the structure of the key binding search must be mirrored in the routine. But the problem I tried to solve was rather to find the keymap variable names. You do not have those names available anywhere really. You have to guess. But combining the mirrored structure with the routine that guesses the keymap variable name would be the best I think.