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.el282
1 files changed, 282 insertions, 0 deletions
diff --git a/emacs.d/init.el b/emacs.d/init.el
new file mode 100644
index 0000000..4ee331c
--- /dev/null
+++ b/emacs.d/init.el
@@ -0,0 +1,282 @@
+(add-to-list 'load-path "/home/drobilla/.emacs.d/site-lisp")
+;(add-to-list 'load-path "/home/drobilla/.emacs.d/site-lisp/sublimity")
+
+;(require 'highlight-beyond-fill-column)
+(require 'psvn)
+(require 'tramp)
+(require 'window-numbering)
+;(require 'sublimity)
+;(require 'sublimity-scroll)
+(setq tramp-default-method "scp")
+
+;; Garbage collect much less often (every 10 MiB)
+(setq-default gc-cons-threshold 10000000)
+
+;; Save backup and autosave files to /tmp instead of polluting file system
+(setq
+ backup-by-copying t ; Don't clobber symlinks
+ backup-directory-alist `((".*" . ,temporary-file-directory))
+ auto-save-file-name-transforms `((".*" ,temporary-file-directory t))
+ delete-old-versions t
+ kept-new-versions 6
+ kept-old-versions 2
+ version-control t)
+
+;; Replace annoying "yes" or "no" prompt with "y" or "n" prompt
+(fset 'yes-or-no-p 'y-or-n-p)
+
+;; Default text editing configuration
+(setq-default tab-width 4)
+(setq-default indent-tabs-mode nil)
+(setq-default scroll-margin 3)
+
+(global-set-key "\C-m" 'newline-and-indent)
+(delete-selection-mode 1)
+
+;; Custom configuration
+(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.
+ '(column-number-mode t)
+ '(compilation-scroll-output t)
+ '(fill-column 79)
+ '(font-lock-maximum-decoration t)
+ '(frame-background-mode (quote dark))
+ '(fringe-mode 0 nil (fringe))
+ '(grep-find-command "find . -type f -not -name \"*.svn-base\" -print0 | xargs -0 -e grep -I -n -s -F ")
+ '(indicate-empty-lines t)
+ '(inhibit-startup-screen t)
+ '(jshint-mode-node-program "nodejs")
+ '(magit-diff-refine-hunk (quote all))
+ '(menu-bar-mode nil)
+ '(quack-pretty-lambda-p t)
+ '(quack-run-scheme-always-prompts-p nil)
+ '(scroll-bar-mode (quote right))
+ '(scroll-conservatively 5)
+ '(send-mail-function (quote sendmail-send-it))
+ '(show-paren-mode t)
+ '(speedbar-use-images f)
+ '(split-window-preferred-function (quote split-window-horizontally))
+ '(tool-bar-mode nil)
+ '(dired-listing-switches "-al --time-style=long-iso"))
+
+;; Set colours from solarized palette http://ethanschoonover.com/solarized
+(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.
+ '(default ((t (:stipple nil :background "grey10" :foreground "grey80" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 130 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
+ '(bold ((t (:weight bold))))
+ '(cursor ((t (:background "grey80"))))
+ '(diff-added ((t (:foreground "#859900"))))
+ '(diff-file-header ((((class color) (min-colors 88) (background dark)) (:weight bold))))
+ '(diff-header ((((class color) (min-colors 88) (background dark)) (:foreground "#6C71C4"))))
+ '(diff-refine-added ((t (:inherit diff-refine-change :background "#1a201a"))))
+ '(diff-refine-change ((((class color) (min-colors 88) (background dark)) (:background "grey20"))))
+ '(diff-refine-removed ((t (:inherit diff-refine-change :background "#241a1a"))))
+ '(diff-removed ((t (:foreground "#D30102"))))
+ '(dired-directory ((t (:foreground "#268BD2"))))
+ '(escape-glyph ((((background dark)) (:foreground "cyan"))))
+ '(font-lock-comment-face ((((class color) (min-colors 88) (background dark)) (:foreground "#268BD2"))))
+ '(font-lock-constant-face ((((class color) (min-colors 88) (background dark)) (:weight bold))))
+ '(font-lock-doc-face ((t (:inherit font-lock-string-face :foreground "#6C71C4"))))
+ '(font-lock-function-name-face ((((class color) (min-colors 88) (background dark)) (:foreground "gray95"))))
+ '(font-lock-keyword-face ((((class color) (min-colors 88) (background dark)) (:foreground "#859900"))))
+ '(font-lock-preprocessor-face ((nil (:foreground "#D33682"))))
+ '(font-lock-string-face ((((class color) (min-colors 88) (background dark)) (:foreground "#CB4B16"))))
+ '(font-lock-type-face ((((class color) (min-colors 88) (background dark)) (:foreground "#2AA198"))))
+ '(font-lock-variable-name-face ((t (:foreground "white"))))
+ '(font-lock-warning-face ((((class color) (min-colors 88) (background dark)) (:foreground "#D30102" :weight bold))))
+ '(fringe ((((class color) (background dark)) (:background "grey25"))))
+ '(link ((((class color) (min-colors 88) (background dark)) (:foreground "#268BD2" :inverse-video nil :underline t))))
+ '(link-visited ((default (:inherit link)) (((class color) (background dark)) (:foreground "#6C71C4"))))
+ '(magit-item-highlight ((t (:background "gray12"))))
+ '(minibuffer-prompt ((((background dark)) (:foreground "white"))))
+ '(mode-line ((((class color) (min-colors 88)) (:background "gray35" :foreground "black" :box (:line-width -1 :color "black")))))
+ '(mode-line-inactive ((default (:inherit mode-line)) (((class color) (min-colors 88) (background dark)) (:background "gray20" :foreground "gray15" :box nil))))
+ '(nobreak-space ((((class color) (min-colors 88)) (:inherit escape-glyph :underline t))))
+ '(smerge-refined-change ((t (:background "gray20"))))
+ '(whitespace-newline ((t (:foreground "grey20" :weight normal))))
+ '(whitespace-space ((t (:foreground "grey20"))))
+ '(whitespace-tab ((t (:foreground "grey20"))))
+ '(woman-addition ((t (:inherit font-lock-builtin-face :foreground "#268BD2"))))
+ '(woman-bold ((t (:inherit bold :foreground "#859900"))))
+ '(woman-italic ((t (:inherit italic :slant italic)))))
+
+;; Compilation and fast error navigation key bindings
+
+(defun switch-to-previous-buffer ()
+ (interactive)
+ (switch-to-buffer (other-buffer (current-buffer) 1)))
+
+(defun rotate-windows ()
+ "Rotate your windows"
+ (interactive)
+ (cond
+ ((not (> (count-windows) 1))
+ (message "You can't rotate a single window!"))
+ (t
+ (let ((i 0)
+ (num-windows (count-windows)))
+ (while (< i (- num-windows 1))
+ (let* ((w1 (elt (window-list) i))
+ (w2 (elt (window-list) (% (+ i 1) num-windows)))
+ (b1 (window-buffer w1))
+ (b2 (window-buffer w2))
+ (s1 (window-start w1))
+ (s2 (window-start w2)))
+ (set-window-buffer w1 b2)
+ (set-window-buffer w2 b1)
+ (set-window-start w1 s2)
+ (set-window-start w2 s1)
+ (setq i (1+ i))))))))
+
+(global-set-key "\C-b" 'compile)
+(global-set-key [C-up] 'previous-error)
+(global-set-key [C-down] 'next-error)
+(global-set-key [C-tab] 'switch-to-previous-buffer)
+(global-set-key (kbd "C-c r s") 'replace-string)
+(global-set-key (kbd "C-c r r") 'replace-regexp)
+(global-set-key (kbd "C-c a") 'align)
+(global-set-key (kbd "C-c s") 'sort-lines)
+(global-set-key (kbd "C-c g") 'grep-find)
+(global-set-key (kbd "C-c c") 'comment-region)
+(global-set-key (kbd "C-c u") 'uncomment-region)
+(global-set-key (kbd "C-c f") 'ff-find-other-file)
+(global-set-key (kbd "C-c d") 'svn-status-show-svn-diff)
+(global-set-key (kbd "C-c m") 'magit-status)
+(global-set-key (kbd "C-c w") 'rotate-windows)
+
+;; Shrink fringe and remove scroll bars
+;(fringe-mode 'minimal)
+(scroll-bar-mode -1)
+
+;; Don't split vertically
+(setq split-height-threshold nil)
+(setq split-width-threshold 0)
+
+;; Close compilation window on success
+(winner-mode 1)
+(defun compile-autoclose (buffer string)
+ (cond ((and (string-match "compilation" (buffer-name buffer))
+ (string-match "finished" string))
+ (bury-buffer "*compilation*")
+ (winner-undo)
+ (message "Build successful."))
+ (t
+ (message "Compilation exited abnormally: %s" string))))
+(setq compilation-finish-functions 'compile-autoclose)
+
+(require 'smarttabs)
+
+;; C/C++ style
+(defconst my-c-style
+ '(;(c-doc-comment-style . ((c-mode . doxygen) (c++-mode . doxygen) (java-mode . javadoc)))
+ (c-block-comment-prefix . " ")
+ (c-comment-only-line-offset . 0)
+ (c-auto-align-backslashes . nil)
+ (c-label-minimum-indentation . 0)
+ (c-hungry-delete-key . t)
+ (c-indent-comments-syntactically-p . nil)
+ (c-hanging-braces-alist . ((brace-list-open after)
+ (defun-open after)
+ (defun-close before after)
+ (class-open after)
+ (class-close before after)
+ (namespace-open after)
+ (inline-open after)
+ (inline-close before after)
+ (block-open after)
+ (block-close . c-snug-do-while)
+ (extern-lang-open after)
+ (extern-lang-close after)
+ (statement-case-open after)
+ (substatement-open after)))
+ (c-hanging-colons-alist . ((case-label)
+ (label after)
+ (access-label after)
+ (member-init-intro before)
+ (inher-intro)))
+ (c-hanging-semi&comma-criteria . (c-semi&comma-no-newlines-for-oneline-inliners
+ c-semi&comma-inside-parenlist
+ c-semi&comma-no-newlines-before-nonblanks))
+ (c-cleanup-list . (brace-catch-brace
+ brace-else-brace
+ brace-elseif-brace
+ compact-empty-funcall
+ defun-close-semi
+ empty-defun-braces
+ list-close-comma
+ one-liner-defun
+ scope-operator))
+ (c-offsets-alist . ((func-decl-cont . ++)
+ (member-init-intro . +)
+ (inher-intro . ++)
+ (comment-intro . 0)
+ (arglist-close . c-lineup-arglist)
+ (topmost-intro . 0)
+ (block-open . 0)
+ (inline-open . 0)
+ (substatement-open . 0)
+ (label . /)
+ (case-label . 0)
+ (statement-case-open . +)
+ (statement-case-intro . +)
+ (access-label . -)
+ (innamespace . 0)
+ (inextern-lang . 0)
+ (extern-lang-open . 0)
+ (label . -)))))
+
+(c-add-style "drobilla" my-c-style)
+
+(defun my-c-mode-common-hook ()
+ "C mode for people with taste."
+ (require 'smarttabs)
+ (auto-fill-mode 1)
+ (set-fill-column 79)
+ (setq tab-width 4)
+ (setq indent-tabs-mode t)
+ (setq truncate-lines t)
+ (c-set-style "drobilla"))
+
+(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
+(add-hook 'c++-mode-common-hook 'my-c-mode-common-hook)
+
+;; Python style
+(defun sane-python-mode ()
+ (setq tab-width 4)
+ (setq indent-tabs-mode nil)
+ (setq python-indent-offset 4))
+(add-hook 'python-mode-hook 'sane-python-mode)
+
+;; Program names
+(setq scheme-program-name "mzscheme"
+ browse-url-generic-program (executable-find "sensible-browser")
+ browse-url-browser-function 'browse-url-generic)
+
+;; File modes
+(autoload 'llvm-mode "llvm-mode" "Edit LLVM assembly" t)
+(autoload 'ttl-mode "ttl-mode" "Edit N3 or Turtle files" t)
+(setq auto-mode-alist
+ (append
+ (list
+ '("\\.pl" . prolog-mode)
+ '("\\.n3" . ttl-mode)
+ '("\\.ttl" . ttl-mode)
+ '("\\.owl" . ttl-mode)
+ '("\\.ll" . llvm-mode)
+ '("\\.md" . markdown-mode))
+ auto-mode-alist))
+
+;; Start server for emacsclient
+(server-start)
+(put 'narrow-to-region 'disabled nil)
+
+(add-to-list 'load-path "/home/drobilla/src/others/jshint-mode")
+(require 'flymake-jshint)
+(add-hook 'javascript-mode-hook
+ (lambda () (flymake-mode t)))