From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Per Abrahamsen Newsgroups: gmane.emacs.devel Subject: Customizing key bindings (was: Re: [CVS] f7, f8 bound..) Date: Mon, 02 Sep 2002 18:40:03 +0200 Organization: The Church of Emacs Sender: emacs-devel-admin@gnu.org Message-ID: References: <200208271621.g7RGLNm30516@rum.cs.yale.edu> <5xhehfe3aj.fsf@kfs2.cua.dk> <874rdfaytt.fsf@pot.cnuce.cnr.it> <5xvg5sh06u.fsf@kfs2.cua.dk> <20020830235528.GA13207@gnu.org> <87ofbji88u.fsf@emacswiki.org> NNTP-Posting-Host: localhost.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: main.gmane.org 1030984817 14644 127.0.0.1 (2 Sep 2002 16:40:17 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Mon, 2 Sep 2002 16:40:17 +0000 (UTC) Cc: emacs-devel@gnu.org Return-path: Original-Received: from quimby.gnus.org ([80.91.224.244]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 17luFL-0003o5-00 for ; Mon, 02 Sep 2002 18:40:15 +0200 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by quimby.gnus.org with esmtp (Exim 3.12 #1 (Debian)) id 17lune-00039f-00 for ; Mon, 02 Sep 2002 19:15:42 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.10) id 17luGs-0002to-00; Mon, 02 Sep 2002 12:41:50 -0400 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17luFI-0002sW-00 for emacs-devel@gnu.org; Mon, 02 Sep 2002 12:40:12 -0400 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17luFG-0002sG-00 for emacs-devel@gnu.org; Mon, 02 Sep 2002 12:40:11 -0400 Original-Received: from sheridan.dina.kvl.dk ([130.225.40.227]) by monty-python.gnu.org with esmtp (Exim 4.10) id 17luFD-0002rl-00; Mon, 02 Sep 2002 12:40:07 -0400 Original-Received: from zuse.dina.kvl.dk (zuse.dina.kvl.dk [130.225.40.245]) by sheridan.dina.kvl.dk (8.9.3/8.9.3/Debian 8.9.3-21) with ESMTP id SAA25403; Mon, 2 Sep 2002 18:40:06 +0200 Original-Received: (from abraham@localhost) by zuse.dina.kvl.dk (8.9.3+Sun/8.9.3) id SAA29838; Mon, 2 Sep 2002 18:40:03 +0200 (MEST) X-Authentication-Warning: zuse.dina.kvl.dk: abraham set sender to abraham@dina.kvl.dk using -f Original-To: rms@gnu.org X-Face: +kRV2]2q}lixHkE{U)mY#+6]{AH=yN~S9@IFiOa@X6?GM|8MBp/ In-Reply-To: (Richard Stallman's message of "Mon, 02 Sep 2002 10:53:30 -0400") Original-Lines: 46 User-Agent: Gnus/5.090007 (Oort Gnus v0.07) Emacs/21.1 (sparc-sun-solaris2.8) Errors-To: emacs-devel-admin@gnu.org X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Emacs development discussions. List-Unsubscribe: , List-Archive: Xref: main.gmane.org gmane.emacs.devel:7334 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:7334 Here is a version that handle [DEL]. To test, evaluate the code, M-x customize-option global-key-bindings Activate the [INS] button. Enter in the Key field and apropos in the Command field. Activate the [Set for Current Session] button Press to test. Activate the [DEL] button. Press to test. Obviously the UI needs to be improved, but the basic mechanism (except perhaps the use of use-global-map) should work. A similar mechanism can be used for the mode specific maps, instead of fiddling with use-global-map, we would just change the mode to use custom-my-mode-map directly. (defvar custom-global-keymap (let ((map (make-sparse-keymap))) (set-keymap-parent map global-map) map) "Global keymap for use by customize.") (defcustom global-key-bindings nil "Global keybindings defined through customize." :type '(repeat (group (string :tag "Key") (function)) :set (lambda (sym val) (set-default sym val) (setq custom-global-keymap (make-sparse-keymap)) (set-keymap-parent custom-global-keymap global-map) (mapc (lambda (bind) (define-key custom-global-keymap (read-kbd-macro (car bind)) (cadr bind))) val) (use-global-map custom-global-keymap) val))