diff options
Diffstat (limited to 'elisp')
| -rw-r--r-- | elisp/geiser-autodoc.el | 4 | ||||
| -rw-r--r-- | elisp/geiser-base.el | 20 | ||||
| -rw-r--r-- | elisp/geiser-completion.el | 6 | ||||
| -rw-r--r-- | elisp/geiser-doc.el | 2 | ||||
| -rw-r--r-- | elisp/geiser-edit.el | 5 | ||||
| -rw-r--r-- | elisp/geiser-eval.el | 38 | ||||
| -rw-r--r-- | elisp/geiser-impl.el | 58 | ||||
| -rw-r--r-- | elisp/geiser-log.el | 2 | 
8 files changed, 63 insertions, 72 deletions
| diff --git a/elisp/geiser-autodoc.el b/elisp/geiser-autodoc.el index 1d876dd..a8a7a50 100644 --- a/elisp/geiser-autodoc.el +++ b/elisp/geiser-autodoc.el @@ -114,8 +114,8 @@ when `geiser-autodoc-display-module-p' is on."          (module (cdr (assoc 'module signature))))      (if (not args) (geiser-autodoc--proc-name proc module)        (let ((cpos 1) -            (pos (or (second desc) 0)) -            (prev (third desc)) +            (pos (or (cadr desc) 0)) +            (prev (caddr desc))              (reqs (cdr (assoc 'required args)))              (opts (cdr (assoc 'optional args)))              (keys (cdr (assoc 'key args)))) diff --git a/elisp/geiser-base.el b/elisp/geiser-base.el index 362930d..ba0067a 100644 --- a/elisp/geiser-base.el +++ b/elisp/geiser-base.el @@ -25,26 +25,10 @@  ;;; Code: - -;;; Versioning: - -(defconst geiser-version-major 0 -  "Geiser's major version number.") -(defconst geiser-version-minor 1 -  "Geiser's minor version number.") - -(defun geiser-version-string () -  "Geiser's version as a string." -  (format "%s.%s" geiser-version-major geiser-version-minor)) - -(defun geiser-version () -  "Echoes Geiser's version." -  (interactive) -  (message "Geiser %s" (geiser-version-string))) - -  ;;; Emacs compatibility: +(eval-when-compile (require 'cl)) +  (eval-after-load "ring"    '(when (not (fboundp 'ring-member))       (defun ring-member (ring item) diff --git a/elisp/geiser-completion.el b/elisp/geiser-completion.el index 28aef12..cd03cae 100644 --- a/elisp/geiser-completion.el +++ b/elisp/geiser-completion.el @@ -29,7 +29,7 @@  (require 'geiser-syntax)  (require 'geiser-base) -(eval-when-compile (require 'cl)) +(require 'cl)  ;;; Completions window handling, heavily inspired in slime's: @@ -84,7 +84,7 @@ terminates a current completion."    (remove-hook 'pre-command-hook                 'geiser-completion--maybe-restore-window-cfg)    (condition-case err -      (cond ((find last-command-char "()\"'`,# \r\n:") +      (cond ((find last-command-event "()\"'`,# \r\n:")               (geiser-completion--restore-window-cfg))              ((not (geiser-completion--window-active-p))               (geiser-completion--forget-window-cfg)) @@ -146,7 +146,7 @@ terminates a current completion."  ;;; Completion functionality: -(defsubst geiser-completion--symbol-list (prefix) +(defun geiser-completion--symbol-list (prefix)    (delete-duplicates     (append (mapcar (lambda (s) (format "%s" s)) (geiser-syntax--locals-around-point))             (geiser-eval--send/result `(:eval ((:ge completions) ,prefix)))) diff --git a/elisp/geiser-doc.el b/elisp/geiser-doc.el index 61c50f5..8e5c816 100644 --- a/elisp/geiser-doc.el +++ b/elisp/geiser-doc.el @@ -180,7 +180,7 @@                                                             (cdr (assoc 'signature ds))))              (newline)              (insert (or (cdr (assoc 'docstring ds)) "")) -            (goto-line (point-min)) +            (goto-char (point-min))              (setq geiser-doc--buffer-link                    (geiser-doc--history-push                     (geiser-doc--make-link symbol module impl)))) diff --git a/elisp/geiser-edit.el b/elisp/geiser-edit.el index 723e898..ad2c11e 100644 --- a/elisp/geiser-edit.el +++ b/elisp/geiser-edit.el @@ -106,8 +106,9 @@ or following links in error buffers.")    (format "\\_<%s\\_>" (regexp-quote (format "%s" thing))))  (defun geiser-edit--goto-line (symbol line) +  (goto-char (point-min))    (if (numberp line) -      (goto-line line) +      (forward-line (max 0 (1- line)))      (goto-char (point-min))      (when (or (re-search-forward (geiser-edit--def-re symbol) nil t)                (re-search-forward (geiser-edit--def-re* symbol) nil t) @@ -152,6 +153,8 @@ or following links in error buffers.")  ;;; Commands: +(defvar geiser-edit--symbol-history nil) +  (defun geiser-edit-symbol ()    "Asks for a symbol to edit, with completion."    (interactive) diff --git a/elisp/geiser-eval.el b/elisp/geiser-eval.el index 3e0d0d9..1c8cbfe 100644 --- a/elisp/geiser-eval.el +++ b/elisp/geiser-eval.el @@ -54,25 +54,6 @@ EVAL, COMPILE, LOAD-FILE and COMPILE-FILE should be supported."))  ;;; Code formatting: -(defun geiser-eval--scheme-str (code) -  (cond ((null code) "'()") -        ((eq code :f) "#f") -        ((eq code :t) "#t") -        ((listp code) -         (cond ((eq (car code) :eval) (geiser-eval--eval (cdr code))) -               ((eq (car code) :comp) (geiser-eval--comp (cdr code))) -               ((eq (car code) :load-file) -                (geiser-eval--load-file (cadr code))) -               ((eq (car code) :comp-file) -                (geiser-eval--comp-file (cadr code))) -               ((eq (car code) :module) (geiser-eval--module (cadr code))) -               ((eq (car code) :ge) (geiser-eval--ge (cadr code))) -               ((eq (car code) :scm) (cadr code)) -               (t (concat "(" -                          (mapconcat 'geiser-eval--scheme-str code " ") ")")))) -        ((symbolp code) (format "%s" code)) -        (t (format "%S" code)))) -  (defsubst geiser-eval--eval (code)    (geiser-eval--scheme-str     `(,(geiser-eval--form 'eval) (quote ,(nth 0 code)) @@ -99,6 +80,25 @@ EVAL, COMPILE, LOAD-FILE and COMPILE-FILE should be supported."))  (defsubst geiser-eval--ge (proc)    (geiser-eval--scheme-str (geiser-eval--form proc))) +(defun geiser-eval--scheme-str (code) +  (cond ((null code) "'()") +        ((eq code :f) "#f") +        ((eq code :t) "#t") +        ((listp code) +         (cond ((eq (car code) :eval) (geiser-eval--eval (cdr code))) +               ((eq (car code) :comp) (geiser-eval--comp (cdr code))) +               ((eq (car code) :load-file) +                (geiser-eval--load-file (cadr code))) +               ((eq (car code) :comp-file) +                (geiser-eval--comp-file (cadr code))) +               ((eq (car code) :module) (geiser-eval--module (cadr code))) +               ((eq (car code) :ge) (geiser-eval--ge (cadr code))) +               ((eq (car code) :scm) (cadr code)) +               (t (concat "(" +                          (mapconcat 'geiser-eval--scheme-str code " ") ")")))) +        ((symbolp code) (format "%s" code)) +        (t (format "%S" code)))) +  ;;; Code sending: diff --git a/elisp/geiser-impl.el b/elisp/geiser-impl.el index 32acade..840d0c1 100644 --- a/elisp/geiser-impl.el +++ b/elisp/geiser-impl.el @@ -59,10 +59,39 @@ determine its scheme flavour."    :group 'geiser-impl) +;;; Auxiliary functions: +(defsubst geiser-impl--sym (imp name) +  (intern (format "geiser-%s-%s" imp name))) + +(defsubst geiser-impl--boundp (imp name) +  (boundp (geiser-impl--sym imp name))) + +(defsubst geiser-impl--fboundp (imp name) +  (fboundp (geiser-impl--sym imp name))) + +(defsubst geiser-impl--impl-feature (impl) +  (intern (format "geiser-%s" impl))) + +(defun geiser-impl--value (imp name &optional fun) +  (let ((sym (geiser-impl--sym imp name))) +    (unless (or (and (not fun) (boundp sym)) +                (and fun (fboundp sym))) +      (error "Unbound %s '%s' in Geiser Scheme implementation %s" +             (if fun "function" "variable") sym imp)) +    (if fun (symbol-function sym) (symbol-value sym)))) + +(defsubst geiser-impl--call-if-bound (imp name &rest args) +  (when (geiser-impl--fboundp imp name) +    (apply (geiser-impl--value imp name t) args))) + +  ;;; Registering implementations:  (defvar geiser-impl--impls nil) +(make-variable-buffer-local + (defvar geiser-impl--implementation nil)) +  (defun geiser-impl--register (impl)    (when (and (not (memq impl geiser-impl--impls))               (require (geiser-impl--impl-feature impl) nil t)) @@ -91,9 +120,6 @@ determine its scheme flavour."  ;;; Installing Scheme implementations: -(make-variable-buffer-local - (defvar geiser-impl--implementation nil)) -  (defvar geiser-impl--impl-prompt-history nil)  (defun geiser-impl--read-impl (&optional prompt impls non-req) @@ -114,30 +140,6 @@ determine its scheme flavour."      (geiser-impl--install-vars impl)      (geiser-impl--register impl))) -(defsubst geiser-impl--sym (imp name) -  (intern (format "geiser-%s-%s" imp name))) - -(defsubst geiser-impl--boundp (imp name) -  (boundp (geiser-impl--sym imp name))) - -(defsubst geiser-impl--fboundp (imp name) -  (fboundp (geiser-impl--sym imp name))) - -(defsubst geiser-impl--impl-feature (impl) -  (intern (format "geiser-%s" impl))) - -(defun geiser-impl--value (imp name &optional fun) -  (let ((sym (geiser-impl--sym imp name))) -    (unless (or (and (not fun) (boundp sym)) -                (and fun (fboundp sym))) -      (error "Unbound %s '%s' in Geiser Scheme implementation %s" -             (if fun "function" "variable") sym imp)) -    (if fun (symbol-function sym) (symbol-value sym)))) - -(defsubst geiser-impl--call-if-bound (imp name &rest args) -  (when (geiser-impl--fboundp imp name) -    (apply (geiser-impl--value imp name t) args))) -  (defsubst geiser-impl--module-function (impl)    (geiser-impl--sym impl "get-module")) @@ -259,7 +261,7 @@ implementation to be used by Geiser."))    (let* ((current geiser-impl-installed-implementations)           (impl (geiser-impl--read-impl "Forget implementation: " current)))      (geiser-impl--unregister impl) -    (when (and (impl current) +    (when (and impl                 (y-or-n-p "Forget permanently using customize? "))        (customize-save-variable         'geiser-impl-installed-implementations (remove impl current))))) diff --git a/elisp/geiser-log.el b/elisp/geiser-log.el index 68e0fae..27a485a 100644 --- a/elisp/geiser-log.el +++ b/elisp/geiser-log.el @@ -28,6 +28,8 @@  (require 'geiser-popup)  (require 'geiser-base) +(require 'comint) +  ;;; Customization: | 
