summaryrefslogtreecommitdiff
path: root/.config/emacs/init.el
diff options
context:
space:
mode:
Diffstat (limited to '.config/emacs/init.el')
-rw-r--r--.config/emacs/init.el114
1 files changed, 81 insertions, 33 deletions
diff --git a/.config/emacs/init.el b/.config/emacs/init.el
index 5647398..a36cf37 100644
--- a/.config/emacs/init.el
+++ b/.config/emacs/init.el
@@ -1,4 +1,5 @@
-; Use XDG-ish locations
+; This config requires Emacs 24(+?)
+;; Use XDG-ish locations ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq xdg-cache-home (file-name-as-directory (or (getenv "XDG_CACHE_HOME") "~/.cache")))
(setq
package-user-dir (concat xdg-cache-home "emacs/elpa")
@@ -14,7 +15,7 @@
wl-init-file (concat user-emacs-directory "wl.el")
)
-;; The basics I can't live without ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; The basics that I can't use Emacs without ;;;;;;;;;;;;;;;;;;;;;;;;;
(show-paren-mode 1)
(column-number-mode 1)
(line-number-mode 1)
@@ -33,14 +34,19 @@
point-entered minibuffer-avoid-prompt
face minibuffer-prompt
))
-
-;; Preliminary settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(set-face-attribute 'default nil :height 80)
(add-to-list 'load-path user-emacs-directory)
(load custom-file 'noerror)
-;; Bootstrap ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Early settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; This isn't particularly important, but set it before doing a whole
+; lot (loading packages), so there isn't a weird change in text size.
+(set-face-attribute 'default nil :height 80)
+
+
+;; Bootstrap el-get ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; This downloads and installs el-get (package management) if isn't
+; installed.
; Derived from ELPA installation
; http://tromey.com/elpa/install.html
@@ -58,24 +64,40 @@
(let ((el-get-install-branch "master")) ;; live life on the edge
(eval-url "https://github.com/dimitri/el-get/raw/master/el-get-install.el")))
-;; Install plugins ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Install packages ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; This is kinda funny how it works.
+;
+; package.el/ELPA (The standard package manager in Emacs 24) has
+; terrible programatic management. It's great at installing packages,
+; but only interactively. So, I
+; 1) Disable package.el from getting loading all downloaded packages
+; 2) Use el-get to load a specified list of packages from elpa.
+;
+; This is also nice because I can do event-base programming for what
+; to do once a package is loaded, using :after.
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(setq package-enable-at-startup nil)
+; What packages el-get should get from ELPA (if it gets them at all)
(setq el-get-sources '(
- (:name dtrt-indent :type elpa
+ ; Minor modes
+ (:name dtrt-indent :type elpa ; Detect indent style for existing files
:after (dtrt-indent-mode 1))
+ (:name page-break-lines :type elpa ; Display form-feeds pretty
+ :after (global-page-break-lines-mode 1))
+ (:name smart-tabs-mode :type elpa ; Indent with tabs, align with spaces
+ :after (progn
+ (smart-tabs-mode 1)
+ (apply 'smart-tabs-insinuate (mapcar 'car smart-tabs-insinuate-alist))))
+ ; Major modes
(:name coffee-mode :type elpa
:after (add-hook 'coffee-mode-hook
'(lambda ()
(set (make-local-variable 'tab-width) 2)
(set (make-local-variable 'indent-tabs-mode) nil)
)))
- (:name smart-tabs-mode :type elpa
- :after (progn
- (smart-tabs-mode-enable)
- (apply 'smart-tabs-insinuate (mapcar 'car smart-tabs-insinuate-alist))))
(:name graphviz-dot-mode :type elpa)
(:name markdown-mode :type elpa
:after (add-to-list 'auto-mode-alist '("\\.ronn\\'" . markdown-mode)))
@@ -83,18 +105,25 @@
:after (put 'nginx-indent-level 'safe-local-variable 'integerp))
(:name scss-mode :type elpa)
))
+; What packages el-get should install, both from above, and it's
+; internal list of sources.
(el-get 'sync '(el-get
- apel flim semi wanderlust
+ ; Minor modes
dtrt-indent
smart-tabs-mode
- nginx-mode
+ page-break-lines
+ ; Major modes
+ apel flim semi wanderlust
markdown-mode
- ;nxhtml
+ nginx-mode
+ ;nxhtml ; nxhtml is invasive, only enable if actively using
+ php-mode-improved
))
-;; General settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Misc. crap
-(if (fboundp 'tool-bar-mode) (tool-bar-mode -1))
+(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
(defadvice align-regexp (around align-with-spaces)
(let ((indent-tabs-mode nil)) ad-do-it))
@@ -103,6 +132,24 @@
(require 'uniquify)
(load "emacsutils")
+(setq-default truncate-lines t)
+(setq
+ inhibit-startup-screen t
+ org-log-done 'time
+ gamegrid-user-score-file-directory "/var/games/emacs/"
+ )
+
+
+
+;; Make the mouse work in an xterm
+(when (fboundp 'xterm-mouse-mode)
+ (xterm-mouse-mode 1)
+ (add-hook 'after-make-frame-functions
+ '(lambda (frame)
+ (if xterm-mouse-mode (xterm-mouse-mode 1))
+ )))
+
+;; Use mailcrypt to encrypt/decrypt email
(when (require 'mailcrypt nil t)
(mc-setversion "gpg")
(add-hook 'wl-summary-mode-hook 'mc-install-read-mode)
@@ -129,13 +176,6 @@
mc-modes-alist)))
)
-(setq-default truncate-lines t)
-(setq
- inhibit-startup-screen t
- org-log-done 'time
- gamegrid-user-score-file-directory "/var/games/emacs/"
- )
-
;; Indent settings
(setq-default
indent-tabs-mode t
@@ -148,7 +188,7 @@
;; Backup settings
(setq
backup-by-copying t ;; don't clobber symlinks
- backup-directory-alist '(("." . "~/.cache/emacs/emacs/saves")) ;; don't litter my fs tree
+ backup-directory-alist '(("." . (concat xdg-cache-home "emacs/saves"))) ;; don't litter my fs tree
delete-old-versions t
kept-new-versions 6
kept-old-versions 2
@@ -172,6 +212,16 @@
'fullboth)))))
(global-set-key [f11] 'toggle-fullscreen)
+;; Automatically load smerge mode for merge files
+(defun try-smerge-mode ()
+ (save-excursion
+ (goto-char (point-min))
+ (when (re-search-forward "^<<<<<<< " nil t)
+ (smerge-mode 1))))
+(add-hook 'find-file-hook 'try-smerge-mode t)
+
+
+;; All my weird mode-specific settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-hook 'text-mode-hook 'turn-on-auto-fill)
@@ -202,12 +252,10 @@
(set (make-local-variable 'tab-width) 4)
))
+(add-hook 'php-mode-hook
+ '(lambda()
+ (c-set-offset 'cpp-macro 0)
+ ))
+
(add-to-list 'auto-mode-alist '("PKGBUILD" . sh-mode))
(add-to-list 'auto-mode-alist '("SRCBUILD" . sh-mode))
-
-(defun try-smerge-mode ()
- (save-excursion
- (goto-char (point-min))
- (when (re-search-forward "^<<<<<<< " nil t)
- (smerge-mode 1))))
-(add-hook 'find-file-hook 'try-smerge-mode t)