Created
June 4, 2012 15:10
-
-
Save kapilreddy/2868961 to your computer and use it in GitHub Desktop.
Midje emacs functions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(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