legacy-dotfiles/.emacs.d/init.el

435 lines
15 KiB
EmacsLisp
Raw Normal View History

;; -*- mode: Emacs-Lisp; -*-
(load "~/.emacs.d/ryuslash-load-path")
(load "~/.emacs.d/functions")
;;; Theme
(require 'naquadah-theme)
(eval-after-load 'naquadah-theme
(naquadah-theme-set-faces
'naquadah
;; markdown-mode
'(markdown-link-face (:inherit 'link))
'(markdown-header-face-1 (:inherit 'org-level-1))
'(markdown-header-face-2 (:inherit 'org-level-2))
'(markdown-header-face-3 (:inherit 'org-level-3))
'(markdown-header-face-4 (:inherit 'org-level-4))
'(markdown-header-face-5 (:inherit 'org-level-5))
'(markdown-header-face-6 (:inherit 'org-level-6))))
2011-07-27 11:53:20 +02:00
;;; Autopair
(require 'autopair)
(autopair-global-mode t) ; automatically add the other delimiter
(setq autopair-skip-criteria 'always
autopair-autowrap t
autopair-blink nil)
(setq-default autopair-dont-pair '(:string (?\' ?\") :comment (?\')))
2011-09-06 10:28:41 +02:00
;;; Column marker
(require 'column-marker)
(defun set-column-markers (cm1 cm2)
(column-marker-1 cm1)
(column-marker-2 cm2))
2011-09-06 10:28:41 +02:00
;;; Prog mode
(defun oni/prog-mode-hook ()
(font-lock-add-keywords
nil
'(("\\b\\(0[xX][0-9a-fA-F]+[lL]?\\|[0-9]+\\.?[0-9]*\\([eE][-+]?[0-9]+\\)?\\([lL]\\|[fF]\\|[dD]\\)?\\)\\b"
0 font-lock-constant-face)
("\\b\\(\\.[0-9]+\\([eE][-+]?[0-9]+\\)?\\([lL]\\|[fF]\\|[dD]\\)?\\)\\b"
0 font-lock-constant-face)))
(rainbow-delimiters-mode)
(pretty-lambdas)
(set-column-markers 73 81))
2011-09-06 10:28:41 +02:00
(if (>= emacs-major-version 24)
(add-hook 'prog-mode-hook 'oni/prog-mode-hook)
(add-hook 'c-mode-common-hook 'oni/prog-mode-hook)
(add-hook 'go-mode-hook 'oni/prog-mode-hook)
(add-hook 'emacs-lisp-mode-hook 'oni/prog-mode-hook))
;;; HTML mode
(defun oni/html-mode-hook ()
(set-column-markers 73 81)
(local-set-key [f9] 'browse-to-current-file)
(setq fill-column 73))
2011-09-06 10:28:41 +02:00
(add-hook 'html-mode-hook 'oni/html-mode-hook)
(add-to-list 'auto-mode-alist '("\\.tpl$" . html-mode))
(add-html-keywords)
2011-07-27 11:53:20 +02:00
;;; Org mode
2011-07-26 01:18:41 +02:00
(require 'org-crypt)
(require 'org-publish)
2011-09-06 10:28:41 +02:00
(defun oni/org-mode-hook ()
(turn-on-flyspell)
(turn-on-auto-fill))
2011-07-26 01:18:41 +02:00
(setq
org-tags-exclude-from-inheritance '("crypt")
org-crypt-key "33E8CC1CC4"
org-use-fast-todo-selection t
org-default-notes-file (concat org-directory
"/notes.org")
org-outline-path-complete-in-steps t
org-return-follows-link t
org-log-into-drawer t
org-todo-keywords '((sequence "TODO(t)"
"IN PROGRESS(p)"
"WAITING(w@/!)"
"|"
"DONE(d!/!)"
"CANCELLED(c@/!)"))
org-refile-targets '((org-agenda-files :maxlevel . 5)
(nil :maxlevel . 5))
org-todo-keyword-faces
'(("TODO" :foreground "red" :weight bold)
("IN PROGRESS" :foreground "yellow" :weight bold)
("DONE" :foreground "forest green" :weight bold)
("WAITING" :foreground "orange" :weight bold)
("CANCELLED" :foreground "orangered" :weight bold)))
(add-to-list 'auto-mode-alist '("\\.commitmsg$" . org-mode))
(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-cc" 'org-capture)
(global-set-key "\C-ca" 'org-agenda)
2011-09-06 10:28:41 +02:00
(add-hook 'org-mode-hook 'oni/org-mode-hook)
2011-07-26 01:18:41 +02:00
(org-crypt-use-before-save-magic)
2011-07-27 11:53:20 +02:00
;;; Rainbow delimiters
(require 'rainbow-delimiters)
(setq rainbow-delimiters-max-face-count 8)
2011-07-27 11:53:20 +02:00
;;; Uniquify
(require 'uniquify)
(setq uniquify-buffer-name-style 'post-forward)
2011-09-06 10:28:41 +02:00
;;; Go mode
(defun oni/go-mode-hook ()
(turn-off-auto-fill))
2011-07-27 11:53:20 +02:00
(autoload 'go-mode "go-mode" "Major mode for google go" t)
(autoload 'gofmt "go-mode" "" t)
(autoload 'go-fmt-before-save "go-mode" "" t)
(add-to-list 'auto-mode-alist '("\\.go$" . go-mode))
2011-09-06 10:28:41 +02:00
(add-hook 'go-mode-hook 'oni/go-mode-hook)
2011-07-27 11:53:20 +02:00
;;; Htmlize
(require 'htmlize)
(setq htmlize-output-type 'inline-css)
2011-07-27 11:53:20 +02:00
;;; Git
(require 'git)
2011-07-27 11:53:20 +02:00
;;; Markdown mode
2011-09-06 10:28:41 +02:00
(defun oni/markdown-mode-hook ()
(whitespace-mode 1)
(turn-on-auto-fill))
2011-07-27 11:53:20 +02:00
(autoload 'markdown-mode "markdown-mode" "Major mode for Markdown" t)
(setq whitespace-style '(face trailing)) ; For use with markdown mode
(add-to-list 'auto-mode-alist '("\\.m\\(ark\\)?do?wn$". markdown-mode))
2011-09-06 10:28:41 +02:00
(add-hook 'markdown-mode-hook 'oni/markdown-mode-hook)
2011-07-28 11:36:46 +02:00
;;; Xmodmap mode
(autoload 'xmodmap-mode "xmodmap-mode" "Major mode for xmodmap" t)
(add-to-list 'auto-mode-alist '("\\.[xX]modmap\\(rc\\)?$" . xmodmap-mode))
;;; Gtags
2011-09-06 10:28:41 +02:00
(defun oni/gtags-mode-hook ()
(local-set-key "\M-," 'gtags-find-tag)
(local-set-key "\M-." 'gtags-find-rtag))
(autoload 'gtags-mode "gtags" "Minor mode for using gtags" t)
2011-09-06 10:28:41 +02:00
(add-hook 'gtags-mode-hook 'oni/gtags-mode-hook)
;;; C mode
(defun oni/c-mode-common-hook ()
(gtags-mode t)
(djcb-gtags-create-or-update))
(defun oni/c-mode-hook ()
(local-set-key [f8] 'c-toggle-header-source)
(local-set-key [f9] 'compile)
(local-set-key [C-m] 'newline-and-indent)
(local-set-key [C-return] 'newline))
(add-hook 'c-mode-common-hook 'oni/c-mode-common-hook)
(add-hook 'c-mode-hook 'oni/c-mode-hook)
2011-09-06 10:49:46 +02:00
;;; Flymake
(require 'flymake)
(defun flymake-php-init ()
"Use php to check the syntax of the current file."
(let* ((temp (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local (file-relative-name temp (file-name-directory
buffer-file-name))))
(list "php" (list "-f" local "-l"))))
(add-to-list
'flymake-err-line-patterns
'("\\(Parse\\|Fatal\\) error: +\\(.*?\\) in \\(.*?\\) on line \\([0-9]+\\)$"
3 4 nil 2))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.php$" flymake-php-init))
2011-09-06 10:28:41 +02:00
;;; PHP mode
2011-09-05 10:25:12 +02:00
(defun oni/php-show-outline ()
(interactive)
(occur "\\(function .*(\\|\\(public\\|private\\|protected\\)\\( static\\)? \\$\\|class \\sw\\)"))
2011-09-06 10:28:41 +02:00
(defun oni/php-mode-hook ()
(c-set-offset 'arglist-intro '+)
(c-set-offset 'arglist-close '0)
(local-set-key [f6] 'comment-line)
(local-set-key [f7] 'oni/php-show-outline)
2011-09-06 10:49:46 +02:00
(local-set-key [M-S-up] 'flymake-goto-prev-error)
(local-set-key [M-S-down] 'flymake-goto-next-error)
(set-column-markers 76 81)
(flymake-mode 1))
2011-09-06 10:28:41 +02:00
(autoload 'php-mode "php-mode" "Major mode for PHP" t)
(setq-default php-mode-warn-if-mumamo-off nil) ; don't warn me about this
(setq php-mode-force-pear t)
(add-to-list 'auto-mode-alist '("\\.php[345]?$" . php-mode))
2011-09-06 10:28:41 +02:00
(add-hook 'php-mode-hook 'oni/php-mode-hook)
(add-php-keywords)
;;; bidi
(setq-default bidi-display-reordering nil)
;;; Message
(defun oni/message-mode-hook ()
(turn-on-auto-fill)
(turn-on-flyspell)
(ispell-change-dictionary (read-string "New dictionary: ")))
(add-hook 'message-mode-hook 'oni/message-mode-hook)
2011-08-18 10:19:38 +02:00
;;; Gnus
(setq gnus-init-file "~/.emacs.d/gnus")
2011-08-30 12:57:02 +02:00
;;; jabber
(require 'jabber-autoloads)
(setq jabber-account-list
'(("ryuslash@gmail.com"
(:network-server . "talk.google.com")
(:connection-type . ssl))))
;;; X11
(when window-system
(setq linum-format " %d")
(global-unset-key "\C-z"))
;;; CLI
(when (not window-system)
(setq linum-format "%d "))
2011-09-05 15:31:47 +02:00
;;; Texinfo
(add-hook 'texinfo-mode-hook 'turn-on-auto-fill)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; AUTOLOADS ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(autoload 'vala-mode "vala-mode" "Major mode for Vala" t)
(autoload 'csharp-mode "csharp-mode" "Major mode for C#" t)
(autoload 'sqlplus-mode "sqlplus" "Major mode for PL/SQL" t)
(autoload 'batch-mode "batch-mode" "Major mode for Batch" t)
(autoload 'graphviz-dot-mode "graphviz-dot-mode" "Major mode for dot" t)
(autoload 'cmake-mode "cmake-mode" "Major mode for CMake" t)
(autoload 'rainbow-mode "rainbow-mode" "Minor mode for colors" t)
(autoload 'stumpwm-mode "stumpwm-mode" "Major mode for stumpwm" t)
2011-07-27 11:53:20 +02:00
(autoload 'git-commit-mode "git-commit" "" t)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; VARIABLES ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defvar font-lock-operator-face 'font-lock-operator-face)
(defvar font-lock-end-statement 'font-lock-end-statement)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; SETTINGS ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq-default indent-tabs-mode nil) ; spaces, no tabs
(setq-default truncate-lines t) ; don't wrap
2011-07-27 11:53:20 +02:00
(setq-default tab-width 4)
(setq inhibit-startup-message t) ; Don't show welcome screen
(setq require-final-newline t) ; Always put final newline
(setq inhibit-default-init t) ; Don't load default library
(setq scroll-conservatively 101) ; scroll only one line
(setq browse-url-browser-function 'browse-url-generic)
(setq browse-url-generic-program (getenv "BROWSER"))
(setq uniquify-buffer-name-style 'reverse)
(setq jit-lock-defer-time 0.2) ; Don't fontlock immediately
(setq ido-save-directory-list-file nil)
(setq ido-auto-merge-delay-time 2) ; Wait before fixing names
(setq mouse-autoselect-window t)
(setq pop-up-windows nil)
(setq frame-title-format ; I don't like emacs@cloud, must have file
'(:eval ; name
(concat "emacs: " (buffer-name))))
(setq backup-directory-alist ; backup file location
`((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms ; autosave file location
`((".*" ,temporary-file-directory t)))
(setq default-frame-alist ; default frame settings
(append '((font . "DejaVu Sans Mono-11:antialias=true"))))
(setq initial-frame-alist ; initial frame settings
(append '((font . "DejaVu Sans Mono-11:antialias=true"))))
(fset 'yes-or-no-p 'y-or-n-p) ; switch yes or no to y or n
(tool-bar-mode -1) ; no toolbar
(menu-bar-mode -1) ; no menubar
(line-number-mode -1) ; don't show line number in splitter
(global-linum-mode t) ; Show line numbers in gutter
(column-number-mode t) ; show column number in splitter
(global-font-lock-mode t) ; show syntax highlighting, old
(delete-selection-mode t) ; delete selection upon typing
(show-paren-mode t) ; show the opposite paren
(ido-mode t)
(add-to-list 'compilation-finish-functions 'my-comp-finish-function)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; FILE ASSOCIATIONS ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-to-list 'auto-mode-alist '("\\.vala$" . vala-mode))
(add-to-list 'auto-mode-alist '("\\.vapi$" . vala-mode))
(add-to-list 'auto-mode-alist '("\\.cs$" . csharp-mode))
(add-to-list 'auto-mode-alist '("\\.bat$" . batch-mode))
(add-to-list 'auto-mode-alist '("\\.js\\(on\\)?$" . js-mode))
(add-to-list 'auto-mode-alist '("CMakeLists\\.txt$" . cmake-mode))
(add-to-list 'auto-mode-alist '("\\.cmake$" . cmake-mode))
(add-to-list 'auto-mode-alist '("\\.css$" . css-mode))
(add-to-list 'auto-mode-alist '("stumpwmrc" . stumpwm-mode))
2011-07-26 00:52:41 +02:00
(add-to-list 'auto-mode-alist '("COMMIT_EDITMSG$" . git-commit-mode))
(add-to-list 'file-coding-system-alist '("\\.vala$" . utf-8))
(add-to-list 'file-coding-system-alist '("\\.vapi$" . utf-8))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; KEYBINDS ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(global-set-key "\C-m" 'newline-and-indent)
(global-set-key (kbd "C-x n r") 'narrow-to-region)
(global-set-key [f5] '(lambda ()
(interactive)
(revert-buffer nil t nil)))
(global-set-key [M-left] 'windmove-left)
(global-set-key [M-right] 'windmove-right)
(global-set-key [M-up] 'windmove-up)
(global-set-key [M-down] 'windmove-down)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; HOOKS ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-hook 'before-save-hook 'on-before-save)
(add-hook 'after-save-hook 'on-after-save)
(add-hook 'git-commit-mode-hook 'auto-fill-mode)
(add-hook 'css-mode-hook 'rainbow-mode)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; SKELETONS ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-skeleton cmake-project-skeleton
"A cmake project template file"
"Name: "
"cmake_minimum_required(VERSION 2.6)\n"
"project(" str ")\n"
"\n"
"set(" str "_VERSION_MAJOR 0)\n"
"set(" str "_VERSION_MINOR 0)\n"
"set(" str "_VERSION_PATCH 0)\n"
"\n"
"set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR})\n"
"add_subdirectory(src)")
(define-skeleton myaethon-set-varchar-docstring
"A docstring for a varchar setter"
""
"\/* Setter for the "
(skeleton-read "name: ")
" column\n"
"\n"
'(indent-according-to-mode)
"$value: string, no longer than "
(skeleton-read "len: ")
" characters */"
'(fill-paragraph))
(define-skeleton myaethon-set-array-varchar-docstring
"A docstring for an array/varchar setter"
""
'(setq name (skeleton-read "name: "))
'(setq len (string-to-number (skeleton-read "length: ")))
'(setq size (floor (/ (- len 1) 2)))
"/* Setter for the "
name
" column\n"
"\n"
'(indent-according-to-mode)
"$value: array, with no more than "
(number-to-string size)
" elements; string, no langer than "
(number-to-string len)
" characters */"
'(fill-paragraph))
(define-skeleton myaethon-simple-entity
"A basic database entity"
""
'(setq name (skeleton-read "Name: "))
"<?php\n"
"require_once('classes/dbobject.php');\n"
"\n"
"/* Entity for the " (downcase name) " table */\n"
"class " name " extends DB_Object\n"
"{\n"
"/* Table to select data from */\n"
"protected static $tables = '" (downcase name) "';\n"
"\n"
"/* Get the name of this class\n"
"--\n"
"ret: __CLASS__ */\n"
"protected static function get_class_name()\n"
"{\n"
"return __CLASS__;\n"
"}\n"
"\n"
"public function update()\n"
"{\n"
"throw new Exception('Not Implemented.');\n"
"}\n"
"\n"
"public function insert()\n"
"{\n"
"throw new Exception('Not Implemented.');\n"
"}\n"
"}\n"
"\n"
"?>\n"
'(indent-region (point-min) (point-max)))
(make-face 'font-lock-operator-face)
(make-face 'font-lock-end-statement)
(set-face-foreground 'font-lock-operator-face "#EDD400")
(set-face-foreground 'font-lock-end-statement "#888A85")
;; Custom file
(setq custom-file "~/.emacs.d/custom.el")
2011-08-05 23:59:30 +02:00
(if (file-exists-p custom-file)
(load custom-file))
2011-08-06 20:00:48 +02:00
(defvar home-file "~/wiki.info" "File to open when starting")
(if (file-exists-p home-file)
(info home-file))