Eli Zaretskii writes: >> +(defcustom global-hl-line-modes t >> + "Which major modes `hl-line-mode' is switched on in. >> +This variable can be either t (all major modes), nil (no major modes), >> +or a list of modes and (not modes) to switch use this minor mode or >> +not. For instance >> + >> + (c-mode (not message-mode mail-mode) text-mode) >> + >> +means \"use this mode in all modes derived from `c-mode', don't use in >> +modes derived from `message-mode' or `mail-mode', but do use in other >> +modes derived from `text-mode'\". An element with value t means \"use\" >> +and nil means \"don't use\". There's an implicit nil at the end of the >> +list." >> + :type >> + '(choice (const :tag "Enable in all major modes" t) >> + (const :tag "Don't enable in any major mode" nil) > Why is it useful to have a value of nil here? Why would anyone > activate this mode when the variable has the value nil? Well, this is extracted by expanding define-globalized-minor-mode macro, I've deleted them /(i'm wondering why that macro adds them since i find them unnecessaries)/ >> @@ -224,7 +254,8 @@ global-hl-line-mode >> on `post-command-hook'." >> :global t >> :group 'hl-line >> - (if global-hl-line-mode >> + (if (and global-hl-line-mode >> + (easy-mmode--globalized-predicate-p global-hl-line-modes)) >> (progn >> ;; In case `kill-all-local-variables' is called. >> (add-hook 'change-major-mode-hook #'global-hl-line-unhighlight) > Maybe I'm missing something, but don't you need to consult this new > variable in global-hl-line-highlight-all? I've moved it to =global-hl-line-highlight=, which should work better.