Просто заглянул в источник Emacs, чтобы увидеть, что происходит, вот что я нашел:
Для каждой команды, которая была переведена смещением, вызывается функция «handle-shift-selection». Эта функция активирует или деактивирует выбор, используя переменную «transient-mark-mode» и вызывая «push-mark» и «deactivate-mark» соответственно. Если я правильно делаю математику, это означает, что будет вызываться ваш хук деактивации, но не хук активации.
Одним из способов решения этой проблемы является добавление собственного кода в «push-mark» с помощью «defadvice».