1 (setq load-path (cons "~/.emacs.d/emacs" load-path))
4 (add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
5 (load-theme 'zenburn t)
11 (load "my-generic-stuff.el")
14 (load "my-org-mode.el")
16 (load "my-twitter.el")
18 (load "my-haskell.el")
19 (load "my-swank-js.el")
22 (if (>= emacs-major-version 23)
23 (setq default-frame-alist '((font . "Inconsolata-12")))
25 "-Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO8859-1"))
27 (setq-default indent-tabs-mode nil)
28 (add-hook 'emacs-lisp-mode-hook
29 (lambda () (which-function-mode t)))
35 (setq scroll-conservatively 1)
36 (put 'upcase-region 'disabled nil)
37 (put 'downcase-region 'disabled nil)
42 (defun match-paren (arg)
43 "Go to the matching paren if on a paren; otherwise insert %."
45 (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
46 ((looking-at "\\s\)") (forward-char 1) (backward-list 1))
47 (t (self-insert-command (or arg 1)))))
49 ;; emacs window size according to screen resolution
50 ;; from stackoverflow.com
51 ;; - <http://stackoverflow.com/questions/92971/how-do-i-set-the-size-of-emacs-window>
52 (defun set-frame-size-according-to-resolution ()
56 ;; use 120 char wide window for largeish displays
57 ;; and smaller 80 column windows for smaller displays
58 ;; pick whatever numbers make sense for you
59 (if (> (x-display-pixel-width) 1280)
60 (add-to-list 'default-frame-alist (cons 'width 80))
61 (add-to-list 'default-frame-alist (cons 'width 78)))
62 ;; for the height, subtract a couple hundred pixels
63 ;; from the screen height (for panels, menubars and
64 ;; whatnot), then divide by the height of a char to
65 ;; get the height we want
66 (add-to-list 'default-frame-alist
67 (cons 'height (/ (- (x-display-pixel-height) 0) (frame-char-height)))))))
69 (set-frame-size-according-to-resolution)
73 (setq tramp-default-method "ssh")
75 ;; cut and paste with the rest of ecosystem in X
76 (setq x-select-enable-clipboard t)
79 (if (> emacs-major-version 20)
83 (add-to-list 'load-path "~/.emacs.d/vendor/clojure-mode")
84 (require 'clojure-mode)
86 ;; highlight parentheses mode
87 (require 'highlight-parentheses)
90 ;; http://stackoverflow.com/questions/2413047/how-do-i-get-rainbow-parentheses-in-emacs
91 ;; (setq hl-paren-colors
92 ;; '(;"#8f8f8f" ; this comes from Zenburn
93 ;; ; and I guess I'll try to make the far-outer parens look like this
94 ;; "orange1" "yellow1" "greenyellow" "green1"
95 ;; "springgreen1" "cyan1" "slateblue1" "magenta1" "purple"))
98 (autoload 'paredit-mode "paredit"
99 "Minor mode for pseudo-structurally editing Lisp code." t)
101 (dolist (hook '(emacs-lisp-mode-hook
103 lisp-interaction-mode-hook
106 (add-hook hook #'(lambda ()
107 (highlight-parentheses-mode t)
110 (autoload 'clojure-test-mode "clojure-test-mode" "Clojure test mode" t)
111 (autoload 'clojure-test-maybe-enable "clojure-test-mode" "" t)
112 (add-hook 'clojure-mode-hook 'clojure-test-maybe-enable)
115 (autoload 'flyspell-mode "flyspell" "On-the-fly spelling checker." t)
118 (defun switch-full-screen ()
120 (shell-command "wmctrl -r :ACTIVE: -btoggle,fullscreen"))
122 (global-set-key [f10] 'switch-full-screen)
128 (setq browse-url-browser-function 'browse-url-generic
129 browse-url-generic-program "/usr/bin/iceweasel"
130 browse-url-new-window-flag t
131 browse-url-firefox-new-window-is-tab t)
132 (define-key global-map "\C-co" 'browse-url-at-point)
134 ;; nxml for editing xml files
135 (setq auto-mode-alist
136 (cons '("\\.\\(xml\\|xsl\\|rng\\|xhtml\\)\\'" . nxml-mode)
139 ;; completions enhancements
142 ;; Interactively Do Things mode
146 (setq ido-enable-flex-matching t)
147 (setq ido-enable-last-directory-history nil)
150 (when (require 'browse-kill-ring nil 'noerror)
151 (browse-kill-ring-default-keybindings))
153 ;; rainbox mode for CSS color highlighting
154 (require 'rainbow-mode)
156 (add-to-list 'auto-mode-alist '("\\.rkt$" . scheme-mode))
158 ;; scheme auto complete
159 (require 'scheme-complete)
160 (autoload 'scheme-smart-complete "scheme-complete" nil t)
161 (eval-after-load 'scheme
162 '(progn (define-key scheme-mode-map "\t" 'scheme-complete-or-indent)))
165 (add-to-list 'load-path "~/.emacs.d/vendor/popup/")
166 (add-to-list 'load-path "~/.emacs.d/vendor/auto-complete/")
167 (require 'auto-complete)
169 (set-default 'ac-sources
173 ac-source-words-in-buffer
174 ac-source-words-in-same-mode-buffers
177 (dolist (m '(c-mode c++-mode java-mode))
178 (add-to-list 'ac-modes m))
180 (global-auto-complete-mode t)
182 ;; slime autocomplete
183 (add-to-list 'load-path "~/.emacs.d/vendor/ac-slime/")
186 (set-default 'ac-sources 'ac-source-slime-simple)
187 (add-hook 'slime-mode-hook 'set-up-slime-ac)
188 (add-hook 'slime-repl-mode-hook 'set-up-slime-ac)
192 ;(setq scheme-program-name "racket")
193 ;(setq quack-default-program "racket -il racket/base")
194 ;(setq quack-switch-to-scheme-method 'other-window)
195 ;(setq quack-newline-behavior 'indent-newline-indent)
197 (defun racket-enter! ()
199 (comint-send-string (scheme-proc)
200 (format "(enter! (file \"%s\") #:verbose)\n" buffer-file-name))
201 (switch-to-scheme t))
202 (local-set-key "\C-c\C-v" 'racket-enter!)
205 (add-to-list 'load-path "~/.emacs.d/vendor/company-mode")
206 (autoload 'company-mode "company" nil t)
208 ;; handle trailing whitespaces
209 ;(add-hook 'before-save-hook 'delete-trailing-whitespace)
211 ;; update copyright years before saving.
212 ;(add-hook 'before-save-hook 'copyright-update)
214 ;; la carte mode (access menu from keyboard)
217 ;;; Based on code by Rudi Schlatte.
218 ;;; Needs this library:
219 ;;; http://www.emacswiki.org/cgi-bin/wiki/XmlRpc
222 (defvar lisppaste-nick "vu3rdd")
223 (defvar lisppaste-channel "None")
224 (defvar lisppaste-colorize-as "Scheme")
225 (defvar lisppaste-prev-title "")
227 (defun lisppaste-region (region-begin region-end
228 &optional channel username title annotate)
230 (let* ((content (buffer-substring region-begin region-end))
232 (read-from-minibuffer "Channel: " lisppaste-channel)))
233 (username (or username (read-from-minibuffer "Nick: " lisppaste-nick)))
234 (title (or title (read-from-minibuffer "Title: " lisppaste-prev-title)))
235 (annotate (or annotate (string-to-number (read-from-minibuffer "Annotate? "))))
236 (colorize-as (if (zerop annotate) (read-from-minibuffer "Colorize as (empty for default): " lisppaste-colorize-as))))
237 (setf lisppaste-prev-title title)
238 (let* ((ret (xml-rpc-method-call "http://common-lisp.net:8185/RPC2" 'newpaste
239 channel username title content (or colorize-as annotate)))
240 (url-beg (search "http://" ret))
241 (url-end (and url-beg (search " " ret :start2 url-beg)))
242 (url (and url-end (substring ret url-beg url-end))))
244 (and url (browse-url url))
247 ;;; displays "\" at the end of lines that wrap
248 (setq longlines-show-hard-newlines t)
251 (autoload 'js2-mode "js2-mode" nil t)
252 (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
254 ;; geiser for Scheme programming
255 ;(load-file "~/src/geiser/elisp/geiser.el")
258 ;(setq geiser-guile-binary "racket")
259 ;(setq geiser-active-implementations '(racket))
263 (defun flymake-racket-init ()
264 (let* ((temp-file (flymake-init-create-temp-buffer-copy
265 'flymake-create-temp-inplace))
266 (local-file (file-relative-name
268 (file-name-directory buffer-file-name))))
269 (list "racket" (list "-qf" local-file))))
271 (push '("\\.rkt\\'" flymake-racket-init)
272 flymake-allowed-file-name-masks)
276 (autoload 'ghc-init "ghc" nil t)
277 (add-hook 'haskell-mode-hook
280 (require 'auto-complete-config)
281 (auto-complete-mode t)
282 (add-to-list 'ac-sources 'ac-source-ghc-mod)))
283 ;; haskell-mode hooks
284 (add-hook 'haskell-mode-hook 'capitalized-words-mode)
285 (add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan)
288 (autoload 'sml-mode "sml-mode" "Major mode for editing SML." t)
289 (autoload 'run-sml "sml-proc" "Run an inferior SML process." t)
294 (setq message-send-mail-function 'message-send-mail-with-sendmail
295 mail-specify-envelope-from t ; Settings to work with msmtp
296 message-sendmail-f-is-evil nil
297 mail-envelope-from 'header
298 message-sendmail-envelope-from 'header
299 sendmail-program "/usr/bin/msmtp"
300 user-full-name "Ramakrishnan Muthukrishnan")
302 (setq message-kill-buffer-on-exit t) ; kill buffer after sending mail)
306 (setq-default cursor-type '(bar . 2))
307 (set-cursor-color "#ff0000")