Since goto-char signals an error when given a marker pointing to a buffer other than the current one (probably to prevent programming errors) and pop-global-mark only works on the global-mark-ring, there is a need for a simple function that jumps to the location of an arbitrary marker. The following function does that and is based on pop-global-mark. Please consider adding it to simple.el. Bob (defun goto-marker (marker) "Make MARKER's buffer and position current." (interactive) (cond ((not (markerp marker)) (error "Invalid marker: %s" marker)) ((not (marker-buffer marker)) (error "Invalid marker buffer: %s" marker)) (t (let* ((buffer (marker-buffer marker)) (position (marker-position marker))) (set-buffer buffer) (or (and (>= position (point-min)) (<= position (point-max))) (if widen-automatically (widen) (error "Marker position is outside accessible part of buffer: %s" marker))) (goto-char position) (switch-to-buffer buffer)))))