Created
May 20, 2013 18:43
-
-
Save banister/5614321 to your computer and use it in GitHub Desktop.
This file contains 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
(add-to-list 'load-path "~/.emacs.d/") | |
(add-to-list 'load-path "~/.emacs.d/ruby-dev/") | |
(autoload 'turn-on-ruby-dev "ruby-dev" nil t) | |
(add-hook 'ruby-mode-hook 'turn-on-ruby-dev) | |
(require 'package) | |
(add-to-list 'package-archives | |
'("marmalade" . "http://marmalade-repo.org/packages/") t) | |
(add-to-list 'package-archives | |
'("melpa" . "http://melpa.milkbox.net/packages/") t) | |
(add-to-list 'package-archives | |
'("melpa" . "http://melpa.milkbox.net/packages/") t) | |
(package-initialize) | |
; (add-to-list 'custom-theme-load-path "~/.emacs.d/themes/") | |
(load-theme 'zenburn t) | |
(column-number-mode 1) | |
;; Modern lisp list tools https://github.com/magnars/dash.el | |
(require 'dash) | |
;; Project management tool | |
(require 'projectile) | |
(defun remove-all-dired-buffers () | |
(mapc (lambda (buf) (when (eq (buffer-local-value 'major-mode buf) 'dired-mode) (kill-buffer buf))) (buffer-list))) | |
(defun narrow-to-region-indirect (start end) | |
"Restrict editing in this buffer to the current region, indirectly." | |
(interactive "r") | |
(deactivate-mark) | |
(let ((buf (clone-indirect-buffer nil nil))) | |
(with-current-buffer buf | |
(narrow-to-region start end)) | |
(switch-to-buffer buf))) | |
;; start help mini console | |
(global-set-key (kbd "s-h") 'helm-mini) | |
(global-set-key (kbd "s-f") 'touch-file) | |
(global-set-key (kbd "M-r") 'revert-buffer) | |
;; fast forward to char | |
(global-set-key (kbd "M-c") 'iy-go-to-char) | |
(global-set-key (kbd "M-n") 'narrow-to-region-indirect) | |
(global-set-key (kbd "M-u") 'widen) | |
;; jump to a word starting with given char | |
(global-set-key (kbd "s-j") 'ace-jump-word-mode) | |
(global-set-key (kbd "s-x") '(lambda () (interactive) (remove-all-dired-buffers) (dired "./"))) | |
(global-set-key (kbd "M-k") 'kill-whole-line) | |
(global-set-key (kbd "s-d") '(lambda () (interactive) (diff-buffer-with-file))) | |
(global-set-key (kbd "s-t") (lambda () (interactive) (let ((compile-command "rake test")) (call-interactively 'compile)))) | |
(global-set-key (kbd "s-t") (lambda () (interactive) (compile "rake test"))) | |
(global-set-key (kbd "s-s") (lambda () (interactive) (set-register ?1 (buffer-substring (region-beginning) (region-end))) (deactivate-mark))) | |
(global-set-key (kbd "s-p") (lambda () (interactive) (insert (get-register ?1) ?\n))) | |
(global-set-key (kbd "s-r") 'gist-region) | |
(global-set-key (kbd "s-g") 'gist-buffer) | |
(global-set-key (kbd "s-q") 'kill-region) | |
(global-set-key (kbd "C-r") (lookup-key global-map (kbd "C-x r"))) | |
;; setup hotkey for ack | |
(global-set-key (kbd "s-a") 'ack-and-a-half) | |
;; find a file in the current project | |
(global-set-key (kbd "s-f") 'ffip) | |
(global-set-key (kbd "s-2") 'er/expand-region) | |
(global-set-key (kbd "c-s-c C-S-c") 'mc/edit-lines) | |
(global-set-key (kbd "C->") 'mc/mark-next-like-this) | |
(global-set-key (kbd "C-<") 'mc/mark-previous-like-this) | |
(global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this) | |
(add-hook 'before-save-hook 'delete-trailing-whitespace) | |
;; map | |
(require 'rvm) | |
(rvm-use-default) ;; use rvm's default ruby for the current Emacs session | |
(defun rotate-windows-helper(x d) | |
(if (equal (cdr x) nil) (set-window-buffer (car x) d) | |
(set-window-buffer (car x) (window-buffer (cadr x))) (rotate-windows-helper (cdr x) d))) | |
(defun rotate-windows () | |
(interactive) | |
(rotate-windows-helper (window-list) (window-buffer (car (window-list)))) | |
(select-window (car (last (window-list))))) | |
; bind to the key super-r | |
(global-set-key (kbd "s-w") 'rotate-windows) | |
(setq js-indent-level 2) | |
(defun create-blank-buffer () | |
"create a scratch buffer" | |
(interactive) | |
(switch-to-buffer (get-buffer-create (generate-new-buffer-name"empty"))) | |
(ruby-mode)) | |
(global-set-key (kbd "s-n") 'create-blank-buffer) | |
; rails mode | |
(add-to-list 'load-path (expand-file-name "~/.emacs.d/rails-minor-mode")) | |
(require 'rails) | |
(add-to-list 'auto-mode-alist '("\\.jst\.eco\\'" . html-mode)) | |
(add-to-list 'auto-mode-alist '("\\.erb\\'" . html-mode)) | |
(add-to-list 'auto-mode-alist '("\\.css\.scss\\'" . sass-mode)) | |
(defun touch-file (my-file) | |
(interactive (list (read-string "File to create:" default-directory))) | |
(shell-command (format "touch %s" my-file)) | |
(if (eq major-mode 'dired-mode) (revert-buffer))) | |
(add-hook 'dired-mode-hook | |
'(lambda () | |
(define-key dired-mode-map | |
"]" 'touch-file))) | |
(add-hook 'ruby-mode-hook '(lambda () | |
(ruby-electric-mode 1))) | |
(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. | |
'(ack-and-a-half-executable "/usr/local/bin/ack") | |
'(ack-executable "/usr/local/bin/ack") | |
'(coffee-tab-width 2) | |
'(custom-safe-themes (quote ("fc5fcb6f1f1c1bc01305694c59a1a861b008c534cae8d0e48e4d5e81ad718bc6" "71b172ea4aad108801421cc5251edb6c792f3adbaecfa1c52e94e3d99634dee7" "50ceca952b37826e860867d939f879921fac3f2032d8767d646dd4139564c68a" default)))) | |
(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. | |
) | |
;; Keep region when undoing in region | |
(defadvice undo-tree-undo (around keep-region activate) | |
(if (use-region-p) | |
(let ((m (set-marker (make-marker) (mark))) | |
(p (set-marker (make-marker) (point)))) | |
ad-do-it | |
(goto-char p) | |
(set-mark m) | |
(set-marker p nil) | |
(set-marker m nil)) | |
ad-do-it)) | |
;; ensure tabs are specially colored, since they mess up things in | |
;; langs like coffeescript | |
(defface extra-whitespace-face | |
'((t (:background "pale green"))) | |
"Used for tabs and such.") | |
(defvar my-extra-keywords | |
'(("\t" . 'extra-whitespace-face))) | |
;; turn on dired-details (hides excessive info in dired) | |
(require 'dired-details) | |
(dired-details-install) | |
;; coffeescript specific hooks | |
(defun coffee-init () | |
(font-lock-add-keywords nil my-extra-keywords) | |
(define-key coffee-mode-map | |
(kbd "M-i") 'indent-relative) | |
(define-key coffee-mode-map | |
(kbd "M-j") (lambda () (interactive) (forward-line 1) (indent-relative))) | |
(define-key coffee-mode-map | |
(kbd "M-j") (lambda () (interactive) (forward-line 1) | |
(indent-relative))) | |
(hungry-delete-mode 1)) | |
(add-hook 'coffee-mode-hook | |
'coffee-init) | |
;; ensure undo-tree minor mode is available everywhere | |
(global-undo-tree-mode 1) | |
(put 'narrow-to-region 'disabled nil) | |
;; start the emacs server | |
(server-start 1) | |
;; turn transient mark mode on | |
(transient-mark-mode 1) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment