Created
July 31, 2009 20:14
-
-
Save ghoseb/159420 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
;;; ghoseb.el -- My customisations in addition to ESK | |
;;; Author: Baishampayan Ghose <[email protected]> | |
;;; Time-stamp: "2009-08-01 01:44:30 ghoseb" | |
(require 'cl) | |
;;; ---------------------- | |
;;; General customisations | |
;;; ---------------------- | |
(set-scroll-bar-mode 'nil) | |
(show-paren-mode 1) | |
(savehist-mode 1) | |
;; ---------------------- | |
;; Final newline handling | |
;; ---------------------- | |
(setq require-final-newline t) | |
(setq next-line-extends-end-of-buffer nil) | |
(setq next-line-add-newlines nil) | |
;; ----------- | |
;; Frame Setup | |
;; ----------- | |
(setq initial-frame-alist '((top . 20) | |
(left . 25) | |
(width . 205) | |
(height . 58))) | |
(setq frame-title-format "%b") | |
(setq icon-title-format "%b") | |
;; --------- | |
;; TAB Setup | |
;; --------- | |
(setq-default tab-width 4 | |
standard-indent 4 | |
indent-tabs-mode nil) | |
;; ------------- | |
;; Custom colors | |
;; ------------- | |
(set-default-font "Droid Sans Mono-9") | |
(require 'color-theme-g0sub) | |
(color-theme-g0sub) | |
;; --------------------------- | |
;; Better Copy-Paste behaviour | |
;; --------------------------- | |
(global-set-key "\C-w" 'clipboard-kill-region) | |
(global-set-key "\M-w" 'clipboard-kill-ring-save) | |
(global-set-key "\C-y" 'clipboard-yank) | |
;; ---------------------------------------- | |
;; Kill current buffer without confirmation | |
;; ---------------------------------------- | |
(global-set-key "\C-xk" 'kill-current-buffer) | |
(defun kill-current-buffer () | |
"Kill the current buffer, without confirmation." | |
(interactive) | |
(kill-buffer (current-buffer))) | |
;; -------------------- | |
;; Several useful hooks | |
;; -------------------- | |
(add-hook 'before-save-hook 'time-stamp) | |
;; ESK specific | |
(defun turn-on-highlight-parens-mode () | |
(highlight-parentheses-mode 1)) | |
(add-hook 'coding-hook 'turn-on-highlight-parens-mode) | |
(remove-hook 'coding-hook 'turn-on-hl-line-mode) | |
(remove-hook 'clojure-mode-hook 'idle-highlight) | |
(remove-hook 'emacs-lisp-mode-hook 'idle-highlight) | |
;; --------- | |
;; Templates | |
;; --------- | |
(require 'template) | |
(template-initialize) | |
;; ---------- | |
;; Multi Term | |
;; ---------- | |
(require 'multi-term) | |
(setq multi-term-program "/bin/zsh") | |
(global-set-key "\C-c\M-t" 'multi-term) | |
;;; -------- | |
;;; Uniquify | |
;;; -------- | |
(require 'uniquify) | |
(eval-after-load 'uniquify | |
'(progn | |
(setq uniquify-buffer-name-style 'reverse) | |
(setq uniquify-separator "/") | |
(setq uniquify-after-kill-buffer-p t) ; rename after killing uniquified | |
(setq uniquify-ignore-buffers-re "^\\*"))) | |
;;; ------- | |
;;; Clojure | |
;;; ------- | |
(clojure-slime-config "/home/ghoseb/opt") | |
(defun clj () | |
"Starts Clojure in Slime" | |
(interactive) | |
(slime 'clojure)) | |
(add-hook 'slime-connected-hook | |
(lambda () | |
(define-key slime-repl-mode-map (kbd "<C-M-return>") 'slime-repl-clear-buffer) | |
(define-key slime-mode-map (kbd "C-t") 'transpose-sexps) | |
(define-key slime-mode-map (kbd "C-M-t") 'transpose-chars) | |
(define-key slime-mode-map (kbd "C-b") 'backward-sexp) | |
(define-key slime-mode-map (kbd "C-M-b") 'backward-char) | |
(define-key slime-mode-map (kbd "C-f") 'forward-sexp) | |
(define-key slime-mode-map (kbd "C-M-f") 'forward-char) | |
(define-key slime-mode-map (kbd "C-c h") 'slime-hyperspec-lookup) | |
(define-key slime-mode-map (kbd "C-TAB") 'slime-fuzzy-complete-symbol) | |
(define-key slime-mode-map (kbd "TAB") 'slime-indent-and-complete-symbol) | |
(define-key slime-mode-map (kbd "<f5>") 'slime-selector))) | |
(eval-after-load 'paredit-mode | |
'(progn | |
(highlight-parentheses-mode) | |
(define-key paredit-mode-map (kbd "(") 'paredit-open-parenthesis) | |
(define-key paredit-mode-map (kbd ")") 'paredit-close-parenthesis) | |
(define-key paredit-mode-map (kbd "M-(") (lambda () (interactive) (insert "("))) | |
(define-key paredit-mode-map (kbd "M-)") (lambda () (interactive) (insert ")"))) | |
(define-key paredit-mode-map (kbd "M-j") 'paredit-newline) | |
(define-key paredit-mode-map (kbd "RET") nil) | |
(define-key paredit-mode-map (kbd "C-t") 'transpose-sexps) | |
(define-key paredit-mode-map (kbd "C-M-t") 'transpose-chars) | |
(define-key paredit-mode-map (kbd "C-b") 'backward-sexp) | |
(define-key paredit-mode-map (kbd "C-M-b") 'backward-char) | |
(define-key paredit-mode-map (kbd "C-f") 'forward-sexp) | |
(define-key paredit-mode-map (kbd "C-M-f") 'forward-char) | |
(define-key paredit-mode-map (kbd "<C-M-backspace>") 'backward-kill-sexp))) | |
;;; ------------------------ | |
;;; Useful utility functions | |
;;; ------------------------ | |
(defun revert-all-buffers() | |
"Refresh all open buffers from their respective files" | |
(interactive) | |
(let* ((list (buffer-list)) | |
(buffer (car list))) | |
(while buffer | |
(if (string-match "\\*" (buffer-name buffer)) | |
(progn | |
(setq list (cdr list)) | |
(setq buffer (car list))) | |
(progn | |
(set-buffer buffer) | |
(revert-buffer t t t) | |
(setq list (cdr list)) | |
(setq buffer (car list)))))) | |
(message "Refreshing open files")) | |
(global-set-key (kbd "<f5>") 'revert-all-buffers) | |
(defun rename-file-and-buffer (new-name) | |
"Renames both current buffer and file it's visiting to NEW-NAME." | |
(interactive "sNew name: ") | |
(let ((name (buffer-name)) | |
(filename (buffer-file-name))) | |
(if (not filename) | |
(message "Buffer '%s' is not visiting a file!" name) | |
(if (get-buffer new-name) | |
(message "A buffer named '%s' already exists!" new-name) | |
(progn (rename-file name new-name 1) | |
(rename-buffer new-name) | |
(set-visited-file-name new-name) | |
(set-buffer-modified-p nil)))))) | |
(defun move-buffer-file (dir) | |
"Moves both current buffer and file it's visiting to DIR." | |
(interactive "DNew directory: ") | |
(let* ((name (buffer-name)) | |
(filename (buffer-file-name)) | |
(dir | |
(if (string-match dir "\\(?:/\\|\\\\)$") | |
(substring dir 0 -1) dir)) | |
(newname (concat dir "/" name))) | |
(if (not filename) | |
(message "Buffer '%s' is not visiting a file!" name) | |
(progn (copy-file filename newname 1) | |
(delete-file filename) | |
(set-visited-file-name newname) | |
(set-buffer-modified-p nil) | |
t)))) | |
;; Custom files | |
(setq custom-file "~/.emacs-custom.el") | |
(load custom-file 'noerror) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment