Skip to content

Instantly share code, notes, and snippets.

@banister
Created May 20, 2013 18:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save banister/5614321 to your computer and use it in GitHub Desktop.
Save banister/5614321 to your computer and use it in GitHub Desktop.
(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