Skip to content

Instantly share code, notes, and snippets.

@kapilreddy
Created June 4, 2012 15:10
Show Gist options
  • Save kapilreddy/2868961 to your computer and use it in GitHub Desktop.
Save kapilreddy/2868961 to your computer and use it in GitHub Desktop.
Midje emacs functions
(remove-hook 'clojure-mode-hook 'clojure-test-maybe-enable)
(defun clojure-in-tests-p ()
(or (string-match-p "test\." (clojure-find-ns))
(string-match-p "/test" (buffer-file-name))))
(defun midje-test-for (namespace)
(let* ((namespace (clojure-underscores-for-hyphens namespace))
(segments (split-string namespace "\\."))
(test-segments (append (list "test") segments)))
(mapconcat 'identity test-segments "/")))
(defun midje-jump-to-test ()
"Jump from implementation file to test."
(interactive)
(find-file (format "%s/%s_test.clj"
(file-name-as-directory
(locate-dominating-file buffer-file-name "src/"))
(midje-test-for (clojure-find-ns)))))
(defun midje-implementation-for (namespace)
(let* ((namespace (clojure-underscores-for-hyphens namespace))
(segments (split-string (replace-regexp-in-string "_test" "" namespace) "\\.")))
(mapconcat 'identity segments "/")))
(defun midje-jump-to-implementation ()
"Jump from midje test file to implementation."
(interactive)
(find-file (format "%s/src/%s.clj"
(locate-dominating-file buffer-file-name "src/")
(midje-implementation-for (clojure-find-package)))))
(defun midje-jump-between-tests-and-code ()
(interactive)
(if (clojure-in-tests-p)
(midje-jump-to-implementation)
(midje-jump-to-test)))
(define-key clojure-mode-map (kbd "C-c t") 'midje-jump-between-tests-and-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment