What's wrong with this solution: (add-hook 'vimpulse-visual-state-hook (lambda () (interactive) (hl-line-mode))) (add-hook 'viper-vi-state-hook (lambda () (interactive) (hl-line-mode 1))) Titus