(eval-after-load 'ruby-mode
'(add-hook 'ruby-mode-hook 'esk-paredit-nonlisp))
(add-hook 'slime-repl-mode-hook 'turn-on-paredit)
(add-hook 'clojure-mode-hook 'turn-on-whitespace)
(setq inferior-lisp-program
"java -cp /home/phil/src/clojure/clojure.jar clojure.main")
(set-default 'tab-width 4)
(set-default 'c-basic-offset 2)
(add-hook 'xml-mode-hook 'run-coding-hook)
(add-hook 'java-mode-hook 'run-coding-hook)
(eval-after-load 'java-mode
'(progn
(define-key java-mode-map (kbd "C-M-h") 'backward-kill-word)))
(add-to-list 'auto-mode-alist '("\\.duby$" . ruby-mode))
(setq slime-net-coding-system 'utf-8-unix)
(defun slime-go (&optional port)
(interactive)
(slime-connect "localhost" (or port slime-port)))
(defun slime-start-filter (process output)
(when (string-match "Connection opened on local port" output)
(slime-connect "localhost" slime-port)
(set-process-filter process nil)))
(defun mvn-swank ()
(interactive)
(let ((root (locate-dominating-file default-directory "pom.xml")))
(when (not root)
(error "Not in a Maven project."))
(shell-command (format "cd %s && mvn -o clojure:swank &" root) "*mvn-swank*")
(set-process-filter (get-buffer-process "*mvn-swank*") 'slime-start-filter)))
(defun lein-swank ()
(interactive)
(let ((root (locate-dominating-file default-directory "project.clj")))
(when (not root)
(error "Not in a Leiningen project."))
(shell-command (format "cd %s && lein swank %s &" root slime-port)
"*lein-swank*")
(set-process-filter (get-buffer-process "*lein-swank*")
(lambda (process output)
(when (string-match "Connection opened on" output)
(slime-connect "localhost" slime-port)
(set-process-filter process nil))))
(message "Starting swank server...")))
(global-set-key (kbd "C-c C-s") 'slime-it-up)
(global-set-key (kbd "C-c C-l") 'lein-swank)
(global-set-key (kbd "C-c C-m") 'mvn-swank)