all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Per Abrahamsen <abraham@dina.kvl.dk>
Cc: emacs-devel@gnu.org
Subject: Re: Customizing key bindings
Date: Tue, 10 Sep 2002 12:19:05 +0200	[thread overview]
Message-ID: <rjk7lutaee.fsf@zuse.dina.kvl.dk> (raw)
In-Reply-To: <87r8g2dbid.fsf@emacswiki.org> (Alex Schroeder's message of "Tue, 10 Sep 2002 00:49:30 +0200")

Alex Schroeder <alex@emacswiki.org> writes:

> 	* cus-key.el (key-sequence-field-validate): disallow "" as a
> 	keybinding.

We may also want to disallow the creation of prefix keys, alt least
for now.  For example, Try to define "X Y" from customize.  Then
remove the binding from customize.  You will notice that "X" continues
to be a prefix key, even though "X Y" is no longer bound.

We should probably find a safe way to allow the user to create new
prefix keys, but for now, let's disallow it.

Actually, thinking about it, we _need_ to solve this, as otherwise the
user will not be able to bind e.g. "C-c x" for a mode that have no C-c
bindings already.

> Except for the handling of nil, this seems "good enough" for me.  :)

The patch below implements "Remove definition", add a check for too
long key bidnings in validate, and fix a bug with the notify function
that (did not) update the "Old binding".

*** cus-key2.el	Tue Sep 10 11:58:40 2002
--- cus-key3.el	Tue Sep 10 12:15:48 2002
***************
*** 26,39 ****
    :keymap key-sequence-widget-map)
  
  (defun key-sequence-field-validate (widget)
!   (let ((value (widget-apply widget :value-get)))
!     (condition-case nil
! 	(progn 
! 	  (when (string= value "")
! 	    (error widget))
! 	  (read-kbd-macro value)
! 	  nil)
!       (error widget))))
  
  (define-widget 'key-sequence-button 'push-button
    "Button for entering key bindings."
--- 26,64 ----
    :keymap key-sequence-widget-map)
  
  (defun key-sequence-field-validate (widget)
!   (let* ((value (widget-apply widget :value-get))
! 	 (map1 (or (widget-ancestor-get widget :key-sequence-keymap)
! 		  (current-global-map)))
! 	 (map (if (symbolp map1) (symbol-value map1) map1))
! 	 (key (condition-case nil
! 		  (read-kbd-macro value)
! 		nil))
! 	 (command (and key (lookup-key map key)))))
!   (cond ((null key)
! 	 ;; Unparsable.
! 	 widget)
! 	((string-equal key "")
! 	 ;; Empty prefix.  We can't rebind the entire keymap.
! 	 widget)
! 	((functionp command)
! 	 ;; Normal binding, OK.
! 	 nil)
! 	((null command)
! 	 ;; Unbound, OK.
! 	 nil)
! 	((numberp command)
! 	 ;; We can't allow the creation of new prefix keys, as we have
! 	 ;; no way to undo such a prefix
! 	 widget)
! 	((keymapp command)
! 	 ;; This will turn a prefix key into an ordinary binding.  A
! 	 ;; bit drastic (as many bindings can be lost), but the user
! 	 ;; asked for it.
! 	 nil)
! 	(t
! 	 ;; This is an impossible value according to the lookup-key doc
! 	 ;; string.  What to do?  Let the user deside.
! 	 nil)))
  
  (define-widget 'key-sequence-button 'push-button
    "Button for entering key bindings."
***************
*** 115,124 ****
  	 (children (widget-get widget :buttons))
  	 (field (car children))
  	 (value (widget-value child))
! 	 (map (or (widget-ancestor-get widget :key-sequence-keymap)
  		  (current-global-map)))
  	 (command (condition-case nil
! 		      (lookup-key map (read-kbd-macro value))
  		    (error nil))))
      (save-excursion
        (goto-char (widget-get binding :from))
--- 140,150 ----
  	 (children (widget-get widget :buttons))
  	 (field (car children))
  	 (value (widget-value child))
! 	 (map1 (or (widget-ancestor-get widget :key-sequence-keymap)
  		  (current-global-map)))
+ 	 (map (if (symbolp map1) (symbol-value map1) map1))
  	 (command (condition-case nil
! 		      (lookup-key map(read-kbd-macro value))
  		    (error nil))))
      (save-excursion
        (goto-char (widget-get binding :from))
***************
*** 134,152 ****
    :prompt-match 'commandp
    :match-alternatives '(commandp)
    :validate (lambda (widget)
! 	      (unless (or (not (widget-value widget))
! 			  (commandp (widget-value widget)))
  		(widget-put widget :error (format "Invalid function: %S"
  						  (widget-value widget)))
  		widget))
    :value 'ignore
    :tag "Command")
  
  (define-widget 'key-binding 'group
    "Bind a key sequence to a command."
    :value '("" ignore)
    :indent 0
!   :args '(key-sequence (command :tag "New binding")))
  
  (defmacro defkeymap (symbol map doc &rest args)
    "Define SYMBOL to be a keymap with value MAP.
--- 160,184 ----
    :prompt-match 'commandp
    :match-alternatives '(commandp)
    :validate (lambda (widget)
! 	      (unless (commandp (widget-value widget))
  		(widget-put widget :error (format "Invalid function: %S"
  						  (widget-value widget)))
  		widget))
    :value 'ignore
    :tag "Command")
  
+ (define-widget 'key-binding-value 'choice
+   "A valid key binding value for use by `define-key'.
+ This could be a command or nil."
+   :args '((const :tag "Remove definition" nil) )
+   :value 'ignore
+   :tag "New binding")
+ 
  (define-widget 'key-binding 'group
    "Bind a key sequence to a command."
    :value '("" ignore)
    :indent 0
!   :args '(key-sequence key-binding-value))
  
  (defmacro defkeymap (symbol map doc &rest args)
    "Define SYMBOL to be a keymap with value MAP.

  parent reply	other threads:[~2002-09-10 10:19 UTC|newest]

Thread overview: 221+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-08-23 14:15 [CVS] f7, f8 bound D. Goel
2002-08-25 23:16 ` Kim F. Storm
2002-08-25 22:39   ` D. Goel
2002-08-26 15:26   ` Stefan Monnier
2002-08-27  2:02     ` Miles Bader
2002-08-27  8:56       ` Kim F. Storm
2002-08-27  8:55     ` Kim F. Storm
2002-08-27  8:55       ` Juanma Barranquero
2002-08-27 10:32         ` Kim F. Storm
2002-08-27 10:01           ` Juanma Barranquero
2002-08-27 11:55             ` Kim F. Storm
2002-08-27 11:07               ` Juanma Barranquero
2002-08-27 16:21       ` Stefan Monnier
2002-08-28  1:12         ` Miles Bader
2002-08-28  9:33           ` Kim F. Storm
2002-08-28  8:54             ` Miles Bader
2002-08-28  9:09               ` Juanma Barranquero
2002-08-28 10:58                 ` Kim F. Storm
2002-08-28 10:21                   ` Juanma Barranquero
2002-08-28  9:09               ` Miles Bader
2002-08-28 10:47                 ` Kim F. Storm
2002-08-28 14:13                   ` Stefan Monnier
2002-08-29 14:35                     ` Kim F. Storm
2002-08-29 17:24                       ` Stefan Monnier
2002-09-08 23:02                         ` Kim F. Storm
2002-09-09 10:49                           ` Francesco Potorti`
2002-09-09 13:43                           ` Miles Bader
2002-09-09 19:14                           ` Richard Stallman
2002-09-09 23:34                             ` Richard Stallman
2002-09-10 21:50                               ` Kim F. Storm
2002-09-09 23:45                             ` Kim F. Storm
2002-09-10 16:36                               ` Richard Stallman
2002-09-10 12:17                             ` Francesco Potorti`
2002-09-10 23:16                               ` Kim F. Storm
2002-09-11  9:03                                 ` Francesco Potorti`
2002-08-28 13:37                 ` Francesco Potorti`
2002-08-28 14:28                   ` Kai Großjohann
2002-08-28 14:41                     ` Francesco Potorti`
2002-08-28 23:33                   ` Richard Stallman
2002-08-29  9:25                     ` Kai Großjohann
2002-08-30  6:09                       ` Richard Stallman
2002-08-30 14:48                         ` Kim F. Storm
2002-08-30 23:55                           ` Miles Bader
2002-08-31 11:21                             ` Alex Schroeder
2002-09-01 13:14                               ` Richard Stallman
2002-09-01 14:22                                 ` Per Abrahamsen
2002-09-01 14:37                                   ` Per Abrahamsen
2002-09-02 17:05                                     ` Stefan Monnier
2002-09-02 17:54                                       ` Kai Großjohann
2002-09-02 23:24                                         ` Stefan Monnier
2002-09-03 10:55                                           ` Per Abrahamsen
2002-09-03 13:02                                             ` Miles Bader
2002-09-03 13:53                                               ` Per Abrahamsen
2002-09-03 15:04                                                 ` Stefan Monnier
2002-09-03 17:31                                                 ` Miles Bader
2002-09-03 19:27                                                   ` Andreas Schwab
2002-09-03 22:56                                                     ` Miles Bader
2002-09-03 23:53                                                       ` Miles Bader
2002-09-04 11:59                                                         ` Robert J. Chassell
2002-09-04 22:35                                                           ` Alex Schroeder
2002-09-03 23:23                                                     ` Robert J. Chassell
2002-09-04 10:31                                                       ` Per Abrahamsen
2002-09-04 15:30                                                         ` Robert J. Chassell
2002-09-04 22:25                                                           ` Alex Schroeder
2002-09-05 13:00                                                             ` Robert J. Chassell
2002-09-05 10:00                                                           ` Per Abrahamsen
2002-09-05 14:59                                                             ` Robert J. Chassell
2002-09-05 16:18                                                               ` Francesco Potorti`
2002-09-05 19:13                                                                 ` D. Goel
2002-09-05 15:05                                                             ` Robert J. Chassell
2002-09-05 18:03                                                           ` Richard Stallman
2002-09-04 22:00                                                         ` Alex Schroeder
2002-09-05 10:15                                                           ` Per Abrahamsen
2002-09-06  1:16                                                             ` Miles Bader
2002-09-06 10:07                                                               ` Per Abrahamsen
2002-09-06 22:19                                                                 ` Miles Bader
2002-09-07 12:40                                                                   ` Per Abrahamsen
2002-09-06 17:36                                                             ` Stefan Monnier
2002-09-06 22:21                                                               ` Miles Bader
2002-09-07  0:53                                                                 ` Kim F. Storm
2002-09-07  0:32                                                                   ` Miles Bader
2002-09-07  7:59                                                                     ` Alex Schroeder
2002-09-07 10:28                                                                   ` Richard Stallman
2002-09-09 13:35                                                                   ` Stefan Monnier
2002-09-09 15:45                                                                     ` Per Abrahamsen
2002-09-09 23:34                                                                     ` Richard Stallman
2002-09-07 10:28                                                                 ` Richard Stallman
2002-09-07  7:45                                                               ` Alex Schroeder
2002-09-07 14:08                                                               ` Customizing key bindings Alex Schroeder
2002-09-07 23:43                                                                 ` Miles Bader
2002-09-09  8:05                                                                   ` Per Abrahamsen
2002-09-09  9:19                                                                     ` Miles Bader
2002-09-09 12:20                                                                       ` Per Abrahamsen
2002-09-09 14:09                                                                         ` Miles Bader
2002-09-09 15:23                                                                           ` Per Abrahamsen
2002-09-09 17:25                                                                             ` Stefan Monnier
2002-09-09 14:33                                                                         ` Stefan Monnier
2002-09-09 23:34                                                                           ` Richard Stallman
2002-09-09 23:33                                                                       ` Richard Stallman
2002-09-10 10:29                                                                         ` Per Abrahamsen
2002-09-11  1:40                                                                           ` Richard Stallman
2002-09-10 17:57                                                                         ` Alex Schroeder
2002-09-11  3:05                                                                           ` Richard Stallman
2002-09-11  8:52                                                                             ` Per Abrahamsen
2002-09-09  0:21                                                                 ` Richard Stallman
2002-09-09  1:52                                                                   ` Miles Bader
2002-09-09 23:33                                                                     ` Richard Stallman
2002-09-05  2:47                                                         ` [CVS] f7, f8 bound Richard Stallman
2002-09-05  9:39                                                           ` Per Abrahamsen
2002-09-04 14:23                                                 ` Richard Stallman
2002-09-03 14:12                                               ` Kai Großjohann
2002-09-03 15:09                                                 ` Stefan Monnier
2002-09-03 15:17                                                   ` Kai Großjohann
2002-09-02 14:53                                   ` Richard Stallman
2002-09-02 16:40                                     ` Customizing key bindings (was: Re: [CVS] f7, f8 bound..) Per Abrahamsen
2002-09-02 21:55                                       ` Alex Schroeder
2002-09-03 12:27                                         ` Per Abrahamsen
2002-09-03 22:35                                           ` Alex Schroeder
2002-09-03 22:49                                             ` Alex Schroeder
2002-09-04  0:45                                               ` Alex Schroeder
2002-09-04 10:00                                                 ` Per Abrahamsen
2002-09-05  2:47                                                   ` Richard Stallman
2002-09-05  9:18                                                     ` Per Abrahamsen
2002-09-06  4:01                                                       ` Richard Stallman
2002-09-06  9:51                                                         ` Per Abrahamsen
2002-09-04 15:11                                                 ` Stefan Monnier
2002-09-05  9:26                                                   ` Per Abrahamsen
2002-09-06  4:01                                                     ` Richard Stallman
2002-09-06 22:30                                                       ` Kim F. Storm
2002-09-07 14:12                                                     ` Customizing key bindings Alex Schroeder
2002-09-05 18:03                                                   ` Customizing key bindings (was: Re: [CVS] f7, f8 bound..) Richard Stallman
2002-09-05 18:35                                                     ` Per Abrahamsen
2002-09-06 15:10                                                       ` Richard Stallman
2002-09-05  2:46                                               ` Richard Stallman
2002-09-05 16:17                                                 ` Alex Schroeder
2002-09-06  4:01                                                   ` Richard Stallman
2002-09-07 13:50                                                     ` Customizing key bindings Alex Schroeder
2002-09-05 16:47                                               ` Customizing key bindings (was: Re: [CVS] f7, f8 bound..) Kai Großjohann
2002-09-07 14:20                                                 ` use diff-list in Emacs Alex Schroeder
2002-09-07 15:52                                                   ` Kai Großjohann
2002-09-07 22:46                                                     ` Miles Bader
2002-09-08 19:22                                                       ` Kai Großjohann
2002-09-04 14:20                                           ` Customizing key bindings (was: Re: [CVS] f7, f8 bound..) Richard Stallman
2002-09-05 17:20                                             ` Per Abrahamsen
2002-09-06 17:28                                               ` Stefan Monnier
2002-09-06 22:03                                                 ` Miles Bader
2002-09-07 12:01                                                   ` Per Abrahamsen
2002-09-07 12:40                                                     ` Miles Bader
2002-09-07 13:07                                                     ` Per Abrahamsen
2002-09-07 14:17                                                       ` Robert J. Chassell
2002-09-07 17:48                                                         ` What custom is and does Alex Schroeder
2002-09-07 22:57                                                           ` Miles Bader
2002-09-09  7:49                                                           ` Per Abrahamsen
2002-09-07 18:58                                                         ` Customizing key bindings (was: Re: [CVS] f7, f8 bound..) Kai Großjohann
2002-09-09 13:53                                                       ` Stefan Monnier
2002-09-09 14:59                                                         ` Per Abrahamsen
2002-09-09 23:34                                                         ` Richard Stallman
2002-09-07  9:06                                               ` Alex Schroeder
2002-09-07 12:11                                                 ` Per Abrahamsen
2002-09-07  9:15                                               ` Alex Schroeder
2002-09-07 12:28                                                 ` Per Abrahamsen
2002-09-07 13:48                                                   ` Customizing key bindings Alex Schroeder
2002-09-07 13:56                                                   ` Alex Schroeder
2002-09-07 13:39                                                 ` Alex Schroeder
2002-09-07 15:10                                                   ` Per Abrahamsen
2002-09-09 22:06                                                     ` Alex Schroeder
2002-09-09 22:12                                                       ` Alex Schroeder
2002-09-09 22:49                                                         ` Alex Schroeder
2002-09-09 22:58                                                           ` Stefan Monnier
2002-09-10 10:19                                                           ` Per Abrahamsen [this message]
2002-09-08 12:54                                                 ` Customizing key bindings (was: Re: [CVS] f7, f8 bound..) Richard Stallman
2002-09-09  7:57                                                   ` Per Abrahamsen
2002-09-09 23:33                                                     ` Richard Stallman
2002-09-10 18:07                                                       ` Alex Schroeder
2002-09-11  3:04                                                         ` Richard Stallman
2002-09-11  8:49                                                         ` Per Abrahamsen
2002-09-11 20:03                                                           ` Richard Stallman
2002-09-09 21:09                                                   ` Alex Schroeder
     [not found]                             ` <m2it1qqmae.fsf@primate.xs4all.nl>
2002-09-01 10:36                               ` [CVS] f7, f8 bound Miles Bader
2002-09-01 13:02                               ` Eli Zaretskii
2002-09-01 13:45                                 ` Pavel Janík
2002-09-01 16:57                                   ` Eli Zaretskii
2002-09-01 16:57                                   ` Eli Zaretskii
2002-09-01 13:14                             ` Richard Stallman
2002-09-06 12:55                           ` Francesco Potorti`
     [not found]                         ` <m2r8geqole.fsf@primate.xs4all.nl>
2002-09-01  5:19                           ` Damien Elmes
2002-09-02  0:01                           ` Richard Stallman
2002-09-03  0:04                             ` David A. Cobb
2002-08-29 14:38                   ` Kim F. Storm
2002-08-29 13:47                     ` Francesco Potorti`
     [not found]                   ` <m2wuq6qpai.fsf@primate.xs4all.nl>
2002-09-01 10:45                     ` Miles Bader
2002-08-28 18:42               ` Edward O'Connor
2002-08-29  1:16                 ` Miles Bader
2002-08-28 23:32               ` Richard Stallman
2002-08-29  1:14                 ` Miles Bader
2002-08-30  6:10                   ` Richard Stallman
2002-08-30  6:22                     ` Miles Bader
2002-08-30 19:17                       ` Richard Stallman
2002-08-31  0:40                         ` Kim F. Storm
2002-08-31  2:16                       ` Miles Bader
2002-09-01 13:15                         ` Richard Stallman
2002-09-02  1:23                           ` Miles Bader
2002-09-02 10:22                             ` Kim F. Storm
2002-09-02  9:38                               ` Miles Bader
2002-09-03 13:26                             ` Richard Stallman
2002-09-03 14:39                               ` Kim F. Storm
2002-09-04 14:21                                 ` Richard Stallman
2002-09-08 22:51                                 ` Kim F. Storm
2002-08-30  6:10                   ` Richard Stallman
2002-08-30 14:35                     ` Stefan Monnier
2002-08-30 19:19                       ` Richard Stallman
2002-08-31  0:00                       ` Miles Bader
2002-08-31 11:28                         ` Alex Schroeder
2002-08-30 14:49                     ` Francesco Potorti`
2002-08-31  0:33                       ` Kim F. Storm
2002-08-31  6:07                         ` Eli Zaretskii
2002-08-29 14:42                 ` Kim F. Storm
2002-08-30  1:05                   ` Miles Bader
2002-08-30 12:07                     ` Kim F. Storm
2002-08-30  6:09                   ` Richard Stallman
2002-08-28  6:52       ` Richard Stallman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=rjk7lutaee.fsf@zuse.dina.kvl.dk \
    --to=abraham@dina.kvl.dk \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.