[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-chicken 01e37d4 017/102: Add compiled .so caching t
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-chicken 01e37d4 017/102: Add compiled .so caching to Chicken support |
Date: |
Sun, 1 Aug 2021 18:26:47 -0400 (EDT) |
branch: elpa/geiser-chicken
commit 01e37d476539dca59804df75bf805ddf044235dc
Author: Dan Leslie <dan@ironoxide.ca>
Commit: Dan Leslie <dan@ironoxide.ca>
Add compiled .so caching to Chicken support
- Now give compile-file a reasonable destination for the output
- Check for aforementioned output and skip the compile if exists
- None of the above happens if the system-type is 'windows-nt,
which may not be a necessary restriction. And, the existing
geiser-chicken-compile-geiser-p var applies.
Resolves jaor/geiser#73 for non-windows system
---
elisp/geiser-chicken.el | 38 +++++++++++++++++++++++---------------
1 file changed, 23 insertions(+), 15 deletions(-)
diff --git a/elisp/geiser-chicken.el b/elisp/geiser-chicken.el
index 070d916..5bf45f2 100644
--- a/elisp/geiser-chicken.el
+++ b/elisp/geiser-chicken.el
@@ -263,23 +263,31 @@ This function uses `geiser-chicken-init-file' if it
exists."
(interactive)
(geiser-connect 'chicken))
+(defun geiser-chicken--compile-or-load (force-load)
+ (let ((target
+ (expand-file-name "chicken/geiser/emacs.so" geiser-scheme-dir))
+ (source
+ (expand-file-name "chicken/geiser/emacs.scm" geiser-scheme-dir))
+ (force-load (or force-load (eq system-type 'windows-nt)))
+ (suppression-prefix
+ "(define geiser-stdout (current-output-port))(current-output-port
(make-output-port (lambda a #f) (lambda a #f)))")
+ (suppression-postfix
+ "(current-output-port geiser-stdout)"))
+ (let ((load-sequence
+ (cond
+ (force-load
+ (format "(load \"%s\")\n" source))
+ ((file-exists-p target)
+ (format "%s(load \"%s\")(import geiser)%s\n"
+ suppression-prefix target suppression-postfix))
+ (t
+ (format "%s(use utils)(compile-file \"%s\" options: '(\"-O3\")
output-file: \"%s\" load: #t)(import geiser)%s\n"
+ suppression-prefix source target suppression-postfix)))))
+ (geiser-eval--send/wait load-sequence))))
+
(defun geiser-chicken--startup (remote)
(compilation-setup t)
- (let ((geiser-log-verbose-p t)
- (geiser-chicken-load-file (expand-file-name "chicken/geiser/emacs.scm"
geiser-scheme-dir)))
- (if geiser-chicken-compile-geiser-p
- (geiser-eval--send/wait (format "
-;; Sadly, (use import compile-file) must be run at top-level, so we have a
stdout binding
-(define geiser-stdout (current-output-port))
-(current-output-port (make-output-port (lambda a #f) (lambda a #f)))
-(use utils)
-(compile-file \"%s\")
-(import geiser)
-(current-output-port geiser-stdout)
-"
- geiser-chicken-load-file))
- (geiser-eval--send/wait (format "(load \"%s\")"
- geiser-chicken-load-file)))))
+ (geiser-chicken--compile-or-load (not geiser-chicken-compile-geiser-p)))
;;; Implementation definition:
- [nongnu] branch elpa/geiser-chicken created (now ceab39c), Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken ffae4f8 006/102: Various improvements, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken f43bfec 007/102: Various improvements, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken eb21b79 012/102: Fixes an issue where symbol->string was failing, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken 74b88cc 010/102: Adds necessary parameter to csi for Windows., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken caa8174 011/102: Use pretty-print instead of write with Chicken, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken 01e37d4 017/102: Add compiled .so caching to Chicken support,
Philip Kaludercic <=
- [nongnu] elpa/geiser-chicken faf900f 008/102: geiser-chicken.el: add indentation rule for `with-output-to-pipe', Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken a09e2c2 005/102: Compile instead of Load, should speed up., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken f143cc9 004/102: Documentation updates and nits for Freija, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken c4aed35 003/102: Documentation updates and nits for Freija, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken 23aafbb 002/102: Initial Chicken support, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken 845ee42 019/102: Added missing macros, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken d83d2df 009/102: Now suppress loading messages, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken 6782f4a 016/102: Kill those TABs, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken d6df78f 014/102: Merge remote-tracking branch 'dleslie/faster-output-handling', Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chicken 53128cb 020/102: Sorted and line-split crunch symbols., Philip Kaludercic, 2021/08/01