Documentation helpers
[geiser.git] / elisp / geiser-compile.el
blobbc9aace661e7fe723942bccb13eccafb2d1c7ee6
1 ;; geiser-compile.el -- compile/load scheme files
3 ;; Copyright (C) 2009, 2010 Jose Antonio Ortega Ruiz
5 ;; This program is free software; you can redistribute it and/or
6 ;; modify it under the terms of the Modified BSD License. You should
7 ;; have received a copy of the license along with this program. If
8 ;; not, see <http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5>.
10 ;; Start date: Wed Feb 11, 2009 00:16
14 (require 'geiser-debug)
15 (require 'geiser-autodoc)
16 (require 'geiser-eval)
17 (require 'geiser-base)
20 ;;; Auxiliary functions:
22 (defun geiser-compile--buffer/path (&optional path)
23 (let ((path (or path (read-file-name "Scheme file: " nil nil t))))
24 (let ((buffer (find-file-noselect path)))
25 (when (and (buffer-modified-p buffer)
26 (y-or-n-p "Save buffer? "))
27 (save-buffer buffer))
28 (cons buffer path))))
30 (defun geiser-compile--display-result (title ret)
31 (if (not (geiser-eval--retort-error ret))
32 (message "%s done" title)
33 (message ""))
34 (geiser-debug--display-retort title ret))
36 (defun geiser-compile--file-op (path compile-p msg)
37 (let* ((b/p (geiser-compile--buffer/path path))
38 (buffer (car b/p))
39 (path (cdr b/p))
40 (msg (format "%s %s ..." msg path)))
41 (message msg)
42 (geiser-autodoc--clean-cache)
43 (geiser-compile--display-result
44 msg (geiser-eval--send/wait
45 `(,(if compile-p :comp-file :load-file) ,path)))))
48 ;;; User commands:
50 (defun geiser-compile-file (path)
51 "Compile and load Scheme file."
52 (interactive "FScheme file: ")
53 (geiser-compile--file-op path t "Compiling"))
55 (defun geiser-compile-current-buffer ()
56 "Compile and load current Scheme file."
57 (interactive)
58 (geiser-compile-file (buffer-file-name (current-buffer))))
60 (defun geiser-load-file (path)
61 "Load Scheme file."
62 (interactive "FScheme file: ")
63 (geiser-compile--file-op path nil "Loading"))
65 (defun geiser-load-current-buffer ()
66 "Load current Scheme file."
67 (interactive)
68 (geiser-load-file (buffer-file-name (current-buffer))))
72 (provide 'geiser-compile)
73 ;;; geiser-compile.el ends here