Put the following in your .emacs to MakeMarkVisible at all times.

;; Author: Patrick Gundlach 
;; nice mark - shows mark as a highlighted 'cursor' so user 'always' 
;; sees where the mark is. Especially nice for killing a region.

(defvar pg-mark-overlay nil
  "Overlay to show the position where the mark is") 
(make-variable-buffer-local 'pg-mark-overlay)

(put 'pg-mark-mark 'face 'secondary-selection)

(defvar pg-mark-old-position nil
  "The position the mark was at. To be able to compare with the
current position")

(defun pg-show-mark () 
  "Display an overlay where the mark is at. Should be hooked into 
  (unless pg-mark-overlay 
    (setq pg-mark-overlay (make-overlay 0 0))
    (overlay-put pg-mark-overlay 'category 'pg-mark-mark))
  (let ((here (mark t)))
    (when here
      (move-overlay pg-mark-overlay here (1+ here)))))

(defadvice  exchange-point-and-mark (after pg-mark-exchange-point-and-mark)
  "Show visual marker"

(ad-activate 'exchange-point-and-mark)
(add-hook 'activate-mark-hook 'pg-show-mark)

Interesting alternative to ‘C-x C-x’ (‘exchange-point-and-mark’) to see the mark.

Might be even more interesting to show all of the marks (or the N most recent) on the mark ring, not just the (current) mark - perhaps in rainbow colors from recent (red) to old (blue).

And, instead of seeing marks all the time, I’d like to have a binding that shows marks only temporarily - e.g. until some easy event, like a mouse-button release (that is, display marks only while pressed).

BTW, when the mark is at the end of a line, the buffer is highlighted from the line end to the right window edge – looks like a minor bug. – DrewAdams

See also VisibleMark for such sort of things.

I wrote some elisp that displays the points in the mark ring. It’s modeled after Occur. The line number for each point in the mark-ring is displayed as well as the contents of that line. Pressing RET on the line will take you to the point from the mark-ring. The function is called ‘show-marks’ and is available at