diff options
Diffstat (limited to 'exercism/emacs-lisp/run-exercises.el')
-rw-r--r-- | exercism/emacs-lisp/run-exercises.el | 36 |
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) |