From e3290c8f7510cb40b49bf39a896d4ff3ccb91d59 Mon Sep 17 00:00:00 2001 From: Phil Hagelberg Date: Sat, 8 May 2010 22:28:33 -0700 Subject: [PATCH] Move a few slime-related functions into clojure-mode. This allows clojure-mode to be used with bare slime, no special swank-clojure.el package is required. --- clojure-mode.el | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/clojure-mode.el b/clojure-mode.el index 6a3d4638..a43da2b1 100644 --- a/clojure-mode.el +++ b/clojure-mode.el @@ -688,17 +688,38 @@ check for contextual indenting." (handler-case 1) (handle 1)) + + +;; A little bit of SLIME help: +;; swank-clojure.el should now only be needed if you want to launch from Emacs + +(defun clojure-find-package () + (let ((regexp "^(\\(clojure.core/\\)?\\(in-\\)?ns\\+?[ \t\n\r]+\\(#\\^{[^}]+}[ \t\n\r]+\\)?[:']?\\([^()\" \t\n]+\\>\\)")) + (save-excursion + (when (or (re-search-backward regexp nil t) + (re-search-forward regexp nil t)) + (match-string-no-properties 4))))) + +(defun clojure-enable-slime () + (slime-mode t) + (set (make-local-variable 'slime-find-buffer-package-function) + 'clojure-find-package)) + +;;;###autoload (defun clojure-enable-slime-on-existing-buffers () (interactive) - (add-hook 'clojure-mode-hook 'swank-clojure-slime-mode-hook) + (add-hook 'clojure-mode-hook 'clojure-enable-slime) (save-window-excursion (dolist (buffer (buffer-list)) (with-current-buffer buffer - (if (equal major-mode 'clojure-mode) - (swank-clojure-slime-mode-hook)))))) + (when (eq major-mode 'clojure-mode) + (clojure-enable-slime)))))) +;;;###autoload (add-hook 'slime-connected-hook 'clojure-enable-slime-on-existing-buffers) + + ;;;###autoload (add-to-list 'auto-mode-alist '("\\.clj$" . clojure-mode))