<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -70,12 +70,14 @@
 ;; 1.1: 2009-04-28
 ;;  * Fix to work with latest version of test-is. (circa Clojure 1.0)
 
+;; 1.2: ???
+;;  * Add clojure-test-jump-to-(test|implementation).
+
 ;;; TODO:
 
 ;; * Implement next-problem command
 ;; * Errors *loading* the tests are not reported
 ;; * Error messages need line number.
-;; * Highlight as they fail? (big job, probably only useful for slow suites)
 ;; * Currently show-message needs point to be on the line with the
 ;;   &quot;is&quot; invocation; this could be cleaned up.
 
@@ -84,6 +86,7 @@
 (require 'clojure-mode)
 (require 'cl)
 (require 'slime)
+(require 'swank-clojure)
 
 ;; Faces
 
@@ -178,6 +181,19 @@
                                    'clojure-test-error-face))
       (overlay-put overlay 'message message))))
 
+(defun clojure-test-implementation-for (namespace)
+  (let* ((segments (split-string namespace &quot;\\.&quot;))
+         (common-segments (butlast segments 2))
+         (impl-segments (append common-segments (last segments))))
+    (mapconcat 'identity impl-segments &quot;/&quot;)))
+
+(defun clojure-test-test-for (namespace)
+  (let* ((segments (split-string namespace &quot;\\.&quot;))
+         (common-segments (butlast segments))
+         (test-segments (append common-segments '(&quot;test&quot;)))
+         (test-segments (append test-segments (last segments))))
+    (mapconcat 'identity test-segments &quot;/&quot;)))
+
 ;; Commands
 
 (defun clojure-test-run-tests ()
@@ -213,21 +229,40 @@
       (alter-meta! t assoc :test nil))&quot;
    callback))
 
+(defun clojure-test-jump-to-implementation ()
+  &quot;Jump from test file to implementation.&quot;
+  (interactive)
+  (find-file (format &quot;%s/src/%s.clj&quot;
+                     (locate-dominating-file buffer-file-name &quot;src/&quot;)
+                     (clojure-test-implementation-for (slime-current-package)))))
+
+(defun clojure-test-jump-to-test ()
+  &quot;Jump from implementation file to test.&quot;
+  (interactive)
+  (find-file (format &quot;%s/test/%s.clj&quot;
+                     (locate-dominating-file buffer-file-name &quot;src/&quot;)
+                     (clojure-test-test-for (slime-current-package)))))
+
 (defvar clojure-test-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map (kbd &quot;C-c C-,&quot;) 'clojure-test-run-tests)
-    (define-key map (kbd &quot;C-c C-'&quot;)   'clojure-test-show-result)
+    (define-key map (kbd &quot;C-c C-'&quot;) 'clojure-test-show-result)
     (define-key map (kbd &quot;C-c '&quot;)   'clojure-test-show-result)
+    (define-key map (kbd &quot;C-c k&quot;)   'clojure-test-clear)
+    (define-key map (kbd &quot;C-c t&quot;)   'clojure-test-jump-to-implementation)
     map)
   &quot;Keymap for Clojure test mode.&quot;)
 
+(define-key clojure-mode-map (kbd &quot;C-c t&quot;) 'clojure-test-jump-to-test)
+
 ;;;###autoload
 (define-minor-mode clojure-test-mode
   &quot;A minor mode for running Clojure tests.&quot;
   nil &quot; Test&quot; clojure-test-mode-map
   (if (slime-connected-p)
-      (clojure-test-load-reporting)
-    (add-hook 'slime-connected-hook 'clojure-test-load-reporting)))
+      (clojure-test-load-reporting)))
+
+(add-hook 'slime-connected-hook 'clojure-test-load-reporting)
 
 ;;;###autoload
 (defun clojure-test-maybe-enable ()</diff>
      <filename>clojure-test-mode.el</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>a8766a79ab0e9799bc7e40b6e379c0fbd4abaecf</id>
    </parent>
  </parents>
  <author>
    <name>Phil Hagelberg</name>
    <email>technomancy@gmail.com</email>
  </author>
  <url>http://github.com/jochu/clojure-mode/commit/8c333628bf507749dd78b312333130b00e6ec06f</url>
  <id>8c333628bf507749dd78b312333130b00e6ec06f</id>
  <committed-date>2009-05-21T11:45:58-07:00</committed-date>
  <authored-date>2009-05-05T15:18:43-07:00</authored-date>
  <message>Jump between test and implementation.

Signed-off-by: Jeffrey Chu &lt;jochu0@gmail.com&gt;</message>
  <tree>eff80efaba294d6873d96eee41653c3ffefbcfd3</tree>
  <committer>
    <name>Jeffrey Chu</name>
    <email>jochu0@gmail.com</email>
  </committer>
</commit>
