summaryrefslogtreecommitdiffstats
path: root/.emacs.d/init.el
diff options
context:
space:
mode:
Diffstat (limited to '.emacs.d/init.el')
-rw-r--r--.emacs.d/init.el342
1 files changed, 342 insertions, 0 deletions
diff --git a/.emacs.d/init.el b/.emacs.d/init.el
new file mode 100644
index 0000000..4c74dec
--- /dev/null
+++ b/.emacs.d/init.el
@@ -0,0 +1,342 @@
+;; -*- mode: Emacs-Lisp; -*-
+(load "~/.emacs.d/ryuslash-load-path")
+
+;;; 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 (?\')))
+
+;; Column marker
+(defun set-column-markers (cm1 cm2)
+ (column-marker-1 cm1)
+ (column-marker-2 cm2))
+
+(require 'column-marker)
+
+(dolist (hook '(prog-mode-hook html-mode-hook))
+ (add-hook hook
+ (lambda ()
+ (set-column-markers 73 81))))
+
+(add-hook 'php-mode-hook
+ (lambda ()
+ (set-column-markers 76 81)))
+
+;;; Org mode
+(require 'org-crypt)
+(require 'org-publish)
+(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)
+(add-hook 'org-mode-hook
+ (lambda ()
+ (flyspell-mode t)
+ (auto-fill-mode t)))
+(org-crypt-use-before-save-magic)
+
+;;; Rainbow delimiters
+(require 'rainbow-delimiters)
+(setq rainbow-delimiters-max-face-count 8)
+
+;;; Uniquify
+(require 'uniquify)
+(setq uniquify-buffer-name-style 'post-forward)
+
+;;; Go
+(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))
+(add-hook 'go-mode-hook
+ (lambda ()
+ (turn-off-auto-fill)
+ (column-marker-1 -1)))
+
+;;; Htmlize
+(require 'htmlize)
+(setq htmlize-output-type 'inline-css)
+
+;;; Git
+(require 'git)
+
+;;; Markdown mode
+(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))
+(add-hook 'markdown-mode-hook
+ (lambda ()
+ (whitespace-mode 1)
+ (turn-on-auto-fill)))
+
+;;; Zencoding mode
+(autoload 'zencoding-mode "zencoding-mode" "Minor mode for zencoding" t)
+(add-hook 'sgml-mode-hook 'zencoding-mode) ; Auto-start on any markup
+ ; modes
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; REQUIRES ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(load-file "~/.emacs.d/functions.el")
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; 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 'lua-mode "lua-mode" "A Major mode for Lua" t)
+(autoload 'php-mode "pi-php-mode" "Major mode for PHP" 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)
+(autoload 'muttrc-mode "muttrc-mode" "Major mode for muttrc" t)
+(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)
+
+(defadvice server-create-window-system-frame
+ (after set-system-frame-colours ())
+ "Set custom frame colours when creating the first frame on a display"
+ (message "Running after frame-initialize")
+ (setup-system-frame-colours))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; SETTINGS ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(setq-default indent-tabs-mode nil) ; spaces, no tabs
+(setq-default truncate-lines t) ; don't wrap
+(setq-default php-warn-if-mumamo-off nil) ; don't warn me about this
+(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 mail-header-separator "")
+
+(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-10:antialias=true"))))
+
+(if window-system
+ (x-init)
+ (cli-init))
+
+(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
+(scroll-bar-mode -1) ; no scrollbars
+(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 '("\\.lua$" . lua-mode))
+(add-to-list 'auto-mode-alist '("\\.php[345]?$" . php-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))
+(add-to-list 'auto-mode-alist '(".*mutt.*" . message-mode))
+(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 'prog-mode-hook 'on-prog-mode)
+(add-hook 'c-mode-hook 'on-c-mode)
+(add-hook 'html-mode-hook 'on-html-mode)
+(add-hook 'php-mode-hook 'on-php-mode)
+(add-hook 'message-mode-hook 'on-mail-mode)
+(add-hook 'git-commit-mode-hook 'auto-fill-mode)
+(add-hook 'css-mode-hook 'rainbow-mode)
+(add-hook 'after-make-frame-functions 'setup-system-frame-colours t)
+
+(add-hook 'gtags-mode-hook
+ (lambda ()
+ (local-set-key (kbd "M-,") 'gtags-find-tag) ; find a tag,
+ ; also M-.
+ (local-set-key (kbd "M-.") 'gtags-find-rtag))) ; reverse
+ ; tag
+
+(add-hook 'c-mode-common-hook
+ (lambda ()
+ (require 'gtags)
+ (gtags-mode t)
+ (djcb-gtags-create-or-update)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; 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)))
+
+(ad-activate 'server-create-window-system-frame)
+(add-php-keywords)
+(add-html-keywords)
+(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")
+(load custom-file)