.ts und .spec.ts in Emacs als side-by-side
November 2021
Wenn ich Unit Tests entwickle sehe ich gerne den zu testenden Code und den Code mit den Unit Tests nebeneinander. In Emacs öffne ich dazu beide Dateien und springe dann in eine Side-by-side Ansicht.
In Emacs Lisp lässt sich dies auch schön automatisieren:
(defun ma300k-main-test-side-by-side ()
(interactive)
(if buffer-file-name
(let ((dir (file-name-directory buffer-file-name))
(base-name (ma300k-detect-typescript-base-name buffer-file-name)))
(delete-other-windows)
(find-file (concat dir base-name ".ts"))
(split-window-right)
(other-window 1)
(find-file (concat dir base-name ".spec.ts")))
(message "File must be a visited file.")
))
(defun ma300k-detect-typescript-base-name (file-name)
(let ((dir (file-name-directory file-name))
(fn (file-name-nondirectory file-name))
base-name)
(if (string-suffix-p ".spec.ts" fn)
(substring fn 0 (* -1 (length ".spec.ts")))
(if (string-suffix-p ".ts" fn)
(substring fn 0 (* -1 (length ".ts")))))))
Den Aufruf von ma300k-main-test-side-by-side kann man sich auch noch auf ein Tastenkürzel legen.
(add-hook
'typescript-mode-hook
(lambda ()
(define-key typescript-mode-map (kbd "M-n t 3") 'ma300k-main-test-side-by-side)))