From ead347128aab822ed90593627db8f7012b980a05 Mon Sep 17 00:00:00 2001 From: Timothy Sample Date: Thu, 28 Apr 2022 09:58:59 -0600 Subject: [PATCH] compat: Support Mes. * gash/compat.scm (if-guile-version-below) [mes]: Do nothing. (when-mes): New syntax. * .dir-locals.el: Tell Emacs how to indent it. --- .dir-locals.el | 1 + gash/compat.scm | 59 ++++++++++++++++++++++++++++--------------------- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/.dir-locals.el b/.dir-locals.el index b400e62..b5b3921 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -7,6 +7,7 @@ ".dir-locals.el"))) (add-to-list 'geiser-guile-load-path top)))) (eval . (put 'if-guile-version-below 'scheme-indent-function 1)) + (eval . (put 'when-mes 'scheme-indent-function 0)) (eval . (put ' 'scheme-indent-function 1)) (eval . (put ' 'scheme-indent-function 1)) (eval . (put ' 'scheme-indent-function 1)) diff --git a/gash/compat.scm b/gash/compat.scm index e98c7df..47a7abd 100644 --- a/gash/compat.scm +++ b/gash/compat.scm @@ -1,5 +1,5 @@ ;;; Gash -- Guile As SHell -;;; Copyright © 2019 Timothy Sample +;;; Copyright © 2019, 2022 Timothy Sample ;;; ;;; This file is part of Gash. ;;; @@ -18,7 +18,8 @@ (define-module (gash compat) #:use-module (ice-9 match) - #:export (if-guile-version-below)) + #:export (if-guile-version-below + when-mes)) ;;; Commentary: ;;; @@ -27,30 +28,38 @@ ;;; ;;; Code: -(define-syntax if-guile-version-below - (lambda (x) - (define (guile-versionnumber (major-version))) - (g-minor (string->number (minor-version))) - (g-micro (string->number (micro-version)))) - (or (< g-major major) - (and (= g-major major) - (< g-minor minor)) - (and (= g-major major) - (= g-minor minor) - (< g-micro micro))))) +(cond-expand + (guile + (define-syntax if-guile-version-below + (lambda (x) + (define (guile-versionnumber (major-version))) + (g-minor (string->number (minor-version))) + (g-micro (string->number (micro-version)))) + (or (< g-major major) + (and (= g-major major) + (< g-minor minor)) + (and (= g-major major) + (= g-minor minor) + (< g-micro micro))))) - (syntax-case x () - ((_ (maj min mic) consequent alternate) - (if (guile-versiondatum #'maj) - (syntax->datum #'min) - (syntax->datum #'mic)) - #'consequent - #'alternate)) - ((_ (maj min mic) consequent) - #'(if-guile-version-below (maj min mic) - consequent - (if #f #t)))))) + (syntax-case x () + ((_ (maj min mic) consequent alternate) + (if (guile-versiondatum #'maj) + (syntax->datum #'min) + (syntax->datum #'mic)) + #'consequent + #'alternate)) + ((_ (maj min mic) consequent) + #'(if-guile-version-below (maj min mic) + consequent + (if #f #t)))))) + (define-syntax-rule (when-mes . forms) (if #f #t))) + (mes + (define-macro (if-guile-version-below . forms) + '(begin)) + (define-macro (when-mes . forms) + `(begin ,@forms)))) (if-guile-version-below (2 0 10) (begin