[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: create new key prefix
Re: create new key prefix
Wed, 20 Feb 2013 12:44:34 -0500
On Wed, Feb 20, 2013 at 4:35 AM, ken <email@example.com> wrote:
> On 02/19/2013 08:41 PM Tim Visher wrote:
>> On Tue, Feb 19, 2013 at 8:36 PM, ken<firstname.lastname@example.org> wrote:
>>> On 02/19/2013 08:20 PM Tim Visher wrote:
>>>> On Tue, Feb 19, 2013 at 6:26 PM, ken<email@example.com> wrote:
>>>>> I've defined quite a few new keys over the years and so would like to
>>>>> a new key prefix. I.e., I want to be able to define keys such as "C-c
>>>>> "C-c p m", etc. So how do I tell emacs that (for all possible modes) I
>>>>> "C-c p" to look for the new key definitions.
>>>>> From what I've read so far, how this is done depends a lot on the
>>>>> emacs version. Mine's 22.1.1.
>>>> `(global-set-key (kbd "C-c p m") 'func-name)` doesn't work for you?
>>>> The caveat to that is that modes down the line can possible shadow the
>>>> binding. But that's easy enough to solve with `(eval-after-load…`
>>> Thanks much for the reply. I have almost no idea what you said, but it
>>> me to try the code which I already wrote (which I didn't do before
>>> because I
>>> didn't think it would work, thought sure there was something missing).
>>> code I already wrote and left sitting there untested for a couple-three
>>> hours... it works!!
>>> Well that's a completely new experience for me. B^D
>> LOL. Good to know.
>> As an aside, what are you confused about regarding what I said? Maybe
>> I can help clear some things up for you?
> What I read in several docs on the web implied that a command was needed
> first to create a sparse map (i.e., define-prefix-command) and then to
> assign it to a key prefix, in my case, "C-c p". So when you wrote/asked,
> "`(global-set-key... doesn't work for you?", it didn't compute with me at
> all at first because it seemed like you were ignoring/forgetting all that.
> But then 1% of me thought, maybe this guy is one of the 0.02% who knows what
> he's talking about, prompting me to try running my own code (which was
> likewise ignoring/forgoing sparse map creation etc.). My crap not only ran
> without error, but it also worked perfectly!
Generally you use sparse maps, etc. when you're defining a keymap for
a mode that you're writing or when you want to activate a group of
keys all at once. In your case you probably aren't intending to do
> The other part is the reference to "(eval-after-load..."; from your context
> I gather that it's meant to remedy some other code stepping on my
> keybindings (and perhaps too other definitions). But how, when, and where
> to actually implement that function gribbles the laft whicher bonkhaft.
`eval-after-load` is just a way to evaluate a function after a library
is loaded. In other words, if I wanted to have `C-c p p` do something
but `mode-x` defined `C-c p p` to do something else, the easiest way
I've found to step on the mode's definition is to do an
`(eval-after-load 'mode-x '(local-set-key (kbd "C-c p p")
'func-name))`. That will reset they key in that mode back to what you
want it to be.
http://five.sentenc.es/ -- Spend less time on mail