From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Uday S Reddy Newsgroups: gmane.emacs.devel Subject: Re: Key bindings proposal Date: Fri, 27 Aug 2010 09:18:52 +0100 Message-ID: <19575.29932.150000.820415@gargle.gargle.HOWL> References: <19534.1494.627000.357123@gargle.gargle.HOWL> <19537.40472.267000.563053@gargle.gargle.HOWL> <87tymlv41y.fsf@mail.jurta.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: dough.gmane.org 1282897167 23328 80.91.229.12 (27 Aug 2010 08:19:27 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Fri, 27 Aug 2010 08:19:27 +0000 (UTC) Cc: Uday S Reddy , emacs-devel@gnu.org To: Juri Linkov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Aug 27 10:19:25 2010 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Oou9l-0002pm-0X for ged-emacs-devel@m.gmane.org; Fri, 27 Aug 2010 10:19:25 +0200 Original-Received: from localhost ([127.0.0.1]:58837 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Oou9j-00042v-U1 for ged-emacs-devel@m.gmane.org; Fri, 27 Aug 2010 04:19:23 -0400 Original-Received: from [140.186.70.92] (port=60016 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Oou9Y-0003yI-7Q for emacs-devel@gnu.org; Fri, 27 Aug 2010 04:19:17 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Oou9T-0004XF-8D for emacs-devel@gnu.org; Fri, 27 Aug 2010 04:19:12 -0400 Original-Received: from sun61.bham.ac.uk ([147.188.128.150]:42147) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Oou9T-0004Wz-3t for emacs-devel@gnu.org; Fri, 27 Aug 2010 04:19:07 -0400 Original-Received: from [147.188.128.127] (helo=bham.ac.uk) by sun61.bham.ac.uk with esmtp (Exim 4.67) (envelope-from ) id 1Oou9N-0004XM-PJ; Fri, 27 Aug 2010 09:19:01 +0100 Original-Received: from mx1.cs.bham.ac.uk ([147.188.192.53]) by bham.ac.uk with esmtp (Exim 4.43) id 1Oou9N-0000Jv-FR; Fri, 27 Aug 2010 09:19:01 +0100 Original-Received: from gromit.cs.bham.ac.uk ([147.188.193.16] helo=MARUTI.cs.bham.ac.uk) by mx1.cs.bham.ac.uk with esmtp (Exim 4.51) id 1Oou9N-0006pC-GP; Fri, 27 Aug 2010 09:19:01 +0100 Original-Newsgroups: gmane.emacs.devel In-Reply-To: <87tymlv41y.fsf@mail.jurta.org> X-Mailer: VM 8.1.92a under 23.2.1 [EmacsW32 Version 1.58 2010-08-02] (i386-mingw-nt5.1.2600) X-detected-operating-system: by eggs.gnu.org: Solaris 10 (beta) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:129285 Archived-At: Juri Linkov writes: > All in all, is it a conclusion we are leaning towards: > > 1. All commands should have a name designed for M-x completions. > 2. Most commands should be presented in the main menu. > 3. Few basic commands should be bound to a key sequence. > 4. Some of most frequently used command should be added to the toolbar. Dear Juri, Thanks for an excellent summary and putting the life back into this thread! A couple of amendments. My proposal for > 1. All commands should have a name designed for M-x completions. wasn't actually that M-x should be extended or modified. Rather, a prefix key like M-x (say, M-z for argument's sake) would be used for invoking mode-specific "command names". Each mode would bind such command names to actual elisp functions, and this allows us to reuse the command names in each mode. So `M-z isearch' can provide isearch through files in dired, isearch through buffers in buf-menu, isearch through messages in Rmail or Gnus or VM, etc. Similarly, you might have commands `M-z next', `M-z previous', `M-z view', `M-z other-window', `M-z mark', `M-z delete', `M-z undelete', `M-z execute' and so on. The key idea is that command names form a *new namespace*, created explicitly for providing efficient user interaction. In addition, my idea also includes: 1a. key bindings can be made to "command names". This allows the user to create a personal keymap like n for M-z next p for M-z previous v for M-z view o for M-z other-window m for M-z mark d for M-z delete u for M-z undelete x for M-z execute ... and install it in every mode where it might make sense. This would save work for configuration and re-skinning. Note that Stephen Turnbull countered by saying that a lot of this can already be achieved using the existing elisp technology. I am not entirely convinced, but those suggestions need to be explored. Regarding: > 2. Most commands should be presented in the main menu. I don't have a firm view on this. There is also a case for having simple menus that are not intimidating. But, I think one can probably have the cake and eat it too in this case. It is easy enough to install different menus depending on the user's preference. A beginner might start with simple menus, and graduate to bigger ones when he/she wants more. Regarding the contentious issue: > 3. Few basic commands should be bound to a key sequence. we will probably need to continue debating it. "Less is more" only if the users can turn it into "more". If the users have a good technology for making their own key bindings, then Emacs can ship with fewer and fewer built-in key bindings. Or, you can at least detach the majority of key bindings from standard Emacs and make them customization packages. I will be going offline for a few weeks. I will catch up after I get back. Cheers, Uday