Friday, July 5 2013

More stupid emacs defaults

Emacs 23 adds line-move-visual, on by default, which changes the behavior of previous-line and next-line commands to take you to the next row on the screen. That is, if your line wrapped because it was too long to fit in the window, Control-N takes you to whatever position in that line happens to be one row below the current position.

This is the way the NeXT-derived widgets in MacOS X implemented their “emacs-like” editing, but it’s not the way Emacs has ever worked, which makes it a baffling choice for a default behavior. Especially since it breaks keyboard macros for line-by-line operations, something quickly noticed by users (update: actually, the official release notes don’t even mention a tenth of what they changed; you just have to guess, apparently).

So, using Emacs as an actual text editor now requires, at minimum:

(defun set-auto-mode (&optional foo) (interactive "p") (fundamental-mode))
(setq-default initial-major-mode 'fundamental-mode)
(setq-default enable-local-variables nil)
(global-set-key (kbd "TAB") 'self-insert-command)
(setq-default inhibit-eol-conversion t)
(setq line-move-visual nil)

[and why didn’t I notice when I installed it on my laptop several years ago? Because I reverted to the vendor-supplied Emacs at some point (I no longer recall why), and the Linux distros on our servers only recently upgraded to it]