summaryrefslogtreecommitdiff
path: root/exercism/emacs-lisp/run-exercises.el
diff options
context:
space:
mode:
Diffstat (limited to 'exercism/emacs-lisp/run-exercises.el')
-rw-r--r--exercism/emacs-lisp/run-exercises.el36
1 files changed, 36 insertions, 0 deletions
diff --git a/exercism/emacs-lisp/run-exercises.el b/exercism/emacs-lisp/run-exercises.el
new file mode 100644
index 0000000..38b097b
--- /dev/null
+++ b/exercism/emacs-lisp/run-exercises.el
@@ -0,0 +1,36 @@
+(defmacro in-test-window (&rest body)
+ `(save-selected-window
+ (switch-to-buffer-other-window "*kj/test*")
+ ,@body))
+
+(macroexpand '(in-test-window (insert "hello") (insert "world")))
+
+(defun setup-test-window ()
+ (in-test-window
+ (erase-buffer)))
+
+(defun kj-writeln (msg)
+ (in-test-window
+ (insert (concat msg "\n"))))
+
+(setup-test-window)
+
+(kj-writeln
+ (in-test-window
+ (insert (propertize "* Emacs tests" 'face 'org-level-1))))
+
+(defmacro kj-display (title &rest code)
+ `(progn
+ (kj-writeln (propertize (concat "** " ,title) 'face 'org-level-2))
+ (kj-writeln (propertize "Code:" 'face 'italic))
+ (kj-writeln (format "%s" ',@code))
+ (kj-writeln (propertize "Output:" 'face 'italic))
+ (kj-writeln (format "%s" ,@code))))
+
+(load-file "hello-world/hello-world.el")
+(kj-display "Hello" (hello))
+
+(load-file "two-fer/two-fer.el")
+(kj-display "Two-fer" (two-fer "Annie"))
+
+(provide 'hello)