Subject: Activating mark does not run mark activation hook
From: Kelly Dean <[email-masked]>
To: [email-masked]
Date: Thu, 29 Nov 2012 02:08:19 -0800 (PST)
List-Id: <debbugs-submit.debbugs.gnu.org>

In 24.2, from emacs -Q
(add-hook 'deactivate-mark-hook (lambda () (message "Deactivate mark hook called.")))
(add-hook 'activate-mark-hook (lambda () (message "Activate mark hook called.")))
C-SPC C-SPC C-SPC C-SPC
In *Messages* you get:

Mark set
Activate mark hook called.
Deactivate mark hook called.
Mark deactivated
Mark activated
Deactivate mark hook called.
Mark deactivated

Notice that the second "Activate mark hook called" is missing.

simple.el has:
(defun activate-mark ()
  "Activate the mark."
  (when (mark t)
    (setq mark-active t)
    (unless transient-mark-mode
      (setq transient-mark-mode 'lambda))))

The bug is fixed by changing that to:
(defun activate-mark ()
  "Activate the mark."
  (when (mark t)
    (setq mark-active t)
    (run-hooks 'activate-mark-hook)
    (unless transient-mark-mode
      (setq transient-mark-mode 'lambda))))