|
From: | Andreas Röhler |
Subject: | Re: over-engineered (and under-standardized) inferior interfaces |
Date: | Fri, 22 Aug 2014 07:57:11 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Icedove/24.7.0 |
On 22.08.2014 05:45, Stefan Monnier wrote:
Just some comments on the default bindings. I understand these are the historically-available ones, but I do feel that if we create a new mode like this, it might be worthwhile to rethink them.Sure. prog-proc-mode is really just an experiment, and I'm quite open to changes, both in terms of UI and implementation.With the availability of an "active region", I think it would be nice to consolidate send-buffer and send-region to a single binding.Fine.Using a nice binding like C-c C-c for a somewhat less-common command like "compile the current file in the REPL" (as opposed to using M-x (re)compile) seems like a waste.FWIW under sml-mode, C-c C-c runs a "make"-like command (but it's a command passed to the inferior process rather than being a separate process like in M-x compile).So I'd suggest using C-c C-c for a new prog-proc-send-region-or-buffer.I think "send the current buffer" is not good enough, except for those rare systems where a single file is all you need.I'm also unsure about using up too many C-c C-X bindings in this minor mode; the major mode that activates it won't be able to easily override those bindings locally, so it might be a good idea to be a bit more conservative with the default bindings, providing the commands but not the bindings for the less common use cases (load, compile, region, buffer).My memory failed me: if you look at the code, you'll see that prog-proc-mode is not a minor mode but a major-mode, to be used as parent mode (in place of prog-mode, from which it derives). So major modes can very easily override those bindings. But yes: we shouldn't use too many such bindings. Stefan
Hi, very interesting move, thanks all. Started some weeks o project "general-key", which seems to point into the very same direction. Below the README: [...] For common items like `line', `word' or `symbol' Emacs' language modes commonly don't touch the keybinding. That way `backward-word', `copy-word', `forward-word', `kill-word', `mark-word' etc. don't need configuration. However, with programming, there are a couple of common cases, not dealt with yet. - statements, for example assigments - conditionals resp. loops - combinations of that, i.e. functions for example WRT to function we might have for all modes `general-key-function-backward' `general-key-function-copy' `general-key-function-forward' `general-key-function-kill' `general-key-function-mark' If general-key-mode provides key-binding for basic types, these keys must not be changed or configured again by language-modes. Now it would be at the modes, for example WRT python-mode.el: (setq general-key-function-backward 'py-backward-def-or-class) (setq general-key-function-copy 'py-copy-def-or-class) (setq general-key-function-forward 'py-forward-def-or-class) (setq general-key-function-kill 'py-kill-def-or-class) (setq general-key-function-mark 'py-mark-def-or-class) Respective with block, statement and expression maybe. (setq general-key-block-backward 'py-backward-block) ... A second group of commands simplified that way deals with braces, brakcets, parenthesis or does a trim. (setq general-key-region-brace 'ar-brace-region-atpt) (setq general-key-region-bracket 'ar-bracket-region-atpt) (setq general-key-region-trim 'ar-trim-region-atpt) (setq general-key-region-parentize 'ar-parentize-region-atpt) If a region might be braced, parenthized etc. in a suitable way, these objects also should be easy to mark, copy, delete resp. kill and moved on: Here an example using the parentized form: (setq general-key-parentized-backward 'ar-beginning-of-parentized-atpt) (setq general-key-parentized-copy 'ar-copy-parentized-atpt) (setq general-key-parentized-trim 'ar-trim-parentized-atpt) (setq general-key-parentized-forward 'ar-forward-parentized-atpt) (setq general-key-parentized-kill 'ar-kill-parentized-atpt) (setq general-key-parentized-mark 'ar-mark-parentized-atpt) ;;;;;;; Cheers, Andreas http://bazaar.launchpad.net/~a-roehler/s-x-emacs-werkstatt
[Prev in Thread] | Current Thread | [Next in Thread] |