all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Eric M. Ludlam" <eric@siege-engine.com>
To: Noah Lavine <noah549@gmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: Key Mapping Proposal
Date: Sat, 16 Jan 2010 09:22:40 -0500	[thread overview]
Message-ID: <4B51CBB0.3010204@siege-engine.com> (raw)
In-Reply-To: <16d22e431001151603i5d2fab77u4f3054bb7e708323@mail.gmail.com>

Hi,

There is a different style of solution for the functions beginning/end 
of defun.  For beginning-of-defun, there is a 
beginning-of-defun-function.  The mode would then override the fcn, and 
not the keybinding at all.  If all 'classic' keybound fcns used this 
technique, then modes could override the functionality, and a user could 
override the global keybindings, and get what they want.

To plug my `mode-local' concept again, this tools is designed to make 
setting up something like beginning-of-defun-function declarative, 
instead of hand-written functional.  Using a common architecture for 
making functions overridable by mode would make it easier to hit all the 
common functions that might fall into this catagory.

I developed mode-local for CEDET/Semantic because so much of the 
parsing/analyzing architecture is mode specific.  The result is clean 
high-level code, and mode specific behaviors.

Eric

Noah Lavine wrote:
> Dear emacs-devel,
> 
> I'd like to suggest a change to the way modes bind keys, to make it
> easier for users to customize keys.
> 
> Right now, as far as I can tell, each mode defines some functions and
> then binds the appropriate keys to them. There are certain keys that
> have conventional meanings, so "C-f" means forward even if you're in
> picture-mode, and so on, and modes all try to respect this. The
> problem comes if you want to change the meaning of not just one key
> sequence, but the convention. Some people might like to use C-f, C-d,
> C-s, and C-e to move forward, down, back and up, because they're right
> next to each other. In order to achieve this now, you would need to
> rebind those keys in each mode that you use. It seems like there
> should be a better way.
> 
> My suggestion is this: have one location which stores the user's
> keybinding for the "forward" key, whatever "forward" means for a
> particular mode. Any given mode would then use this to bind their
> particular "forward" function to whatever key the user wanted. Do the
> same for other keys with conventional meaning, and then modify the
> major modes to use these in their keybindings.
> 
> One issue that might occur is if the user's bindings for a
> conventional key conflict with a binding unique to one particular
> major mode. You'd want a system for bouncing the other bindings around
> to prevent this, perhaps by keeping a list of unbound keys and then
> assigning the functions that need bindings to those keys one by one.
> This would give up the ability to give mnemonic key bindings to
> functions, but the issue would only occur if the user was customizing
> their keys, in which case it seems like the user's preferences should
> take priority.
> 
> I'm happy to contribute work to this, but I wanted to ask emacs-devel
> first to see if you were interested in this, and if so, what you
> thought the right approach was.
> 
> Thank you
> Noah Lavine
> 
> 
> 




  parent reply	other threads:[~2010-01-16 14:22 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-16  0:03 Key Mapping Proposal Noah Lavine
2010-01-16  7:57 ` Fabian Ezequiel Gallina
2010-01-16  8:17 ` Stephen J. Turnbull
2010-01-16 18:41   ` Noah Lavine
2010-01-17  5:49     ` Stephen J. Turnbull
2010-01-16  8:25 ` Teemu Likonen
2010-01-16 14:22 ` Eric M. Ludlam [this message]
2010-01-16 19:28 ` Stefan Monnier

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=4B51CBB0.3010204@siege-engine.com \
    --to=eric@siege-engine.com \
    --cc=emacs-devel@gnu.org \
    --cc=noah549@gmail.com \
    /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.