Created
December 8, 2010 18:21
-
-
Save waratuman/733666 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; misc.el | |
(when window-system | |
(setq frame-title-format '(buffer-file-name "%f" ("%b"))) | |
(tooltip-mode -1) | |
(mouse-wheel-mode t) | |
(blink-cursor-mode -1)) | |
(add-hook 'before-make-frame-hook 'turn-off-tool-bar) | |
(set-terminal-coding-system 'utf-8) | |
(set-keyboard-coding-system 'utf-8) | |
(prefer-coding-system 'utf-8) | |
(setq visible-bell t | |
echo-keystrokes 0.1 | |
font-lock-maximum-decoration t | |
inhibit-startup-message t | |
transient-mark-mode t | |
color-theme-is-global t | |
shift-select-mode nil | |
mouse-yank-at-point t | |
require-final-newline t | |
line-number-mode t | |
column-number-mode t | |
truncate-partial-width-windows nil | |
default-truncate-lines t | |
uniquify-buffer-name-style 'forward | |
whitespace-style '(trailing lines space-before-tab | |
indentation space-after-tab) | |
whitespace-line-column 100 | |
ediff-window-setup-function 'ediff-setup-windows-plain | |
oddmuse-directory (concat dotfiles-dir "oddmuse") | |
xterm-mouse-mode t | |
save-place-file (concat dotfiles-dir "places")) | |
;; Set this to whatever browser you use | |
;; (setq browse-url-browser-function 'browse-url-firefox) | |
;; (setq browse-url-browser-function 'browse-default-macosx-browser) | |
;; (setq browse-url-browser-function 'browse-default-windows-browser) | |
;; (setq browse-url-browser-function 'browse-default-kde) | |
;; (setq browse-url-browser-function 'browse-default-epiphany) | |
;; (setq browse-url-browser-function 'browse-default-w3m) | |
;; (setq browse-url-browser-function 'browse-url-generic | |
;; browse-url-generic-program "~/src/conkeror/conkeror") | |
;; Transparently open compressed files | |
(auto-compression-mode t) | |
;; Save a list of recent files visited. | |
(recentf-mode 1) | |
;; Highlight matching parentheses when the point is on them. | |
(show-paren-mode 1) | |
;; ido-mode is like magic pixie dust! | |
(when (> emacs-major-version 21) | |
(ido-mode t) | |
(setq ido-enable-prefix nil | |
ido-enable-flex-matching t | |
ido-create-new-buffer 'always | |
ido-use-filename-at-point 'guess | |
ido-max-prospects 10)) | |
(set-default 'indent-tabs-mode nil) | |
(set-default 'indicate-empty-lines t) | |
(set-default 'imenu-auto-rescan t) | |
(add-hook 'text-mode-hook 'turn-on-auto-fill) | |
(add-hook 'text-mode-hook 'turn-on-flyspell) | |
(add-hook 'clojure-mode-hook 'turn-on-paredit) | |
(add-hook 'clojure-mode-hook 'turn-on-auto-fill) | |
(defvar coding-hook nil | |
"Hook that gets run on activation of any programming mode.") | |
(defalias 'yes-or-no-p 'y-or-n-p) | |
(random t) ;; Seed the random-number generator | |
;; Hippie expand: at times perhaps too hip | |
(delete 'try-expand-line hippie-expand-try-functions-list) | |
(delete 'try-expand-list hippie-expand-try-functions-list) | |
;; Don't clutter up directories with files~ | |
(setq backup-directory-alist `(("." . ,(expand-file-name | |
(concat dotfiles-dir "backups"))))) | |
;; Associate modes with file extensions | |
(add-to-list 'auto-mode-alist '("COMMIT_EDITMSG$" . diff-mode)) | |
(add-to-list 'auto-mode-alist '("\\.css$" . css-mode)) | |
(add-to-list 'auto-mode-alist '("\\.ya?ml$" . yaml-mode)) | |
(add-to-list 'auto-mode-alist '("\\.rb$" . ruby-mode)) | |
(add-to-list 'auto-mode-alist '("Rakefile$" . ruby-mode)) | |
(add-to-list 'auto-mode-alist '("\\.js\\(on\\)?$" . js2-mode)) | |
(add-to-list 'auto-mode-alist '("\\.xml$" . nxml-mode)) | |
;; Default to unified diffs | |
(setq diff-switches "-u") | |
;; Cosmetics | |
(eval-after-load 'diff-mode | |
'(progn | |
(set-face-foreground 'diff-added "green4") | |
(set-face-foreground 'diff-removed "red3"))) | |
(eval-after-load 'magit | |
'(progn | |
(set-face-foreground 'magit-diff-add "green3") | |
(set-face-foreground 'magit-diff-del "red3"))) | |
(eval-after-load 'mumamo | |
'(eval-after-load 'zenburn | |
'(ignore-errors (set-face-background | |
'mumamo-background-chunk-submode "gray22")))) | |
;; Platform-specific stuff | |
(when (eq system-type 'darwin) | |
;; Work around a bug on OS X where system-name is FQDN | |
(setq system-name (car (split-string system-name "\\.")))) | |
;; make emacs use the clipboard | |
(setq x-select-enable-clipboard t) | |
;; Get around the emacswiki spam protection | |
(add-hook 'oddmuse-mode-hook | |
(lambda () | |
(unless (string-match "question" oddmuse-post) | |
(setq oddmuse-post (concat "uihnscuskc=1;" oddmuse-post))))) | |
(provide 'misc) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; bindings.el | |
;; Use regex searches by default | |
(global-set-key (kbd "C-s") 'isearch-forward-regexp) | |
(global-set-key (kbd "\C-r") 'isearch-backward-regexp) | |
(global-set-key (kbd "C-M-s") 'isearch-forward) | |
(global-set-key (kbd "C-M-r") 'isearch-backward) | |
;; Jump to a definition in the current file. (This is awesome.) | |
(global-set-key (kbd "C-x C-i") 'ido-imenu) | |
;; File finding | |
(global-set-key (kbd "C-x M-f") 'ido-find-file-other-window) | |
(global-set-key (kbd "C-x C-M-f") 'find-file-in-project) | |
(global-set-key (kbd "C-x f") 'recentf-ido-find-file) | |
(global-set-key (kbd "C-c y") 'bury-buffer) | |
(global-set-key (kbd "C-c r") 'revert-buffer) | |
(global-set-key (kbd "M-`") 'file-cache-minibuffer-complete) | |
(global-set-key (kbd "C-x C-b") 'ibuffer) | |
;; Window switching. (C-x o goes to the next window) | |
(windmove-default-keybindings) ;; Shift+direction | |
(global-set-key (kbd "C-x O") (lambda () (interactive) (other-window -1))) ;; back one | |
;; Indentation help | |
(global-set-key (kbd "C-x ^") 'join-line) | |
;; If you want to be able to M-x without meta | |
(global-set-key (kbd "C-x C-m") 'execute-extended-command) | |
;; Fetch the contents at a URL, display it raw. | |
(global-set-key (kbd "C-x C-h") 'view-url) | |
;; Help should search more than just commands | |
(global-set-key (kbd "C-h a") 'apropos) | |
;; Should be able to eval-and-replace anywhere. | |
(global-set-key (kbd "C-c e") 'eval-and-replace) | |
;; For debugging Emacs modes | |
(global-set-key (kbd "C-c p") 'message-point) | |
;; Activate occur easily inside isearch | |
(define-key isearch-mode-map (kbd "C-o") | |
(lambda () (interactive) | |
(let ((case-fold-search isearch-case-fold-search)) | |
(occur (if isearch-regexp isearch-string (regexp-quote isearch-string)))))) | |
;; Command Key as Meta for Mac | |
(setq mac-command-key-is-meta 'true) | |
(provide 'bindings) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; defuns.el --- Define some custom functions | |
(require 'thingatpt) | |
(require 'imenu) | |
;;; These belong in coding-hook: | |
;; We have a number of turn-on-* functions since it's advised that lambda | |
;; functions not go in hooks. Repeatedly evaling an add-to-list with a | |
;; hook value will repeatedly add it since there's no way to ensure | |
;; that a lambda doesn't already exist in the list. | |
(defun local-column-number-mode () | |
(make-local-variable 'column-number-mode) | |
(column-number-mode t)) | |
(defun local-comment-auto-fill () | |
(set (make-local-variable 'comment-auto-fill-only-comments) t) | |
(auto-fill-mode t)) | |
(defun turn-on-hl-line-mode () | |
(if window-system (hl-line-mode t))) | |
(defun turn-on-save-place-mode () | |
(setq save-place t)) | |
(defun turn-on-whitespace () | |
(whitespace-mode t)) | |
(defun turn-on-paredit () | |
(paredit-mode t)) | |
(defun turn-off-tool-bar () | |
(tool-bar-mode -1)) | |
(defun add-watchwords () | |
(font-lock-add-keywords | |
nil '(("\\<\\(FIX\\|TODO\\|FIXME\\|HACK\\|REFACTOR\\):" | |
1 font-lock-warning-face t)))) | |
(add-hook 'coding-hook 'local-column-number-mode) | |
(add-hook 'coding-hook 'local-comment-auto-fill) | |
(add-hook 'coding-hook 'turn-on-hl-line-mode) | |
(add-hook 'coding-hook 'turn-on-save-place-mode) | |
(add-hook 'coding-hook 'pretty-lambdas) | |
(add-hook 'coding-hook 'add-watchwords) | |
(defun run-coding-hook () | |
"Enable things that are convenient across all coding buffers." | |
(run-hooks 'coding-hook)) | |
(defun untabify-buffer () | |
(interactive) | |
(untabify (point-min) (point-max))) | |
(defun indent-buffer () | |
(interactive) | |
(indent-region (point-min) (point-max))) | |
(defun cleanup-buffer () | |
"Perform a bunch of operations on the whitespace content of a buffer." | |
(interactive) | |
(indent-buffer) | |
(untabify-buffer) | |
(delete-trailing-whitespace)) | |
(defun recentf-ido-find-file () | |
"Find a recent file using ido." | |
(interactive) | |
(let ((file (ido-completing-read "Choose recent file: " recentf-list nil t))) | |
(when file | |
(find-file file)))) | |
;; Cosmetic | |
(defun pretty-lambdas () | |
(font-lock-add-keywords | |
nil `(("(?\\(lambda\\>\\)" | |
(0 (progn (compose-region (match-beginning 1) (match-end 1) | |
,(make-char 'greek-iso8859-7 107)) | |
nil)))))) | |
;; Other | |
(defun eval-and-replace () | |
"Replace the preceding sexp with its value." | |
(interactive) | |
(backward-kill-sexp) | |
(condition-case nil | |
(prin1 (eval (read (current-kill 0))) | |
(current-buffer)) | |
(error (message "Invalid expression") | |
(insert (current-kill 0))))) | |
(defun recompile-init () | |
"Byte-compile all your dotfiles again." | |
(interactive) | |
(byte-recompile-directory dotfiles-dir 0) | |
;; TODO: remove elpa-to-submit once everything's submitted. | |
(byte-recompile-directory (concat dotfiles-dir "elpa-to-submit/") 0)) | |
(defun regen-autoloads (&optional force-regen) | |
"Regenerate the autoload definitions file if necessary and load it." | |
(interactive "P") | |
(let ((autoload-dir (concat dotfiles-dir "/elpa-to-submit")) | |
(generated-autoload-file autoload-file)) | |
(when (or force-regen | |
(not (file-exists-p autoload-file)) | |
(some (lambda (f) (file-newer-than-file-p f autoload-file)) | |
(directory-files autoload-dir t "\\.el$"))) | |
(message "Updating autoloads...") | |
(let (emacs-lisp-mode-hook) | |
(update-directory-autoloads autoload-dir)))) | |
(load autoload-file)) | |
(defun sudo-edit (&optional arg) | |
(interactive "p") | |
(if (or arg (not buffer-file-name)) | |
(find-file (concat "/sudo:root@localhost:" (ido-read-file-name "File: "))) | |
(find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name)))) | |
(defun lorem () | |
"Insert a lorem ipsum." | |
(interactive) | |
(insert "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do " | |
"eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim" | |
"ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut " | |
"aliquip ex ea commodo consequat. Duis aute irure dolor in " | |
"reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla " | |
"pariatur. Excepteur sint occaecat cupidatat non proident, sunt in " | |
"culpa qui officia deserunt mollit anim id est laborum.")) | |
(defun switch-or-start (function buffer) | |
"If the buffer is current, bury it, otherwise invoke the function." | |
(if (equal (buffer-name (current-buffer)) buffer) | |
(bury-buffer) | |
(if (get-buffer buffer) | |
(switch-to-buffer buffer) | |
(funcall function)))) | |
(defun insert-date () | |
"Insert a time-stamp according to locale's date and time format." | |
(interactive) | |
(insert (format-time-string "%c" (current-time)))) | |
(defun pairing-bot () | |
"If you can't pair program with a human, use this instead." | |
(interactive) | |
(message (if (y-or-n-p "Do you have a test for that? ") "Good." "Bad!"))) | |
(defun esk-paredit-nonlisp () | |
"Turn on paredit mode for non-lisps." | |
(set (make-local-variable 'paredit-space-delimiter-chars) | |
(list ?\")) | |
(paredit-mode 1)) | |
(defun message-point () | |
(interactive) | |
(message "%s" (point))) | |
(defun toggle-fullscreen () | |
(interactive) | |
;; TODO: this only works for X. patches welcome for other OSes. | |
(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))) | |
;; A monkeypatch to cause annotate to ignore whitespace | |
(defun vc-git-annotate-command (file buf &optional rev) | |
(let ((name (file-relative-name file))) | |
(vc-git-command buf 0 name "blame" "-w" rev))) | |
(provide 'defuns) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; init.el | |
;; Much of this is from the emacs-starter-kit by technomancy. | |
;; Just wanted my own customizations. | |
;; Remove GUI items. | |
(if (fboundp 'menu-bar-mode) (menu-bar-mode -1)) | |
(if (fboundp 'tool-bar-mode) (tool-bar-mode -1)) | |
(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1)) | |
;; Load Path | |
(setq dotfiles-dir (file-name-directory | |
(or (buffer-file-name) load-file-name))) | |
(add-to-list 'load-path dotfiles-dir) | |
;; ELPA | |
(when | |
(load | |
(expand-file-name "~/.emacs.d/elpa/package.el")) | |
(package-initialize)) | |
;; Items to be loaded on every session. | |
(require 'ffap) | |
(require 'uniquify) | |
(require 'ansi-color) | |
(require 'bindings) | |
(require 'misc) | |
(require 'defuns) | |
(load "~/.emacs.d/haskell-mode/haskell-site-file") | |
(load "~/.emacs.d/php-mode") | |
(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode) | |
(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation) | |
;;(add-hook 'haskell-mode-hook 'turn-on-haskell-indent) | |
;;(add-hook 'haskell-mode-hook 'turn-on-haskell-simple-indent) | |
;; Load system and user specific customizations. | |
(setq system-specific-config (concat dotfiles-dir system-name ".el") | |
user-specific-config (concat dotfiles-dir user-login-name ".el") | |
user-specific-directory (concat dotfiles-dir user-login-name)) | |
(add-to-list 'load-path user-specific-directory) | |
(if (file-exists-p system-specific-config) (load system-specific-config)) | |
(if (file-exists-p user-specific-config) (load user-specific-config)) | |
(if (file-exists-p user-specific-directory) | |
(mapc #'load (directory-files user-specific-directory nil ".*el"))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
;;; bindings.el
;; Use regex searches by default
(global-set-key (kbd "C-s") 'isearch-forward-regexp)
(global-set-key (kbd "\C-r") 'isearch-backward-regexp)
(global-set-key (kbd "C-M-s") 'isearch-forward)
(global-set-key (kbd "C-M-r") 'isearch-backward)
;; Jump to a definition in the current file. (This is awesome.)
(global-set-key (kbd "C-x C-i") 'ido-imenu)
;; File finding
(global-set-key (kbd "C-x M-f") 'ido-find-file-other-window)
(global-set-key (kbd "C-x C-M-f") 'find-file-in-project)
(global-set-key (kbd "C-x f") 'recentf-ido-find-file)
(global-set-key (kbd "C-c y") 'bury-buffer)
(global-set-key (kbd "C-c r") 'revert-buffer)
(global-set-key (kbd "M-`") 'file-cache-minibuffer-complete)
(global-set-key (kbd "C-x C-b") 'ibuffer)
;; Window switching. (C-x o goes to the next window)
(windmove-default-keybindings) ;; Shift+direction
(global-set-key (kbd "C-x O") (lambda () (interactive) (other-window -1))) ;; back one
;; Indentation help
(global-set-key (kbd "C-x ^") 'join-line)
;; If you want to be able to M-x without meta
(global-set-key (kbd "C-x C-m") 'execute-extended-command)
;; Fetch the contents at a URL, display it raw.
(global-set-key (kbd "C-x C-h") 'view-url)
;; Help should search more than just commands
(global-set-key (kbd "C-h a") 'apropos)
;; Should be able to eval-and-replace anywhere.
(global-set-key (kbd "C-c e") 'eval-and-replace)
;; For debugging Emacs modes
(global-set-key (kbd "C-c p") 'message-point)
;; Activate occur easily inside isearch
(define-key isearch-mode-map (kbd "C-o")
(lambda () (interactive)
(let ((case-fold-search isearch-case-fold-search))
(occur (if isearch-regexp isearch-string (regexp-quote isearch-string))))))
;; Command Key as Meta for Mac
(setq mac-command-key-is-meta 'true)
(provide 'bindings)