summaryrefslogtreecommitdiffstats
path: root/emacs
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2012-09-07 15:21:59 +0200
committerGravatar Tom Willemsen2012-09-07 15:21:59 +0200
commit6bc9482e0beffe9d93e39eac93e33f4111c71b28 (patch)
treebe8b2553097481887199fda26e4ff82df4bde772 /emacs
parente81cc4865d499b622d27ba19938bf1340051559f (diff)
downloaddotfiles-6bc9482e0beffe9d93e39eac93e33f4111c71b28.tar.gz
dotfiles-6bc9482e0beffe9d93e39eac93e33f4111c71b28.zip
emacs/init.el
Diffstat (limited to 'emacs')
-rw-r--r--emacs/init.el150
1 files changed, 66 insertions, 84 deletions
diff --git a/emacs/init.el b/emacs/init.el
index add92ae..41765af 100644
--- a/emacs/init.el
+++ b/emacs/init.el
@@ -1,9 +1,16 @@
+;;; init.el --- ryuslash's emacs init
+
+;;; Commentary:
+;; Does so much and changes so often
+
(require 'geiser-install)
(require 'iso-transl)
(require 'newcomment)
(require 'uniquify)
(require 'w3m-load)
+;;; Code:
+
(eval-and-compile
(package-initialize)
@@ -14,34 +21,6 @@
'("/usr/share/emacs/site-lisp" "~/.emacs.d/site-lisp"))
(add-to-list 'load-path "~/.emacs.d/"))
-(eval-when-compile
- (require 'appt)
- (require 'browse-url)
- (require 'em-dirs)
- (require 'em-prompt)
- (require 'emms-source-file)
- (require 'erc-join)
- (require 'erc-stamp)
- (require 'fill-column-indicator)
- (require 'geiser-repl)
- (require 'gtags)
- (require 'hideshow)
- (require 'jabber)
- (require 'message)
- (require 'mu4e)
- (require 'org-capture)
- (require 'org-contacts)
- (require 'org-feed)
- (require 'org-html)
- (require 'php-mode)
- (require 'rainbow-delimiters)
- (require 'sauron)
- (require 'sendmail)
- (require 'smex)
- (require 'time-stamp)
- (require 'whitespace)
- (require 'yasnippet))
-
(autoload 'gtags-mode "gtags" nil t)
(autoload 'identica-mode "identica-mode" nil t)
(autoload 'mu4e "mu4e" nil t)
@@ -71,10 +50,10 @@
(concat
"\\(?:static\\s +\\)?\\(?:\\sw+\\(?: \\|\t\\|\n\\)*?\\*?\\)"
"\\(?:\\s \\|\t\\|\n\\)\\(?:\\sw\\|_\\)+([^)]*)[^;\n]*$"))
- "Regex for `outline-minor-mode' for `c-mode'.")
+ "Regex for command `outline-minor-mode' for `c-mode'.")
(defconst oni:javascript-outline-regex "function \\(\\w\\|_\\)+("
- "Regex for `outline-minor-mode' for `js-mode'.")
+ "Regex for command `outline-minor-mode' for `js-mode'.")
(defconst oni:php-outline-regex
(eval-when-compile
@@ -83,14 +62,14 @@
"\\|final\\) \\)?class [a-zA-Z0-9_]+\\( extends [\\a-zA-Z0-9_]+\\)?"
"\\|\\(abstract \\)?\\(public\\|private\\|protected\\)?"
"\\( static\\)? function [a-zA-Z0-9_]+(\\|/\\*\\*\\)"))
- "Regex for `outline-minor-mode' for `php-mode'.")
+ "Regex for command `outline-minor-mode' for `php-mode'.")
(defconst oni:python-outline-regex
(eval-when-compile
(concat "^[ \t]*\\(?:@[a-zA-Z0-9_]+\\(?:([a-zA-Z0-9_=, ]*)\\)?"
"\n\\)*[ \t]*\\(?:\\(class\\|def\\)[ \t]+\\(\\sw\\|\\s_\\)+"
"\\(([^)]*):\\)?\\|\\#[ a-zA-Z0-9]*\\#\\)"))
- "Regex for `outline-minor-mode' for `python-mode'.")
+ "Regex for command `outline-minor-mode' for `python-mode'.")
(defface oni:mode-line-buffer-column
'((t (:inherit font-lock-type-face)))
@@ -123,7 +102,9 @@
:group 'local)
(defmacro oni:define-mailbox (name email &optional signature longname)
- "Define a mailbox function."
+ "Define a mailbox function for mailbox NAME with address EMAIL.
+Optionally set signature to SIGNATURE and use LONGNAME as the
+actual account name."
`(defun ,(make-symbol (concat "oni:" name "-mailbox")) ()
,(concat "Settings for " name " mailbox")
(setq mu4e-mu-home ,(expand-file-name (concat "~/.mu/" name))
@@ -137,12 +118,15 @@
message-signature-file ,signature)))
(defmacro oni:email (user at host dot com)
- "Turn arguments into an email address."
+ "Turn arguments into an email address.
+The resulting email address will look like: USER@HOST.COM, AT and DOT are
+intentionally being skipped."
(concat (symbol-name user) "@" (symbol-name host) "."
(symbol-name com)))
(defmacro oni:generic-outline (regex)
- "Prepare for enabling `outline-minor-mode'."
+ "Prepare for enabling command `outline-minor-mode'.
+Argument REGEX will be used to set `outline-regexp' for this buffer."
`(progn
(when (buffer-file-name)
(outline-minor-mode)
@@ -151,6 +135,7 @@
(local-set-key [C-tab] 'outline-toggle-children))))
(defmacro oni:color (name)
+ "Fetch color NAME from the naquadah color theme."
`(naquadah-get-colors (quote ,name)))
(defvar oni:mailbox-map
@@ -167,7 +152,7 @@
flymake-cursor pony-mode sauron dispass
expand-region fill-column-indicator
git-auto-commit-mode idomenu magit smex)
- "List of all the packages I have (want) installed")
+ "List of all the packages I have (want) installed.")
(defun oni:after-save-func ()
"Function for `after-save-hook'."
@@ -175,7 +160,7 @@
(executable-make-buffer-file-executable-if-script-p)
(let ((dom-dir (locate-dominating-file (buffer-file-name) "Makefile")))
(when dom-dir
- (shell-command (concat "make -C " dom-dir " TAGS 2>&1 >/dev/null")))))
+ (shell-command (concat "make -C " dom-dir " TAGS >/dev/null 2>&1")))))
(defun oni:before-save-func ()
"Function for `before-save-hook'."
@@ -245,6 +230,7 @@
(setq truncate-lines nil))
(defun oni:eshell-prompt-function ()
+ "Show a pretty shell prompt."
(let ((status (if (zerop eshell-last-command-status) ?+ ?-))
(hostname (shell-command-to-string "hostname"))
(dir (abbreviate-file-name (eshell/pwd)))
@@ -305,6 +291,10 @@
(fci-mode))
(defun oni:indent-shift-left (start end &optional count)
+ "Rigidly indent region.
+Region is from START to END. Move
+COUNT number of spaces if it is non-nil otherwise use
+`tab-width'."
(interactive
(if mark-active
(list (region-beginning) (region-end) current-prefix-arg)
@@ -326,6 +316,9 @@
(indent-rigidly start end (- count))))))
(defun oni:indent-shift-right (start end &optional count)
+ "Indent region between START and END rigidly to the right.
+If COUNT has been specified indent by that much, otherwise look at
+`tab-width'."
(interactive
(if mark-active
(list (region-beginning) (region-end) current-prefix-arg)
@@ -350,27 +343,25 @@
"Function for `js-mode-hook'."
(oni:generic-outline oni:javascript-outline-regex)
(rainbow-delimiters-mode)
- (local-set-key "\C-j" 'oni:newline-and-indent))
+ (local-set-key "\C-j" 'oni:newline-and-indent)
+ (pretty-symbols-mode -1))
(defun oni:kill-region-or-backward-char ()
- "Kill either the active region, or delete the character left of
- the cursor"
+ "Either `kill-region' or `backward-delete-char-untabify'."
(interactive)
(if (region-active-p)
(kill-region (region-beginning) (region-end))
(backward-delete-char-untabify 1)))
(defun oni:kill-region-or-forward-char ()
- "Kill either the active region, or delete the character right
- of the cursor"
+ "Either `kill-region' or `delete-forward-char'."
(interactive)
(if (region-active-p)
(kill-region (region-beginning) (region-end))
(delete-forward-char 1)))
(defun oni:kill-region-or-line ()
- "Kill either the active region, or the rest of the line,
- depending on whether or not `region-active-p' is t"
+ "Either `kill-region' or `kill-line'."
(interactive)
(if (region-active-p)
(kill-region (region-beginning) (region-end))
@@ -405,8 +396,9 @@
(ispell-change-dictionary (read-string "New dictionary: ")))
(defun oni:mini-fix-timestamp-string (date-string)
- "A minimal version of Xah Lee's `fix-timestamp-string'
- function, found at http://xahlee.org/emacs/elisp_parse_time.html"
+ "A minimal version of Xah Lee's `fix-timestamp-string'.
+Turn DATE-STRING into something else that can be worked with in
+code. Found at http://xahlee.org/emacs/elisp_parse_time.html"
(setq date-string (replace-regexp-in-string "Jan" "01" date-string)
date-string (replace-regexp-in-string "Feb" "02" date-string)
date-string (replace-regexp-in-string "Mar" "03" date-string)
@@ -428,8 +420,7 @@
(match-string 1 date-string)))
(defun oni:move-beginning-of-dwim ()
- "Move to the beginning of line, either after the indentatoin of
- before."
+ "Move to beginning of line either after indentation or before."
(interactive)
(let ((start (point)))
(back-to-indentation)
@@ -437,8 +428,7 @@
(beginning-of-line))))
(defun oni:move-end-of-dwim ()
- "Move to the end of line, either before any comments or after
- them."
+ "Move to end of line, either before any comments or after."
(interactive)
(let ((start (point))
(eolpos (line-end-position)))
@@ -455,7 +445,8 @@
(end-of-line))))
(defun oni:myepisodes-formatter (plist)
- "Format RSS items from MyEpisodes as org tasks."
+ "Format RSS items from MyEpisodes as org tasks.
+PLIST contains all the pertinent information."
(let ((str (plist-get plist :title)))
(string-match
"^\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]$"
@@ -467,6 +458,8 @@
(format "* ACQUIRE %s %s - %s <%s>" title episode name date))))
(defun oni:newline-and-indent ()
+ "`newline-and-indent', but with a twist.
+When dealing with braces, add another line and indent that too."
(interactive)
(if (and (not (or (= (point) (point-max))
(= (point) (point-min))))
@@ -477,19 +470,6 @@
(save-excursion (newline-and-indent)))
(newline-and-indent))
-(defun oni:org-capture-before-finalize-func ()
- (save-excursion
- (goto-char (point-min))
- (while (re-search-forward "<<FIRSTLINE>>" nil t)
- (let (beg end)
- (save-match-data
- (search-forward "\n\n")
- (skip-syntax-forward " ")
- (setq beg (point))
- (search-forward "\n")
- (setq end (1- (point))))
- (replace-match (buffer-substring beg end) t t)))))
-
(defun oni:org-mode-func ()
"Function for `org-mode-hook'."
(flyspell-mode)
@@ -520,11 +500,13 @@
(oni:generic-outline oni:python-outline-regex)
(set (make-local-variable 'electric-indent-chars) nil)
(rainbow-delimiters-mode)
+ (setq fci-rule-column 80
+ fill-column 72)
(fci-mode))
(defun oni:raise-eshell ()
- "Start or switch back to `eshell'. Also change directories to
- current working directory."
+ "Start or switch back to `eshell'.
+Also change directories to current working directory."
(interactive)
(let ((dir (file-name-directory
(or (buffer-file-name) "~/")))
@@ -536,10 +518,10 @@
(eshell-reset)))))
(defun oni:raise-scratch (&optional mode)
- "Show the *scratch* buffer. If called with a universal
-argument, ask the user which mode to use. If MODE is not nil,
-open a new buffer with the name *MODE-scratch* and load MODE as
-its major mode."
+ "Show the *scratch* buffer.
+If called with a universal argument, ask the user which mode to
+use. If MODE is not nil, open a new buffer with the name
+*MODE-scratch* and load MODE as its major mode."
(interactive (list (if current-prefix-arg
(read-string "Mode: ")
nil)))
@@ -563,6 +545,7 @@ its major mode."
(revert-buffer nil t nil))
(defun oni:replace-html-special-chars ()
+ "Replace special characters with HTML escaped entities."
(oni:replace-occurrences "é" "&eacute;"))
(defun oni:replace-occurrences (from to)
@@ -589,7 +572,7 @@ its major mode."
(defun oni:self-insert-dwim ()
"Execute self insert, but when the region is active call self
- insert at the end of the region and at the beginning."
+insert at the end of the region and at the beginning."
(interactive)
(if (region-active-p)
(let ((electric-pair-mode nil)
@@ -806,7 +789,7 @@ for easy selection."
(vertical-scroll-bars . nil)
(menu-bar-lines . nil)
(tool-bar-lines . nil)
- (font . "DejaVu Sans Mono:pixelsize=18")
+ (font . "LiberationMono:pixelsize=16")
(left-fringe . 0)))
(setq emms-source-file-default-directory "/mnt/music/")
(setq erc-autojoin-channels-alist
@@ -825,12 +808,13 @@ for easy selection."
(setq flymake-log-file-name (expand-file-name "~/.emacs.d/flymake.log"))
(setq flymake-log-level 0)
(setq frame-title-format '(:eval (concat "emacs: " (buffer-name))))
-(setq geiser-active-implementations '(guile))
(setq geiser-repl-history-filename "~/.emacs.d/geiser-history")
(setq gtags-auto-update t)
(setq help-at-pt-display-when-idle t)
(setq ido-auto-merge-delay-time 1000000)
+(setq ido-max-window-height 1)
(setq ido-save-directory-list-file nil)
+(setq ido-ubiquitous-exceptions '(tmm-prompt))
(setq inferior-lisp-program "sbcl")
(setq inhibit-default-init t)
(setq inhibit-local-menu-bar-menus t)
@@ -875,15 +859,8 @@ for easy selection."
(tags priority-down category-keep)
(search category-keep)))
(setq org-capture-templates
- '(("t" "Task" entry (file "")
- "* TODO <<FIRSTLINE>>
- :PROPERTIES:
- :DIRECTORY: %(directory-file-name (or (org-capture-get :original-file) org-default-notes-file))
- :FILE: %f
- :END:
- %u
-
- %?%a")
+ '(("t" "Task" entry (file "~/documents/org/tasks")
+ "* TODO %?")
("h" "Habit" entry (file "")
(concat "* TODO %^{Description}\n"
" SCHEDULED: %^T\n"
@@ -958,12 +935,14 @@ for easy selection."
(setq special-display-buffer-names '("*Sauron*"))
(setq special-display-frame-alist '((minibuffer . nil)
(right-fringe . 0)))
+(setq split-height-threshold 40)
(setq time-stamp-active t)
(setq time-stamp-format "%04y-%02m-%02d %02H:%02M:%02S (%u)")
(setq uniquify-buffer-name-style 'post-forward)
(setq use-dialog-box nil)
(setq user-full-name "Tom Willemsen")
(setq whitespace-style '(face trailing))
+(setq window-combination-resize t)
(setq yas-prompt-functions '(yas-ido-prompt))
(add-hook 'after-save-hook 'oni:after-save-func t)
@@ -987,8 +966,6 @@ for easy selection."
(add-hook 'magit-log-edit-mode-hook 'oni:magit-log-edit-mode-func)
(add-hook 'markdown-mode-hook 'oni:markdown-mode-func)
(add-hook 'message-mode-hook 'oni:message-mode-func)
-(add-hook 'org-capture-before-finalize-hook
- 'oni:org-capture-before-finalize-func)
(add-hook 'org-mode-hook 'oni:org-mode-func)
(add-hook 'php-mode-hook 'oni:php-mode-func)
(add-hook 'prog-mode-hook 'oni:prog-mode-func)
@@ -1069,6 +1046,7 @@ for easy selection."
(ido-mode)
(savehist-mode)
(show-paren-mode)
+(auto-insert-mode)
(smex-initialize)
(help-at-pt-set-timer)
@@ -1078,3 +1056,7 @@ for easy selection."
(load custom-file)
(load "rudel-loaddefs.el")
(load (expand-file-name "~/quicklisp/slime-helper.el"))
+
+(provide 'init)
+
+;;; init.el ends here