Add function to switch back and forth between clojure src and test files
This commit is contained in:
parent
72734a9403
commit
12eeddb90a
|
@ -44,7 +44,9 @@
|
||||||
nrepl-log-messages t
|
nrepl-log-messages t
|
||||||
clojure-toplevel-inside-comment-form t)
|
clojure-toplevel-inside-comment-form t)
|
||||||
(unbind-key "C-c C-l" cider-mode-map)
|
(unbind-key "C-c C-l" cider-mode-map)
|
||||||
:bind (:map cider-mode-map ("C-c M-l" . cider-load-file))
|
:bind
|
||||||
|
(:map cider-mode-map ("C-c M-l" . cider-load-file))
|
||||||
|
(:map clojure-mode-map ("C-x p q" . project-clojure-test-switch))
|
||||||
:hook
|
:hook
|
||||||
(cider-repl-mode . (lambda ()
|
(cider-repl-mode . (lambda ()
|
||||||
(display-line-numbers-mode -1)
|
(display-line-numbers-mode -1)
|
||||||
|
|
|
@ -2,9 +2,29 @@
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
|
(require 'subr-x)
|
||||||
|
|
||||||
(use-package project
|
(use-package project
|
||||||
:ensure nil
|
:ensure nil
|
||||||
:config
|
:config
|
||||||
|
(defun project--clojure-switch-to-test (filename project-root)
|
||||||
|
(let* ((project-src-file (string-remove-prefix project-root filename))
|
||||||
|
(project-test-file (replace-regexp-in-string "\.clj$" "_test.clj"
|
||||||
|
(replace-regexp-in-string "^src/" "test/" project-src-file))))
|
||||||
|
(find-file (expand-file-name project-test-file project-root))))
|
||||||
|
(defun project--clojure-switch-to-src (test-filename project-root)
|
||||||
|
(let* ((project-test-file (string-remove-prefix project-root test-filename))
|
||||||
|
(project-src-file (replace-regexp-in-string "_test\.clj$" ".clj"
|
||||||
|
(replace-regexp-in-string "^test/" "src/" project-test-file))))
|
||||||
|
(find-file (expand-file-name project-src-file project-root))))
|
||||||
|
(defun project-clojure-test-switch ()
|
||||||
|
(interactive)
|
||||||
|
(let ((filename (buffer-file-name))
|
||||||
|
(project-root (consult--project-root))) ;; TODO don't depend on consult
|
||||||
|
(cond ((string-match (concat "^" project-root "test/.*_test\.clj") filename)
|
||||||
|
(project--clojure-switch-to-src filename project-root))
|
||||||
|
((string-match (concat "^" project-root "src/.*\.clj") filename)
|
||||||
|
(project--clojure-switch-to-test filename project-root)))))
|
||||||
(defun project-recentf ()
|
(defun project-recentf ()
|
||||||
"Show a list of recently visited files in a project."
|
"Show a list of recently visited files in a project."
|
||||||
(interactive)
|
(interactive)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user