(interactive (list last-input-event))
(or (compilation-buffer-p (current-buffer))
(error "Not in a compilation buffer"))
- (let ((pos (if event (posn-point (event-end event)) (point))))
- (if (get-text-property (point) 'directory)
- (dired-other-window (car (get-text-property pos 'directory)))
- (push-mark)
- (setq compilation-current-error pos)
- (next-error 0))))
+ (let* ((loc (event-end event))
+ (pos (posn-point loc)))
+ (with-selected-window (posn-window loc)
+ (if (get-text-property pos 'directory)
+ (dired-other-window (car (get-text-property pos 'directory)))
+ (push-mark)
+ (setq compilation-current-error pos)
+ (next-error 0)))))
;; Return a compilation buffer.
;; If the current buffer is a compilation buffer, return it.