legacy-dotfiles/emacs

340 lines
15 KiB
Text
Raw Normal View History

2010-12-05 12:41:38 +01:00
;; -*- 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)
2010-12-05 12:41:38 +01:00
;; 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)
2010-12-05 12:41:38 +01:00
(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-default-font "-*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*");)
2010-12-05 12:41:38 +01:00
;; 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)
;; Test for frame fonts
(defun setup-system-frame-colours (&rest frame)
(let ((f (if (car frame)
(car frame)
(selected-frame))))
(progn
(set-frame-font "-*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*"))))
(require 'server)
(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))
(ad-activate 'server-create-window-system-frame)
(add-hook 'after-make-frame-functions 'setup-system-frame-colours t)
2010-12-05 12:41:38 +01:00
;; 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))))
;(add-hook 'after-make-frame-hook
; (lambda ()
; (set-default-font "-*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*")
; (message "hello")
; (set-frame-font "-*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*")))
;(add-hook 'after-make-frame-functions
; (lambda (&rest frame)
; (message "world")
; (set-frame-font "-*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*")) t)
2010-12-05 12:41:38 +01:00
;;; 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))
2010-12-05 12:41:38 +01:00
(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")))))