On Dec 7, 2009, at 2:55 PM, Matthew Dempsky wrote: > On Thu, Dec 3, 2009 at 7:36 PM, Lennart Borgman > wrote: >> It binds TAB to ruby-indent-line. That is against the rules. ;-) > > Out of curiosity, are 'rules' like this codified anywhere? As I've > started using Emacs seriously again, I've started noticing a lot of > little inconsistencies between extensions (e.g., how temporary windows > are displayed/destroyed). I'd be happy to submit patches to help > improve this if someone could point out the correct behavior. I'd like to know that, too. There are many equivalent commands bound to different keys in different major modes. My pet peeves are - Indentation (left/right, e.g. C-c C-> in python-mode, as well as re-indenting the current line according to syntax) - Deleting the content of a comint output buffer (e.g. C-c M-o in SLIME, but different elsewhere) - Executing / evaluating a line or an expression or a region with the inferior process, e.g. C-x C-e in Elisp and in SLIME's lisp-mode, but C-j (for the line) in R-mode (ESS). Then, SLIME and Python-mode have C-c C-r to evaluate the region, but emacs-lisp-mode doesn't have that. - Running the inferior interpreter process. M-x R in ESS, M-x slime in SLIME (rather than M-x lisp), and M-x run-python (rather than M-x python) in python-mode. Generally, the point here would not be to just define canonical bindings for these functions, but define more canonical buffer-local variables that contain appropriate function names, such as the existing `indent-line-function', so that the user (or we) can bind whatever standard keys to the appropriate commands. See also: http://www.opensubscriber.com/message/emacs-devel@gnu.org/3558580.html