unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Drew Adams" <drew.adams@oracle.com>
To: <rms@gnu.org>, "'Juri Linkov'" <juri@jurta.org>
Cc: emacs-devel@gnu.org
Subject: RE: customizing key definitions with Customize
Date: Wed, 14 May 2008 21:46:48 -0700	[thread overview]
Message-ID: <002701c8b646$afedc3a0$0200a8c0@us.oracle.com> (raw)
In-Reply-To: <E1JwK1L-0003mQ-IE@fencepost.gnu.org>

>     what the user will see: all current key bindings in this keymap
>     (this may be too many as some keymaps have dozens of key 
>     bindings),
>     or an empty list with the single [Insert] button to add new key
>     bindings that will override the existing ones after saving the
>     Customization buffer.
> 
> Perhaps we should handle this with two alternatives, like
> customization of fonts.  You can customize a font either in terms of
> its appearance in the current kind of screen, or its general 
> conditions that apply to all kinds of screens.

Perhaps we should handle it as I suggested: customize an option. A keymap-valued
symbol is just a variable. Either such a variable could itself be made a user
option or, as I showed, a separate but corresponding user option can be created.
Both approaches can be treated the same way (e.g. as I indicated); it depends on
what we want.

If we want a given keymap variable itself to be completely customizable (i.e.,
for all of its keys), then we can just make it a defcustom of the sort I
indicated. If we want some keymap variables not to be options, then we need not
use defcustom for them. If we want a given keymap variable to have only some of
its keys customizable (at least by default), then we can create a separate user
option that corresponds to only those keys.

The code I sent indicates how to do this. As I said, to make the option's
customizable key definitions be the only ones in the keymap, it is enough to
change the :set function I used so that it first empties the keymap, before it
adds the customized keys.

That is, if a keymap variable is to be completely customizable, then that is
what we would want to do: make sure that :set not only adds bindings but also
changes and deletes existing bindings. That is the same :set function I sent,
but with the addition of a preliminary operation that empties the keymap, so
that setting the option makes the keymap reflect just those key definitions that
are present.

Unlike faces, keymaps, apart from keymap-valued variables, do not have names, so
the approach I suggested makes sense: customize keymap variables, not
"first-class" keymap objects.

We could instead entertain the idea of treating keymaps like faces - giving them
names independently of using variables, but I don't see the point in that. It
should be enough to turn, say, `lisp-mode-map' into a defcustom of the sort that
I indicated, if we want to make it entirely customizable.






  reply	other threads:[~2008-05-15  4:46 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-11 19:40 customizing key definitions with Customize Drew Adams
2008-05-11 22:02 ` Lennart Borgman (gmail)
2008-05-11 22:28   ` Drew Adams
2008-05-11 22:40     ` Lennart Borgman (gmail)
2008-05-11 23:02       ` Drew Adams
2008-05-11 23:09         ` Lennart Borgman (gmail)
2008-05-11 23:19           ` Drew Adams
2008-05-11 23:23             ` Lennart Borgman (gmail)
2008-05-11 23:34               ` Drew Adams
2008-05-12 20:42                 ` Lennart Borgman (gmail)
2008-05-14  5:24         ` Drew Adams
2008-05-12  8:59 ` Reiner Steib
2008-05-12 20:58   ` Drew Adams
2008-05-12 11:20 ` Richard M Stallman
2008-05-12 14:01   ` Drew Adams
2008-05-13  0:03     ` Juri Linkov
2008-05-13  0:40       ` Lennart Borgman (gmail)
2008-05-13 14:59       ` Richard M Stallman
2008-05-13 23:59         ` Juri Linkov
2008-05-14  1:10           ` Stefan Monnier
2008-05-14 16:40           ` Richard M Stallman
2008-05-15  4:46             ` Drew Adams [this message]
2008-05-15 17:39               ` Richard M Stallman
2008-05-16  8:01                 ` Drew Adams
2008-05-16 17:46                   ` Richard M Stallman
2008-05-16 18:00                     ` David Kastrup
2008-05-16 23:58                       ` Drew Adams
2008-05-17  5:00                       ` Richard M Stallman
2008-05-16  7:51               ` Drew Adams
2008-05-18  1:22                 ` Drew Adams
2008-05-18  9:07                   ` Key/menu bug? (was: customizing key definitions with Customize) David Kastrup
2008-05-13 15:07       ` customizing key definitions with Customize David Reitter
2008-05-13 19:05         ` David Kastrup
2008-05-14  5:23       ` Drew Adams
2008-05-13  5:16     ` Richard M Stallman
2008-05-14  5:23       ` Drew Adams
2008-05-14 16:39         ` Richard M Stallman
2008-05-15  4:36           ` Drew Adams
2008-05-15 17:39             ` Richard M Stallman
2008-05-16  8:02               ` Drew Adams
2008-05-16 17:46                 ` Richard M Stallman
2008-05-16 23:58                   ` Drew Adams
2008-05-12 20:42   ` Lennart Borgman (gmail)

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to='002701c8b646$afedc3a0$0200a8c0@us.oracle.com' \
    --to=drew.adams@oracle.com \
    --cc=emacs-devel@gnu.org \
    --cc=juri@jurta.org \
    --cc=rms@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 public inbox

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

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).