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? "))
30 (defun geiser-compile--display-result (title ret
)
31 (if (not (geiser-eval--retort-error ret
))
32 (message "%s done" title
)
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
))
40 (msg (format "%s %s ..." msg path
)))
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
)))))
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."
58 (geiser-compile-file (buffer-file-name (current-buffer))))
60 (defun geiser-load-file (path)
62 (interactive "FScheme file: ")
63 (geiser-compile--file-op path nil
"Loading"))
65 (defun geiser-load-current-buffer ()
66 "Load current Scheme file."
68 (geiser-load-file (buffer-file-name (current-buffer))))
72 (provide 'geiser-compile
)
73 ;;; geiser-compile.el ends here