 
 (defsubst geiser-edit--location-line (loc)
   (cdr (assoc 'line loc)))
+
+(defsubst geiser-edit--location-column (loc)
+  (cdr (assoc 'column loc)))
+
+(defsubst geiser-edit--make-location (name file line column)
+  `((name . ,name) (file . ,file) (line . ,line) (column . ,column)))
 
 (defconst geiser-edit--def-re
   (regexp-opt '("define"

(defun geiser-edit--try-edit-location (symbol loc &optional method)
  (let ((symbol (or (geiser-edit--location-name loc) symbol))
        (file (geiser-edit--location-file loc))
        (line (geiser-edit--location-line loc)))
    (unless file (error "Couldn't find edit location for '%s'" symbol))
    (unless (file-readable-p file) (error "Couldn't open '%s' for read" file))
    (geiser-edit--visit-file file (or method geiser-edit-symbol-method))
    (geiser-edit--goto-line symbol line)))

(defsubst geiser-edit--try-edit (symbol ret)
  (geiser-edit--try-edit-location symbol (geiser-eval--retort-result ret)))




(geiser-edit--define-custom-visit
 geiser-edit-symbol-method geiser-mode
 "How the new buffer is opened when invoking \\[geiser-edit-symbol-at-point]
or following links in error buffers.")

(geiser-custom--defface error-link
  'link geiser-debug "links in error buffers")


