I've set up activate-mark-hook and deactivate-mark-hook, but they work only when selecting text by dragging mouse, not by using shift-selection. How do I hook into shift selection?
Just peeked into the Emacs source to see what happens, this is what I found:
For every command that has been shift-translated, the function "handle-shift-selection" is called. This function will activate or deactivate the selection by using the "transient-mark-mode" variable, and by calling "push-mark" and "deactivate-mark", respectively. If I do the math correctly, this means that your deactivate hook will be called, but not you activation hook.
One way to solve this is to add your own code to "push-mark" using "defadvice".
Just peeked into the Emacs source to see what happens, this is what I found:
For every command that has been shift-translated, the function "handle-shift-selection" is called. This function will activate or deactivate the selection by using the "transient-mark-mode" variable, and by calling "push-mark" and "deactivate-mark", respectively. If I do the math correctly, this means that your deactivate hook will be called, but not you activation hook.
One way to solve this is to add your own code to "push-mark" using "defadvice".