I love the versatility of emacs, even without any additional packages. You get a powerful and fast editing environment that is ridiculously extendable if you so desire.
I used to maintain quite an extensive .emacs
configuration, with all sorts
of third party packages and custom functions. But early this year, after about
a year of heavy Emacs use, I felt the pain of maintaining a working,
organized, and fast Emacs setup was just too much. After a certain threshold,
twiddling around editor configuration for hours seems to look awfully like
useless bike-shedding. And I did find myself sinking a couple hours at a time
on my .emacs
and .emacs.d
. “Time for a fucking change,” I thought.
So, I took an axe to my .emacs
. I made a very minimal configuration that
distilled my previous learnings into a simple collection of basic overrides.
The basics are all there, and the remaining annoyances require too big of an
investment of effort over a long time to be worth it for me.
A bonus of this minimal config is that emacs
is instantaneous, even without
the whole “run emacs as a daemon and connect to it” shenanigans.
(I must admit that lately I’ve dropped even this in favor of Sublime Text 3 + sublemacspro).
But anyway, here’s my minimal config (also here as this gist):
; Want a fast emacs startup? Copy this to ~/.emacs.minimal and:
;
; cp ~/.emacs ~/.emacs.bak
; echo "(load-file \"/absolute/path/to/.emacs.minimal\")" > ~/.emacs
;
; Switch it back if you don't like it.
;
;; cutoff for word wrap
(setq-default fill-column 79)
;; F12 toggles auto-fill mode
(global-set-key [f12] 'auto-fill-mode)
;; C-- keybinding for undo (removes the shift)
(global-set-key [(control -)] 'undo)
;; turn on pending delete (when a region
;; is selected, typing replaces it)
(delete-selection-mode t)
;; when on a tab, make the cursor the tab length
(setq-default x-stretch-cursor t)
;; avoid garbage collection (default is only 400k)
(setq-default gc-cons-threshold 4000000)
;; twiddle miscellaneous customization options
(custom-set-variables
'(sentence-end-double-space nil)
'(truncate-partial-width-windows nil)
'(line-number-mode t)
'(column-number-mode t)
'(query-user-mail-address nil)
'(visible-bell t))
;; prevent creation of backup files. I'd rather manually handle that.
(setq make-backup-files nil)
;; set indentation to 2
(setq standard-indent 2)
;; set newline as required for every file's last line
(setq require-final-newline nil)
;; freaking don't ask me to type out "yes" and "no"
(defalias 'yes-or-no-p 'y-or-n-p)
;; Prevent the cursor from blinking
(blink-cursor-mode 0)
;; Don't use messages that you don't read
(setq initial-scratch-message "")
(setq inhibit-startup-message t)
;; key binding for fill-region
(global-set-key (kbd "C-c f") 'fill-region)
;; disable color crap that pukes up everywhere
(setq-default global-font-lock-mode nil)