branch: elpa/slime
commit f1724c51ecfa68b514380d100ac2bd99b93dabda
Author: Stas Boukarev <[email protected]>
Commit: Stas Boukarev <[email protected]>
re-evaluate-defvar: handle sb-ext:defglobal
---
slime.el | 4 +++-
swank.lisp | 15 +++++++++++----
2 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/slime.el b/slime.el
index 254f2c3505..8b5329fe17 100644
--- a/slime.el
+++ b/slime.el
@@ -4141,7 +4141,9 @@ inserted in the current buffer."
Use `slime-re-evaluate-defvar' if the from starts with '(defvar'"
(interactive)
(let ((form (slime-defun-at-point)))
- (cond ((string-prefix-p "(defvar " form t)
+ (cond ((or (string-prefix-p "(defvar " form t)
+ (string-prefix-p "(defglobal " form t)
+ (string-prefix-p "(sb-ext:defglobal " form t))
(slime-re-evaluate-defvar form))
(t
(slime-interactive-eval form)))))
diff --git a/swank.lisp b/swank.lisp
index 33f2b91bf5..188fdef6df 100644
--- a/swank.lisp
+++ b/swank.lisp
@@ -1809,10 +1809,17 @@ last form."
(with-retry-restart (:msg "Retry SLIME evaluation request.")
(let ((form (read-from-string form)))
(destructuring-bind (dv name &optional value doc) form
- (declare (ignore value doc))
- (assert (eq dv 'defvar))
- (makunbound name)
- (prin1-to-string (eval form)))))))
+ (declare (ignore doc))
+ (case dv
+ #+sbcl
+ (sb-ext:defglobal
+ (set name (eval value))
+ (prin1-to-string name))
+ (defvar
+ (makunbound name)
+ (prin1-to-string (eval form)))
+ (t
+ (eval form))))))))
(defvar *swank-pprint-bindings*
`((*print-pretty* . t)