summaryrefslogtreecommitdiffstats
path: root/emacs
diff options
context:
space:
mode:
Diffstat (limited to 'emacs')
-rw-r--r--emacs314
1 files changed, 314 insertions, 0 deletions
diff --git a/emacs b/emacs
new file mode 100644
index 0000000..ec2dc6a
--- /dev/null
+++ b/emacs
@@ -0,0 +1,314 @@
+;; -*- mode: Emacs-Lisp; mode: whitespace -*-
+(add-to-list 'load-path "~/.emacs.d")
+
+;; Requires
+(require 'paren)
+(require 'uniquify)
+(require 'autopair)
+(require 'color-theme)
+(require 'flymake)
+(require 'org-install)
+(require 'zenburn)
+(require 'lua-mode)
+(require 'tabbar)
+(require 'minimap)
+(require 'manage-org)
+
+;; Auto complete
+(require 'auto-complete-config)
+(add-to-list 'ac-dictionary-directories "~/.emacs.d//ac-dict")
+(ac-config-default)
+
+;; Autoloads
+(autoload 'vala-mode
+ "vala-mode.elc" "A Major mode for editing Vala files" t)
+(autoload 'csharp-mode
+ "csharp-mode.elc" "A Major mode for editing C# files" t)
+(autoload 'javascript-mode
+ "javascript.elc" "A Major mode for editing JavaScript files" t)
+(autoload 'sqlplus-mode
+ "sqlplus,elc" "A Major mode for communicating with Oracle" t)
+(autoload 'batch-mode
+ "batch-mode.elc" "A Major mode for editing Batch files" t)
+(autoload 'rainbow-mode
+ "rainbow-mode.elc" "A Minor mode for showing colors inline" t)
+
+;; Functions
+(require 'functions)
+
+;; Platform specifics
+(if (eq system-type 'gnu/linux) ; if we're running linux
+ (set-frame-font "-xos4-terminus-medium-*-*-*-14-*-*-*-*-*-*-*"))
+
+;; Variables
+(setq
+ inhibit-startup-message t ; don't show welcom screen
+ require-final-newline t ; always append a newline to a file, if
+ ; it doesn't have one
+ font-lock-maximum-decoration t ; denotes my interest in maximum
+ ; possible fontification
+ uniquify-buffer-name-style 'reverse ; reverse uniquify file names
+ backup-directory-alist `((".*" . ,temporary-file-directory))
+ ; backup file location
+ auto-save-file-name-transforms `((".*" ,temporary-file-directory t))
+ ; autosave file location
+ whitespace-line-column 80 ; change color after the 80th column
+ whitespace-style '(tabs trailing lines-tail)
+ inhibit-default-init t)
+
+(setq org-todo-keywords (quote ((sequence "TODO(t)"
+ "NEXT(n)"
+ "|" "Done(d!/!)")
+ (sequence "WAITING(w@/!)"
+ "SOMEDAY(s!)"
+ "|" "CANCELLED(c@/!)")
+ (sequence "QUOTE(q!)"
+ "QUOTED(Q!)"
+ "|" "APPROVED(A@)"
+ "EXPIRED(E@)"
+ "REJECTED(R@)")
+ (sequence "OPEN(O)"
+ "|" "CLOSED(C)")) ))
+(setq org-todo-keyword-faces
+ (quote (("TODO" :foreground "red" :weight bold)
+ ("NEXT" :foreground "blue" :weight bold)
+ ("DONE" :foreground "forest green" :weight bold)
+ ("WAITING" :foreground "yellow" :weight bold)
+ ("SOMEDAY" :foreground "goldenrod" :weight bold)
+ ("CANCELLED" :foreground "orangered" :weight bold)
+ ("QUOTE" :foreground "hotpink" :weight bold)
+ ("QUOTED" :foreground "indianred1" :weight bold)
+ ("APPROVED" :foreground "forest green" :weight bold)
+ ("EXPIRED" :foreground "olivedrab1" :weight bold)
+ ("REJECTED" :foreground "olivedrab" :weight bold)
+ ("OPEN" :foreground "magenta" :weight bold)
+ ("CLOSED" :foreground "forest green" :weight bold))))
+(setq org-use-fast-todo-selection t)
+(setq org-todo-state-tags-triggers
+ (quote (("CANCELLED"
+ ("CANCELLED" . t))
+ ("WAITING"
+ ("WAITING" . t))
+ ("SOMEDAY"
+ ("WAITING" . t))
+ (done
+ ("WAITING"))
+ ("TODO"
+ ("WAITING")
+ ("CANCELLED"))
+ ("NEXT"
+ ("WAITING"))
+ ("DONE"
+ ("WAITING")
+ ("CANCELED")))))
+(setq org-default-notes-file "~/prj/org/refile.org")
+(setq org-capture-templates
+ (quote (("t" "todo" entry (file "~/prj/org/refile.org") "* TODO %?
+%U
+%a" :clock-in t :clock-resume t)
+ ("n" "note" entry (file "~/prj/org/refile.org") "* %?
+%U
+%a
+:CLOCK:
+:END:" :clock-in t :clock-resume t))))
+(setq org-completion-use-ido t) ; Use IDO for target completion
+(setq org-refile-targets
+ (quote ((org-agenda-files :maxlevel . 5) (nil :maxlevel . 5))))
+ ; Targets include this file and any file
+ ; and any file contributing to the
+ ; agenda - up to 5 levels deep
+(setq org-refile-use-outline-path (quote file))
+ ; Targets start with the file name -
+ ; allows creating level 1 tasks
+(setq org-outline-path-complete-in-steps t)
+ ; Targets complete in steps so we start
+ ; with filename, TAB shows the next
+ ; level of targets etc
+(setq org-refile-allow-creating-parent-nodes (quote confirm))
+ ; Allow refile to create parent tasks
+ ; with confirmation
+(setq org-agenda-custom-commands
+ (quote
+ (("w" "Tasks waiting on something"
+ tags "WAITING/!"
+ ((org-use-tag-inheritance nil)
+ (org-agenda-todo-ignore-scheduled nil)
+ (org-agenda-todo-ignore-deadlines nil)
+ (org-agenda-todo-ignore-with-date nil)
+ (org-agenda-overriding-header "Waiting Tasks")))
+ ("r" "Refile New Notes and Tasks"
+ tags "LEVEL=1+REFILE"
+ ((org-agenda-todo-ignore-with-date nil)
+ (org-agenda-todo-ignore-deadlines nil)
+ (org-agenda-todo-ignore-scheduled nil)
+ (org-agenda-overriding-header "Tasks to Refile")))
+ ("N" "Notes"
+ tags "NOTE"
+ ((org-agenda-overriding-header "Notes")))
+ ("n" "Next"
+ tags-todo "-WAITING-CANCELLED/!NEXT"
+ ((org-agenda-overriding-heaer "Next Tasks")))
+ ("p" "Projects"
+ tags-todo "LEVEL=2-REFILE|LEVEL=1+REFILE/!-DONE-CANCELLED"
+ (;(org-agenda-skip-function 'bh/skip-non-projects)
+ (org-agenda-overriding-header "Projects")))
+ ("o" "other (Non-Project) tasks"
+ tags-todo "LEVEL=2-REFILE|LEVEL=1+REFILE/!-DONE-CANCELLED"
+ (;(org-agenda-skip-function 'bh/skip-projects)
+ (org-agenda-overriding-header "Other Non-Project Tasks")))
+ ("A" "Tasks to be Archived"
+ tags "LEVEL=2-REFILE/DONE|CANCELLED"
+ ((org-agenda-overriding-header "Tasks to Archive")))
+ ("h" "Habits"
+ tags "STYLE=\"habit\""
+ ((org-agenda-todo-ignore-with-date nil)
+ (org-agenda-todo-ignore-scheduled nil)
+ (org-agenda-todo-ignore-deadlines nil)
+ (org-agenda-overriding-header "Habits")))
+ ("#" "Stuck Projects"
+ tags-todo "LEVEL=2-REFILE|LEVEL=1+REFILE/!-DONE-CANCELLED"
+ ((org-agenda-skip-function 'bh/skip-non-stuck-projects)
+ (org-agenda-overriding-header "Stuck Projects")))
+ ("c" "Select default clocking task"
+ tags "LEVEL=2-REFILE"
+ ((org-agenda-skip-function
+ '(org-agenda-skip-subree-if 'notregexp "^\\*\\* Organization"))
+ (org-agenda-overriding-header
+ "Set default clocking task with C-u C-u I"))))))
+(setq-default indent-tabs-mode nil) ; spaces, no tabs
+
+(fset 'yes-or-no-p 'y-or-n-p) ; switch yes or no answers to y or n
+ ; answers
+
+;; Mode settings
+( tool-bar-mode -1) ; no toolbar
+( menu-bar-mode -1) ; no menu
+( line-number-mode -1) ; don't show line numbers in splitter
+( global-linum-mode t) ; show line numbers in gutter
+( column-number-mode t) ; show column numbers in splitter
+(global-font-lock-mode t) ; show syntax highlighting
+( show-paren-mode t) ; show matching parens
+( autopair-global-mode ) ; enable autopair mode
+(delete-selection-mode t) ; delete selection upon typing
+(global-auto-complete-mode -1) ; don't enable autocomplete for
+ ; everything
+
+;; Keybindings
+(global-set-key "\C-m" 'newline-and-indent) ; Automatically indent on newline
+;;; Org Mode
+(global-set-key "\C-cl" 'org-store-link )
+(global-set-key "\C-ca" 'org-agenda )
+(global-set-key "\C-cb" 'org-iswitchb )
+(global-set-key (kbd "<f12>") 'org-agenda )
+;(global-set-key (kbd "<f5>") 'bh/org-todo )
+;(global-set-key (kbd "<S-f5>") 'bh/widen )
+(global-set-key (kbd "<f7>") 'set-truncate-lines )
+(global-set-key (kbd "<f8>") 'org-cycle-agenda-files )
+;(global-set-key (kbd "<f9> b") 'bbdb )
+(global-set-key (kbd "<f9> c") 'calendar )
+(global-set-key (kbd "<f9> f") 'boxquote-insert-file )
+;(global-set-key (kbd "<f9> g") 'gnus )
+(global-set-key (kbd "<f9> h") 'bh/hide-other )
+;(global-set-key (kbd "<f9> i") 'bh/org-info )
+;(global-set-key (kbd "<f9> I") 'bh/clock-in )
+;(global-set-key (kbd "<f9> O") 'bh/clock-out )
+(global-set-key (kbd "<f9> r") 'boxquote-region )
+(global-set-key (kbd "<f9> s") 'bh/go-to-scratch )
+;(global-set-key (kbd "<f9> t") 'bh/insert-inactive-timestamp)
+(global-set-key (kbd "<f9> u") 'bh/untabify )
+(global-set-key (kbd "<f9> v") 'visible-mode )
+;(global-set-key (kbd "<f9> SPC") 'bh/clock-in-last-task )
+(global-set-key (kbd "C-<f9>") 'previous-buffer )
+(global-set-key (kbd "C-x n r") 'narrow-to-region )
+(global-set-key (kbd "C-<f10>") 'next-buffer )
+(global-set-key (kbd "<f11>") 'org-clock-goto )
+(global-set-key (kbd "C-<f11>") 'org-clock-in )
+(global-set-key (kbd "C-s-<f12>") 'bh/save-then-publish )
+(global-set-key (kbd "M-<f11>") 'org-resolve-clocks )
+(global-set-key (kbd "C-M-r") 'org-capture )
+(global-set-key (kbd "M-<f9>") 'bh/killframe )
+(global-set-key [C-next] 'tabbar-forward )
+(global-set-key [C-prior] 'tabbar-backward )
+(global-set-key [C-tab] 'hs-toggle-hiding )
+
+;; 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 'file-coding-system-alist '("\\.vala$" . utf-8))
+(add-to-list 'file-coding-system-alist '("\\.vapi$" . utf-8))
+
+(add-to-list 'compilation-finish-functions 'my-comp-finish-function)
+
+;; Color theme
+;;(require 'color-theme-weirdness)
+(color-theme-zenburn)
+
+;; Hooks
+(add-hook 'find-file-hook 'flymake-find-file-hook)
+(add-hook 'find-file-hook
+ (lambda ()
+ (whitespace-mode t)))
+(add-hook 'after-save-hook
+ (lambda ()
+ (setq fname (buffer-file-name))
+ (setq suffix (file-name-extension fname))
+
+ (if (string-equal suffix "el")
+ (byte-compile-file fname))))
+;;; C
+(add-hook 'c-mode-hook
+ (lambda ()
+ (whitespace-mode t)
+ (hs-minor-mode t)))
+;;; CSS
+(add-hook 'css-mode-hook
+ (lambda ()
+ (rainbow-mode)))
+;;; Emacs Lisp
+(add-hook 'emacs-lisp-mode-hook
+ (lambda ()
+ (whitespace-mode t)
+ (auto-complete-mode t)))
+;;; Interactive Lisp
+(add-hook 'lisp-interaction-mode-hook
+ (lambda ()
+ (whitespace-mode t)
+ (auto-complete-mode t)))
+;;; Org
+(add-hook 'org-mode-hook
+ (lambda ()
+ (flyspell-mode 1)
+ (auto-fill-mode 1)
+ (message "org-mode started")))
+
+(defvar org-loaded nil)
+(add-hook 'org-agenda-mode-hook
+ (lambda ()
+ (if (not org-loaded)
+ (progn
+ (add-hook 'kill-emacs-hook
+ (lambda ()
+ (save-org-files)
+ (push-org-files)))
+ (get-org-files)
+ (setq org-loaded t)))))
+(if (not (file-exists-p "~/prj/org"))
+ (clone-org-files))
+
+(custom-set-variables
+ ;; custom-set-variables was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ '(org-agenda-files (quote ("~/prj/org/iactor.org" "~/prj/org/peitsman.org" "~/prj/org/tgn.org" "~/Documents/iACTOR/tasks.org" "~/prj/org/seiko.org" "~/prj/org/projects.org" "~/prj/org/refile.org" "~/prj/org/aethon.org")))
+ '(tabbar-mode t nil (tabbar)))
+(custom-set-faces
+ ;; custom-set-faces was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ '(tabbar-selected ((t (:inherit tabbar-default :background "#1E2320" :foreground "#F0DFAF"))))
+ '(tabbar-unselected ((nil (:background "#3F3F3F" :foreground "#DCDCCC")))))