summaryrefslogtreecommitdiffstats
path: root/emacs.el
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2011-06-11 19:51:08 +0200
committerGravatar Tom Willemsen2011-06-11 19:51:08 +0200
commit503e99197f45d7142d138bc878f36868d580efa8 (patch)
tree8960bb9ae181ddccd2d3b414cb31fb4d6bcf1311 /emacs.el
parenta7dd6805b2de1828e14767e267e7d72a0392644e (diff)
downloaddotfiles-503e99197f45d7142d138bc878f36868d580efa8.tar.gz
dotfiles-503e99197f45d7142d138bc878f36868d580efa8.zip
EMACS: init file is once again one big file
Diffstat (limited to 'emacs.el')
-rw-r--r--emacs.el419
1 files changed, 419 insertions, 0 deletions
diff --git a/emacs.el b/emacs.el
new file mode 100644
index 0000000..91c2cb2
--- /dev/null
+++ b/emacs.el
@@ -0,0 +1,419 @@
+;; -*- mode: Emacs-Lisp; -*-
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; LOAD-PATHS ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(add-to-list 'load-path "~/.emacs.d/elisp")
+(add-to-list 'load-path "~/.emacs.d/naquadah-theme")
+(add-to-list 'load-path "~/.emacs.d/elisp/markdown-mode")
+(add-to-list 'load-path "~/.emacs.d/elisp/git-commit-mode")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; REQUIRES ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(require 'naquadah-theme)
+(require 'autopair)
+(require 'column-marker)
+(require 'git-commit)
+(require 'org-crypt)
+(require 'rainbow-delimiters)
+(require 'uniquify)
+(require 'server)
+(require 'org-publish)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; AUTOLOADS ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(autoload 'vala-mode "vala-mode"
+ "A Major mode for editing Vala files" t)
+(autoload 'csharp-mode "csharp-mode"
+ "A Major mode for editing C# files" t)
+(autoload 'javascript-mode "javascript"
+ "A Major mode for editing JavaScript files" t)
+(autoload 'sqlplus-mode "sqlplus"
+ "A Major mode for communicating with Oracle" t)
+(autoload 'batch-mode "batch-mode"
+ "A Major mode for editing Batch files" t)
+(autoload 'lua-mode "lua-mode"
+ "A Major mode for editing Lua files" t)
+(autoload 'php-mode "php-mode-improved"
+ "A Major mode for editing PHP files" t)
+(autoload 'graphviz-dot-mode "graphviz-dot-mode"
+ "A Major mode for editing graphviz dot files" t)
+(autoload 'cmake-mode "cmake-mode"
+ "A major-mode for editing CMake sources" t)
+(autoload 'markdown-mode "markdown-mode"
+ "Major mode for editing Markdown files" t)
+(autoload 'rainbow-mode "rainbow-mode"
+ "A Minor mode for showing colors inline" t)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; DEFUNS ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun what-face (pos)
+ "Find out which face the current position uses"
+ (interactive "d")
+ (let ((face (or (get-char-property (point) 'read-face-name)
+ (get-char-property (point) 'face))))
+ (if face
+ (message "Face: %s" face)
+ (message "No face at %d" pos))))
+
+(defun my-comp-finish-function (buf str)
+ "Don't show compilation window if everything went ok"
+ (if (string-match "exited abnormally" str)
+ ;; there were errors
+ (message "compilation errors, press C-x ` to visit")
+ ;; no errors, make the compilation window go away in 0.5 seconds
+ (run-at-time 0.5 nil 'delete-windows-on buf)
+ (message "NO COMPILATION ERRORS!")))
+
+(defun fullscreen ()
+ "Fill the entire screen with emacs"
+ (interactive)
+ (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
+ '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
+ (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
+ '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0)))
+
+(defun c-toggle-header-source ()
+ "Toggle between a C source and header file"
+ (interactive)
+ (let ((ext (file-name-extension (buffer-file-name)))
+ (noext (file-name-sans-extension (buffer-file-name))))
+ (if (string= (substring ext 0 1) "c")
+ (find-file (concat noext ".h"))
+ (find-file (concat noext ".c")))))
+
+(defun browse-to-current-file ()
+ "Show current file in browser"
+ (interactive)
+ (browse-url buffer-file-name))
+
+(defun comment-line ()
+ "Toggle comment on a line"
+ (interactive)
+ (save-excursion
+ (beginning-of-line)
+ (insert "//")))
+
+(defun add-php-keywords ()
+ "Designed for c and c-style languages
+
+Currently adds | & ! . + = - / % * , < > ? : ->"
+ ;; Add ! at the beginning of font lock
+ (font-lock-add-keywords
+ 'php-mode
+ '(("\\([!]\\|\\=>\\)" 1 font-lock-operator-face)))
+ ;; Add the rest at the end of font lock
+ (font-lock-add-keywords
+ 'php-mode
+ '(("\\(->\\|[|.+=&/%*,:?<>-]\\)" 1 font-lock-operator-face)
+ ("\\(;\\)" 1 font-lock-end-statement)) 1))
+
+(defun add-html-keywords ()
+ "Designed for html, show some smarty tags"
+ (font-lock-add-keywords
+ 'html-mode
+ '(("{\\(\\*.*\\*\\)}" 1 font-comment-face)
+ ("{\\/?\\(extends\\|block\\|foreach\\|if\\)"
+ 1 font-lock-builtin-face)
+ ("\\$\\(\\(?:\\sw\\|\\s_\\)+\\)\\(?:|\\(\\(?:\\sw\\|\\s_\\)+\\):\\)"
+ (1 font-lock-variable-name-face)
+ (2 font-lock-function-name-face))
+ ("\\$\\(\\(?:\\sw\\|\\s_\\)+\\)"
+ 1 font-lock-variable-name-face)
+ ("{\\(\\(?:\\sw\\|\\s_\\)+\\).*}"
+ 1 font-lock-function-name-face))))
+
+(defun buffer-major-mode (buffer-or-string)
+ "Find out which major-mode is currently used"
+ (with-current-buffer buffer-or-string major-mode))
+
+(defun set-column-marker ()
+ "Default column markers"
+ (column-marker-1 73)
+ (column-marker-2 81))
+
+(defun setup-system-frame-colours (&rest frame)
+ (let ((f (if (car frame)
+ (car frame)
+ (selected-frame))))
+ (progn
+ (set-frame-font "-*-tamsyn-medium-*-*-*-15-*-*-*-*-80-*-*"))))
+
+(defun show-init-sections ()
+ (interactive)
+ (occur ";;\s +.*\s +;;")
+ (other-window 1))
+
+(defun list-functions ()
+ (interactive)
+ (occur
+ "\(?:\(?:private\|protected\|public\) \)?function \(?:\sw\)+(\sw*)"))
+
+(defun insert-init-title (title width)
+ (interactive "stitle: \nnwidth: ")
+ (insert-char ?\; width)
+ (insert "\n;;")
+ (insert-char ?\s (floor (/ (- (- width 4.0) (length title)) 2)))
+ (insert title)
+ (insert-char ?\s (ceiling (/ (- (- width 4.0) (length title)) 2)))
+ (insert ";;\n")
+ (insert-char ?\; width))
+
+(defun x-init ()
+ "Start ide-skel and set some keys")
+
+(defun cli-init ()
+ "Add a space to the linum column"
+ (setq linum-format "%d "))
+
+(defun on-before-save ()
+ (if (not (eq (buffer-major-mode (current-buffer)) 'markdown-mode))
+ (delete-trailing-whitespace)))
+
+(defun on-after-save ()
+ (let ((fname (buffer-file-name)))
+ (let ((suffix (file-name-extension fname)))
+ (if (string-equal suffix "el")
+ (byte-compile-file fname)))))
+
+(defun on-c-mode ()
+ (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)
+ (set-column-marker)
+ (rainbow-delimiters-mode))
+
+(defun on-emacs-lisp-mode ()
+ (set-column-marker)
+ (rainbow-delimiters-mode))
+
+(defun on-html-mode ()
+ (local-set-key [f9] 'browse-to-current-file)
+ (auto-fill-mode)
+ (set-column-marker))
+
+(defun on-markdown-mode ()
+ (whitespace-mode)
+ (auto-fill-mode))
+
+(defun on-org-mode ()
+ (flyspell-mode 1)
+ (auto-fill-mode 1))
+
+(defun on-php-mode ()
+ (defvar php-warn-if-mumamo-off nil)
+ (setq case-fold-search t)
+ (c-set-offset 'arglist-intro '+)
+ (c-set-offset 'arglist-close '0)
+ (column-marker-1 76)
+ (column-marker-2 81)
+ (local-set-key [f6] 'comment-line))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; 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))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; 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\\)?$" . javascript-mode))
+(add-to-list 'auto-mode-alist '("\\.m\\(ark\\)?do?wn$". markdown-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 '("mutt-cloud-" . message-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 "\C-cl" 'org-store-link)
+(global-set-key "\C-cc" 'org-capture)
+(global-set-key "\C-ca" 'org-agenda)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; THEME SETTINGS ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(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)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; SETTINGS ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(setq-default indent-tabs-mode nil) ; spaces, no tabs
+
+(setq
+ inhibit-startup-message t
+ require-final-newline t
+ inhibit-default-init t
+ scroll-conservatively 101 ; scroll only one line
+ browse-url-browser-function 'browse-url-generic
+ browse-url-generic-program "conkeror"
+ whitespace-style '(face trailing)
+ uniquify-buffer-name-style 'reverse
+ org-confirm-babel-evaluate nil
+ 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-ditaa-jar-path "/usr/share/java/ditaa/ditaa-0_9.jar"
+ jit-lock-defer-time 0.2
+
+ frame-title-format
+ '(:eval
+ (concat "emacs: " (buffer-name)))
+
+ backup-directory-alist ; backup file location
+ `((".*" . ,temporary-file-directory))
+
+ auto-save-file-name-transforms ; autosave file location
+ `((".*" ,temporary-file-directory t))
+
+ default-frame-alist ; default frame settings
+ (append '((font . "DejaVu Sans Mono-10:antialias=true")))
+
+ org-todo-keywords
+ '((sequence "TODO(t)"
+ "IN PROGRESS(p)"
+ "WAITING(w@/!)"
+ "|"
+ "DONE(d!/!)"
+ "CANCELLED(c@/!)"))
+
+ org-babel-load-languages
+ '((ditaa . t))
+
+ org-refile-targets
+ '((org-agenda-files :maxlevel . 5)
+ (nil :maxlevel . 5))
+ org-outline-path-complete-in-steps t
+
+ 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))
+
+ org-publish-project-alist
+ '(("lxcoding-docs"
+ :base-directory "~/devel/lxcoding-docs/"
+ :base-extension "org"
+ :publishing-directory "~/lxcoding-docs-test/"
+ :recursive t
+ :publishing-function org-publish-org-to-html
+ :headline-levels
+ :auto-preamble t
+ :auto-sitemap t
+ :sitemap-filename "sitemap.org"
+ :sitemap-title "docs sitemap")))
+
+(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
+(autopair-global-mode) ; automatically add the other
+ ; delimiter
+
+(add-to-list 'compilation-finish-functions 'my-comp-finish-function)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; HOOKS ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(add-hook 'before-save-hook 'on-before-save)
+(add-hook 'after-save-hook 'on-after-save)
+(add-hook 'c-mode-hook 'on-c-mode)
+(add-hook 'emacs-lisp-mode-hook 'on-emacs-lisp-mode)
+(add-hook 'html-mode-hook 'on-html-mode)
+(add-hook 'markdown-mode-hook 'on-markdown-mode)
+(add-hook 'org-mode-hook 'on-org-mode)
+(add-hook 'php-mode-hook 'on-php-mode)
+(add-hook 'git-commit-mode-hook 'auto-fill-mode)
+(add-hook 'emacs-startup-hook 'fullscreen)
+(add-hook 'css-mode-hook 'rainbow-mode)
+(add-hook 'javascript-mode-hook 'rainbow-delimiters-mode)
+(add-hook 'python-mode-hook 'rainbow-delimiters-mode)
+(add-hook 'after-make-frame-functions 'setup-system-frame-colours t)
+(add-hook 'lisp-mode-hook 'rainbow-delimiters-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)")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; AUTORUN ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(org-crypt-use-before-save-magic)
+(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-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 ("~/documents/org/main.org")))
+ '(safe-local-variable-values (quote ((Mode . shell-script) (ispell-local-dictionary . nl)))))
+(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.
+ )
+(put 'narrow-to-region 'disabled nil)