[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-guile af8296f 051/284: generic-methods implemented
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-guile af8296f 051/284: generic-methods implemented in scheme (no emacs side yet). |
Date: |
Sun, 1 Aug 2021 18:29:14 -0400 (EDT) |
branch: elpa/geiser-guile
commit af8296f04700d0b0c2ba16cc4fd91ecae0256477
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>
generic-methods implemented in scheme (no emacs side yet).
---
geiser/doc.scm | 7 ++++++-
geiser/xref.scm | 30 +++++++++++++++++++++++++++++-
2 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/geiser/doc.scm b/geiser/doc.scm
index 01b9ce3..f655fd6 100644
--- a/geiser/doc.scm
+++ b/geiser/doc.scm
@@ -26,7 +26,8 @@
(define-module (geiser doc)
#:export (autodoc
- symbol-documentation)
+ symbol-documentation
+ object-signature)
#:use-module (geiser utils)
#:use-module (geiser modules)
#:use-module (system vm program)
@@ -51,6 +52,10 @@
(else (describe-application form)))))
(else #f)))
+(define (object-signature name obj)
+ (let ((args (obj-args obj)))
+ (and args (signature name args))))
+
(define (describe-application form)
(let* ((fun (car form))
(args (obj-args (symbol->object fun))))
diff --git a/geiser/xref.scm b/geiser/xref.scm
index 2cd4d80..232d692 100644
--- a/geiser/xref.scm
+++ b/geiser/xref.scm
@@ -28,10 +28,38 @@
#:export (symbol-location
generic-methods)
#:use-module (geiser utils)
- #:use-module (geiser modules))
+ #:use-module (geiser modules)
+ #:use-module (geiser doc)
+ #:use-module (oop goops)
+ #:use-module (system vm program))
(define (symbol-location sym)
(cond ((symbol-module sym) => module-location)
(else '())))
+(define (generic-methods sym)
+ (let* ((gen (symbol->object sym))
+ (methods (if (is-a? gen <generic>) (generic-function-methods gen)
'())))
+ (filter (lambda (x) (not (null? x)))
+ (map (lambda (m) (describe-method sym m)) methods))))
+
+(define (describe-method name m)
+ (let ((proc (method-procedure m)))
+ (if proc
+ `((location . ,(program-location proc))
+ (signature . ,(object-signature name proc)))
+ '())))
+
+(define (program-location p)
+ (cond ((program-source p 0) =>
+ (lambda (s) (make-location (program-path p) (source:line s))))
+ ((program-path p) =>
+ (lambda (s) (make-location (program-path p) #f)))
+ (else '())))
+
+(define (program-path p)
+ (let* ((mod (program-module p))
+ (name (and mod (module-name mod))))
+ (and name (module-filename name))))
+
;;; xref.scm ends here
- [nongnu] elpa/geiser-guile 8377f5e 028/284: Refactoring of the eval/compile procedures., (continued)
- [nongnu] elpa/geiser-guile 8377f5e 028/284: Refactoring of the eval/compile procedures., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 2ac3f91 027/284: Play nice with (ice-9 history) by using WRITE to return values to Emacs., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 49842df 031/284: Correct stack in load/compile file retorts., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 4608da2 032/284: Partial support for stack trace display., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 943e58b 039/284: Miscellaneous little fixes., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 717f3d0 040/284: Fix for autodoc when point in a rest formal arg in define., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile ea9e341 041/284: Bug fix., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile acde425 043/284: Macro-expand commands., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 7fcb4ea 047/284: Autodoc enhancements:, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile eeda11c 050/284: Leave quasiquote alone in autodoc., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile af8296f 051/284: generic-methods implemented in scheme (no emacs side yet).,
Philip Kaludercic <=
- [nongnu] elpa/geiser-guile ea52102 055/284: A bit more robust generic methods., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile c3d36f3 056/284: Don't display autodoc for function being defined., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile d5ff699 057/284: Refactoring., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile f36778f 059/284: Some tidy up., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile c52771f 062/284: Support for multiple Scheme implementations, Chapter 2., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile e912bbf 063/284: Multiple values as evaluation result supported., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 38da2b3 064/284: Misc nits and work in progress., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile ce78e11 069/284: Better xref display., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 4eeb068 071/284: Module completion generalized and implemented for PLT., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-guile 63ebbc1 070/284: Using the new (system xref) interface., Philip Kaludercic, 2021/08/01