File tree Expand file tree Collapse file tree 2 files changed +21
-6
lines changed Expand file tree Collapse file tree 2 files changed +21
-6
lines changed Original file line number Diff line number Diff line change 3434(declare-function geiser-eval--send/wait " geiser-eval" )
3535(declare-function geiser-eval--retort-error " geiser-eval" )
3636(declare-function geiser-mode " geiser-mode" )
37+ (declare-function geiser-edit--try-edit " geiser-edit" )
38+
39+ (defun lispy--scheme-goto-symbol (symbol )
40+ " Opens a new window visiting the definition of SYMBOL."
41+ (let* ((symbol (make-symbol symbol))
42+ (cmd `(:eval (:ge symbol-location ', symbol )))
43+ (marker (point-marker )))
44+ (condition-case err
45+ (progn (geiser-edit--try-edit symbol (geiser-eval--send/wait cmd))
46+ (when marker (ring-insert find-tag-marker-ring marker)))
47+ (error
48+ (error (error-message-string err))))))
3749
3850(defun lispy--eval-scheme (str )
3951 " Eval STR as Scheme code."
Original file line number Diff line number Diff line change @@ -2659,12 +2659,12 @@ Sexp is obtained by exiting list ARG times."
26592659(declare-function slime-edit-definition "ext:slime")
26602660(declare-function lispy--clojure-resolve "le-clojure")
26612661(declare-function lispy--clojure-jump "le-clojure")
2662+ (declare-function lispy--scheme-goto-symbol "le-scheme")
26622663(defun lispy-goto-symbol (symbol)
2663- "Go to definition of SYMBOL."
2664- (interactive (list (let ((str (thing-at-point 'symbol)))
2665- (if str
2666- (intern str)
2667- (lispy--current-function)))))
2664+ "Go to definition of SYMBOL.
2665+ SYMBOL is a string."
2666+ (interactive (list (or (thing-at-point 'symbol)
2667+ (lispy--current-function))))
26682668 (let (rsymbol)
26692669 (deactivate-mark)
26702670 (ring-insert find-tag-marker-ring (point-marker))
@@ -2707,7 +2707,10 @@ Sexp is obtained by exiting list ARG times."
27072707 (lispy--back-to-paren))
27082708 ((eq major-mode 'lisp-mode)
27092709 (require 'slime)
2710- (slime-edit-definition symbol))))
2710+ (slime-edit-definition symbol))
2711+ ((eq major-mode 'scheme-mode)
2712+ (require 'geiser)
2713+ (lispy--scheme-goto-symbol symbol))))
27112714 ;; in case it's hidden in an outline
27122715 (lispy--ensure-visible))
27132716
You can’t perform that action at this time.
0 commit comments