[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-gambit c44a145 13/34: better indent , gsi opening p
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-gambit c44a145 13/34: better indent , gsi opening param using module if > version 4.9.3 |
Date: |
Sun, 1 Aug 2021 18:27:17 -0400 (EDT) |
branch: elpa/geiser-gambit
commit c44a145fab966851ddd2a6d864dddc07b78f0d92
Author: mathieu2em <math.per@hotmail.com>
Commit: mathieu2em <math.per@hotmail.com>
better indent , gsi opening param using module if > version 4.9.3
---
elisp/geiser-gambit.el | 32 +++++++++++++++-----------
scheme/gambit/geiser/gambit.scm | 51 ++++++++++++-----------------------------
2 files changed, 33 insertions(+), 50 deletions(-)
diff --git a/elisp/geiser-gambit.el b/elisp/geiser-gambit.el
index b7ac830..cd68e46 100644
--- a/elisp/geiser-gambit.el
+++ b/elisp/geiser-gambit.el
@@ -32,7 +32,7 @@
(eval-when-compile (require 'cl))
(defconst geiser-gambit--builtin-keywords
- '("##debug-repl" "##import"))
+ '("##debug-repl" "##import" "define-macro" "##symbol-table" "##decompile"))
;;; Customization
@@ -97,10 +97,6 @@ this variable to t."
(car geiser-gambit-binary)
geiser-gambit-binary))
-(defun geiser-gambit--parameters ()
- "Return a list with all parameters needed to start Gambit Scheme."
- `( ,(expand-file-name "gambit/geiser/gambit.scm" geiser-scheme-dir) "-" ))
-
(defconst geiser-gambit--prompt-regexp "> ")
(defconst geiser-gambit--debugger-prompt-regexp "[0-9]+> ")
@@ -122,7 +118,8 @@ If `t', Geiser will use `next-error' to jump to the error's
location."
:type 'boolean
:group 'geiser-gambit)
-;;; Evaluation support:
+;;; evaluation support when module loaded at opening
+;;; the gambit/geiser# is the namespace of geiser module for gambit
(defun geiser-gambit--geiser-procedure (proc &rest args)
(case proc
((eval compile)
@@ -134,15 +131,15 @@ If `t', Geiser will use `next-error' to jump to the
error's location."
(concat "'" (car args)))
(t
"#f")))
- (cmd (format "(geiser:eval %s '%s)" module form)))
+ (cmd (format "(gambit/geiser#geiser:eval %s '%s)" module form)))
cmd))
((load-file compile-file)
- (format "(geiser:load-file %s)" (car args)))
+ (format "(gambit/geiser#geiser:load-file %s)" (car args)))
((no-values)
- "(geiser:no-values)")
+ "(gambit/geiser#geiser:no-values)")
(t
(let ((form (mapconcat 'identity args " ")))
- (format "(geiser:%s %s)" proc form)))))
+ (format "(gambit/geiser#geiser:%s %s)" proc form)))))
;;(defconst geiser-gambit--module-re
;; "( *module +\\(([^)]+)\\|[^ ]+\\)\\|( *define-library +\\(([^)]+)\\|[^
]+\\)")
@@ -184,9 +181,6 @@ If `t', Geiser will use `next-error' to jump to the error's
location."
(defun geiser-gambit--symbol-begin (module)
(save-excursion (skip-syntax-backward "^-()> ") (point)))
-(defun geiser-gambit--version (binary)
- (car (process-lines binary "-c" "(display (version))")))
-
(defun connect-to-gambit ()
"Start a gambit REPL connected to a remote process."
(interactive)
@@ -285,7 +279,6 @@ If `t', Geiser will use `next-error' to jump to the error's
location."
(define-record 1)
(define-specialization 1)
(define-type 1)
- (with-input-from-pipe 1)
(select 1)
(functor 3)
(define-interface 1)
@@ -299,6 +292,17 @@ If `t', Geiser will use `next-error' to jump to the
error's location."
(shell-command-to-string (format "%s -e \"(display
(##system-version-string))\""
binary)))
+(defun geiser-gambit--parameters ()
+ "Return a list with all parameters needed to start Gambit Scheme."
+ ;; if your version of gambit support modules we directly load geiser module
+ ;; else we go load the file in geiser
+ (let* ((v (geiser-gambit--version (geiser-gambit--binary)))
+ (gambit-version (substring v 1 (string-width v))))
+ (if (version< gambit-version "4.9.3")
+ `( ,(expand-file-name "gambit/geiser/gambit" geiser-scheme-dir) "-" )
+ `( "gambit/geiser" "-"))))
+
+
(defun connect-to-gambit ()
"Start a Gambit REPL connected to a remote process."
(interactive)
diff --git a/scheme/gambit/geiser/gambit.scm b/scheme/gambit/geiser/gambit.scm
index e3e7dae..8efab7b 100644
--- a/scheme/gambit/geiser/gambit.scm
+++ b/scheme/gambit/geiser/gambit.scm
@@ -1,5 +1,9 @@
;; scheme
;;; gambit.scm gambit geiser interaction
+(##namespace ("gambit/geiser#")) ;; in gambit/geiser#
+(##include "~~lib/_prim#.scm") ;; map fx+ to ##fx+, etc
+(##include "~~lib/_gambit#.scm") ;; for macro-check-string,
+;; macro-absent-obj, etc
(define-macro (geiser:capture-output x . xs)
(let ((out (gensym))
@@ -28,8 +32,8 @@
;; search for a procedure in gambit-procedures
;; returns the procedure symbol if it finds it
-(define (##procedure-search elem)
- (or (assq elem ##gambit-procedures) '()))
+(define (procedure-search elem)
+ (or (assq elem gambit-procedures) '()))
(define (geiser:autodoc ids . rest)
(cond ((null? ids) '())
@@ -43,47 +47,29 @@
;; (cadr (##decompile method)) format is
;;(#!optional (param1 (macro-absent-obj)) (param2 (macro-absent-obj)) #!rest
others)
-;; !! method-name -> procedure
-
-;;
+;;the autodoc verify if (##decompile method) gives a acceptable result and
else use the scraped list gambit-procedures
(define (geiser:new-autodoc method-name)
(define (get-required lst)
(let loop ((lst lst)
(result '()))
(cond ((not (pair? lst))
- ;;(pp (cons (reverse result) '()))
- ;;(pp "-----NEXT1-- not pair--")
(cons (reverse result) '()))
((eq? (car lst) #!optional)
- ;;(pp (cons (reverse result) (cdr lst)))
- ;;(pp "-----NEXT1---opt--")
(cons (reverse result) (cdr lst)))
((eq? (car lst) #!key)
- ;;(pp (cons (reverse result) lst))
- ;;(pp "-----NEXT1--key---")
(cons (reverse result) lst))
(else (loop (cdr lst) (cons (car lst) result))))))
(define (get-optional lst)
- ;;(pp "getopt")
- ;;(pp lst)
- ;;(pp "----")
(let loop ((lst lst)
(result '()))
(cond ((or (not (pair? lst))
(eq? (car lst) #!key))
- ;;(pp (cons (reverse result)
- ;; (if (pair? lst)
- ;; (cdr lst)
- ;; '())))
- ;;(pp "------next2----key or emptylist--")
(cons (reverse result)
(if (pair? lst)
(cdr lst)
'())))
((eq? (car lst) #!rest)
- ;;(pp (cons (reverse (cons '... result)) '()))
- ;;(pp "-------next2---- rest--")
(cons (reverse (cons '... result)) '()))
(else
(loop (cdr lst) (cons (if (pair? (car lst)) (caar lst) (car lst))
result))))))
@@ -101,8 +87,6 @@
(let ((proc (##global-var-ref (##make-global-var method-name))))
(if (procedure? proc)
(let ((method-tester (##decompile proc)))
- ;;(pp (cadr method-tester))
- ;;(pp "---NEXT---")
(if (pair? method-tester)
(let* ((method (cadr method-tester))
(required (get-required method))
@@ -113,8 +97,8 @@
("optional" ,@(car optional))
("key" ,@key)))
("module"))))
- (list (##procedure-search method-name))))
- (list (##procedure-search method-name)))))
+ (list (procedure-search method-name))))
+ (list (procedure-search method-name)))))
(define (geiser:module-completions prefix . rest)
@@ -127,14 +111,14 @@
(let ((sym (vector-ref sym-tab i)))
(loop (+ i 1)
(if (symbol? sym)
- (let loop2 ((sym-list (if (and (##string-prefix?
prefix sym)
+ (let loop2 ((sym-list (if (and (string-prefix? prefix
sym)
(procedure?
(##global-var-ref (##make-global-var sym))))
(cons (symbol->string sym)
symbols-list)
symbols-list))
(vect sym))
(let ((sym2 (##vector-ref vect 2)))
(if (symbol? sym2)
- (if (and (##string-prefix? prefix sym2)
+ (if (and (string-prefix? prefix sym2)
(procedure? (##global-var-ref
(##make-global-var sym))))
(loop2 (cons (symbol->string sym2)
sym-list) sym2)
(loop2 sym-list sym2))
@@ -142,18 +126,13 @@
symbols-list)))
symbols-list))))
- (##sort-list (environment-symbols) string-ci<?))
-
- ;; (##sort-list (filter (lambda (el)
- ;; (##string-prefix? prefix el)) ;; eviter le map ->
symbol->string externe
- ;; (map symbol->string (environment-symbols)))
- ;; string-ci<?))
+ (sort-list (environment-symbols) string-ci<?))
(define (geiser:completions prefix . rest)
rest)
;; string-prefix function
-(define (##string-prefix? pref str)
+(define (string-prefix? pref str)
(let* ((str (if (string? str) str (symbol->string str)))
(str-len (string-length str))
(pref (if (string? pref) pref (symbol->string pref)))
@@ -168,7 +147,7 @@
(fold-right (lambda (e r) (if (f e) (cons e r) r)) '() lst))
;; sorting algorithms
-(define (##sort-list l <?)
+(define (sort-list l <?)
(define (mergesort l)
@@ -195,7 +174,7 @@
(mergesort l))
;; the majority of gambit and r5rs procedures correctly formatted
-(define ##gambit-procedures
+(define gambit-procedures
'((* ("args" (("required") ("optional" [z1 ...]) ("key")))("module"))
(+ ("args" (("required" z1 [...]) ("optional") ("key")))("module"))
(- ("args" (("required" z1 z2) ("optional") ("key")))("module"))
- [nongnu] elpa/geiser-gambit 7867f0a 31/34: installation instructions, (continued)
- [nongnu] elpa/geiser-gambit 7867f0a 31/34: installation instructions, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 3294c94 34/34: Use new implementation extension declarator, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 0ee4156 33/34: fix: auto-activate implementation, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 6bff2b9 08/34: gambit syntax coloration + adjustment of methods list, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 6f01c0d 06/34: parenthesis showing in autodoc fixed., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 95ef42e 03/34: WIP repl behaviour fix, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 9e6bbd7 01/34: WIP gambit support first draft, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 9be02bc 02/34: prompt regexp, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 56c53d1 17/34: Remove duplicated definition of geiser-connect, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 9cc9b98 09/34: fix #1 ##decompile now tried before using the procedure's list, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit c44a145 13/34: better indent , gsi opening param using module if > version 4.9.3,
Philip Kaludercic <=
- [nongnu] elpa/geiser-gambit a6101d0 14/34: fixes autocompletion problem caused by bad choice of modules inclusion, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 1f1c74c 21/34: Delete trailing whitespace, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 09734f0 20/34: Fix indentation, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 9afb60e 12/34: code cleanup, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit f2a5259 18/34: Begin the summary lines of all elisp libraries with three semicolons, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 8f6b060 28/34: Gambit has added the commit guid to the version number. The business logic that deals with gambit version numbers has been updated accordingly, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 4f424f4 25/34: imported files moved to new locations, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit c19162a 27/34: scheme load path adjustments, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 3a169a4 30/34: autoloads and compilation fix, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-gambit 28a1ba1 32/34: remote repl instructions, Philip Kaludercic, 2021/08/01