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) 

Reply via email to