[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: M-x mystery
From: |
Drew Adams |
Subject: |
RE: M-x mystery |
Date: |
Mon, 2 Jan 2012 15:25:40 -0800 |
> The problem is the variable meta-prefix-char, which is supposed to
> alter that relationship.
>
> If I load a file containing only the command (setq
> meta-prefix-char [f5]) and check the value of the variable,
> the answer is [f5].
>
> ******** Yet, after that, ALT-x is still interpreted as ESC
> x. ********
>
> You might say that [f5] is not a valid prefix key. But [f2] is (it's
> bound to 2C-mode-map in two-column.el). After I set meta-prefix-char
> to [f2], typing ALT-x is still interpreted as ESC x, not [f2] x.
I'm really no expert on these things. No doubt someone will clarify better.
But [f2] is not a _character_. (It is a vector.) A character is a non-negative
integer (in a certain range) - see the Elisp manual, node `Character Codes'.
`meta-prefix-char' is a user option. Try using Customize to change its value.
Customize does type-checking, and it will not even allow you to set the variable
to [f2]. It raises this error:
"This field should contain a single character"
(It should say "must", not "should".)
> In fact, I can't even duplicate the example near the bottom of the
> "Functions for Key Lookup" page (link above). Namely, setting
> meta-prefix-char to 24 **should** make M-x behave like C-x, according
> to that page. But that does not happen;
I think it does. Try `C-h k M-s' or `C-h k C-M-s'. They correspond to `C-x s'
and `C-x C-x', respectively.
> even with meta-prefix-char=24,
> ALT-x is interpreted as ESC x.
I think you're doing things backwards. Setting `meta-prefix-char' to the `C-x'
character (24) makes what used to be treated as `C-x SOMETHING' be treated as
`M-SOMETHING'. If `C-x x' were defined as a command, then `M-x' would then
invoke that command (and not `execute-extended-command'). Since `C-x x' is
undefined by default, after setting `meta-prefix-char' to 24, `C-h k M-x' says
it is undefined.
In any case, doing that in no way affects the treatment of Meta as ESC, AFAIK.
> What have I misunderstood?
1. The value of `meta-prefix-char' needs to be a character.
2. I think the treatment of Meta as ESC happens at a different level. Node
`Format of Keymaps' says this:
"Keymaps do not directly record bindings for the meta characters.
Instead, meta characters are regarded for purposes of key lookup as
sequences of two characters, the first of which is <ESC> (or whatever
is currently the value of `meta-prefix-char'). Thus, the key `M-a' is
internally represented as `<ESC> a', and its global binding is found at
the slot for `a' in `esc-map' (*note Prefix Keys::).
This conversion applies only to characters, not to function keys or
other input events; thus, `M-<end>' has nothing to do with `<ESC>
<end>'."
It seems that a Meta character is treated as a sequence of two chars, the first
of which is the value of `meta-prefix-char'. AFAIK, that's just the way it is.
Someone will correct me if I misunderstand.
- M-x mystery, Silvio Levy, 2012/01/02
- Re: M-x mystery, Silvio Levy, 2012/01/02
- Re: M-x mystery, Silvio Levy, 2012/01/02
- Re: M-x mystery, Silvio Levy, 2012/01/02
- RE: M-x mystery,
Drew Adams <=
- Re: shell-command causes problems with absolute/relative paths in TAGS, Bob Proulx, 2012/01/05
- RE: shell-command causes problems with absolute/relative paths in TAGS, David Chappaz, 2012/01/05
- RE: shell-command causes problems with absolute/relative paths in TAGS, Gregor Zattler, 2012/01/05
- Re: shell-command causes problems with absolute/relative paths in TAGS, Bob Proulx, 2012/01/05
- RE: shell-command causes problems with absolute/relative paths in TAGS, David Chappaz, 2012/01/06
- Re: shell-command causes problems with absolute/relative paths in TAGS, Eli Zaretskii, 2012/01/06
- RE: shell-command causes problems with absolute/relative paths in TAGS, David Chappaz, 2012/01/06