Comment réinitialiser le thème des couleurs?

25

Lorsque j'essaie différents thèmes de couleurs, il semble que si un élément particulier n'est pas défini dans le nouveau thème, l'ancienne valeur de thème est conservée, ce qui entraîne des conflits. Cela se produit dans emacs 24 et dans les versions précédentes utilisant color-theme. Existe-t-il un moyen de réinitialiser toutes les couleurs entre les valeurs par défaut afin que chaque thème de couleur ressemble à celui prévu?

hatmatrix
la source

Réponses:

22

Êtes-vous sûr d'utiliser des thèmes de couleurs et non des thèmes personnalisés Emacs? Les thèmes de couleurs sont définis par la bibliothèque color-theme.el. Les thèmes personnalisés sont disponibles à partir d'Emacs 24 - et ce ne sont pas les mêmes que les thèmes de couleur.

  1. Si vous utilisez des thèmes de couleurs , la réponse est simple: il suffit d'activer le pseudo-thème de couleurs nommé [Reset]. Cela annule complètement le thème: supprime tous les effets qu'il imposait.

  2. Si vous utilisez en fait des thèmes personnalisés Emacs, la réponse n'est pas si simple. Vous ne pouvez pas annuler l'application d'un thème personnalisé. Ce que vous pouvez faire, ce qui vous aidera beaucoup, est de désactiver chaque thème personnalisé, en utilisant disable-theme, après son activation et avant d'activer un autre thème personnalisé.

    Voici deux façons de procéder "semi-automatiquement":

    • Conseillez load-theme, afin qu'il désactive d' abord tous les thèmes personnalisés avant de charger (activer) un autre. Cela a été suggéré dans cette réponse StackOverflow par Tungd sur tungdao.com .

      (defadvice load-theme (before theme-dont-propagate activate)
       (mapcar #'disable-theme custom-enabled-themes))
      
    • Définissez et utilisez une fonction qui désactive le thème actuel avant d'activer un thème . Cela a été suggéré par Maris Orbidans .

      (defun enab-theme (theme) 
       (if current-t43m3 (disable-theme current-t43m3))
       (setq current-t43m3 theme) 
       (load-theme theme t)) 
      

    Voir ces messages SO originaux pour un peu plus d'informations, et voir la question et les autres réponses sur la même page SO. (Avertissement: la réponse acceptée sur cette page n'est pas une réponse au problème de l'annulation d'un thème personnalisé.)

  3. Soyez conscient que même les solutions décrites dans # 2 sont pas des solutions générales: ils ne défont l'application d'un thème personnalisé - il n'y a pas moyen de le faire. En d'autres termes , la désactivation d'un thème personnalisé ne restaure pas les personnalisations non liées au thème (par exemple, les modifications de visage) que vous auriez pu effectuer avant d'activer ce thème et qui ont été remplacées par ce thème.

En d'autres termes, annuler un thème de couleur est trivial; annuler un thème personnalisé est impossible. Le mieux que vous puissiez faire pour un thème personnalisé est de le désactiver par rapport aux autres thèmes personnalisés.

La meilleure référence pour cette question et pour les moyens de basculer (par exemple le cyclisme) entre les thèmes de couleur et personnalisés est la page Wiki d'Emacs Couleur et thèmes personnalisés .

Et soyez prévenu: il y a une quantité d'informations trompeuses à divers endroits sur les thèmes personnalisés Emacs à cet égard. Les gens étaient à juste titre ravis qu'Emacs ait ajouté des thèmes personnalisés en tant que fonctionnalité dans Emacs 24, et certains d'entre eux ont immédiatement sauté à la conclusion erronée que les thèmes personnalisés remplaçaient les thèmes de couleur. Ils ne sont pas. Chacun a ses avantages. Ne pas pouvoir annuler est un inconvénient majeur des thèmes personnalisés, par exemple.

[ Ce rapport de bogue GNU Emacs est une demande d'amélioration visant à remédier à l'impossibilité d'annuler un thème personnalisé (et donc de restaurer des personnalisations antérieures).]

A dessiné
la source
1
Vous pouvez également ajouter que si vous sélectionnez un thème de couleur à l'aide d'une commande comme celle-ci, color-theme-dark-laptopvous devez manuellement créer un instantané si vous souhaitez revenir au thème précédent. Par exemple (fset 'color-theme-revert (color-theme-make-snapshot)), vous donnera la commande color-theme-revertde revenir. Le bouton [Resert] ne fonctionnera pas autrement. (Pour tester si j'ai raison, n'exécutez pas la commande color-theme-selectavant de changer de thème, car cela vous donnera le cliché manquant)
user4514
Veuillez noter que les thèmes de barre désactiveront automatiquement les autres thèmes lors de la sélection d'un nouveau.
ocodo
1
@EmacsFodder: Si vous parlez de thèmes personnalisés, il ne suffit pas de désactiver d'autres thèmes . Vous ne pouvez pas nécessairement revenir à l'état initial qui existait avant d'activer des thèmes personnalisés. Ce problème n'existe pas pour les thèmes de couleurs - vous pouvez prendre un instantané de l'état initial et y revenir. Voir la page EmacsWiki citée et le rapport de bogue cité. Il n'y a pas de solution miracle ici, Helm ou autre. C'est à cause (d'une faille) de la façon dont les thèmes personnalisés ont été conçus.
Drew
@JSG: Oui, pour pouvoir revenir à l'état initial, avant d'activer un thème de couleur, vous devez en créer un instantané (ce qui revient à un pseudo thème de couleur). Cela est expliqué dans la page EmacsWiki citée et le rapport de bogue Emacs cité. Alors oui, vous devrez peut-être penser à l'avance, mais au moins il est possible de revenir à cet état. Cette fonctionnalité est manquante pour les thèmes personnalisés - la désactivation des thèmes personnalisés ne vous ramène pas à l'état initial.
Drew
Ces informations m'ont été précieuses sur leurs différences, car je n'ai jamais abordé le sujet auparavant sur Emas, alors merci! Juste pour des informations supplémentaires et mises à jour, à partir de juillet 2016 sur Emacs 25.2.1, il semble maintenant que vous pouvez également enregistrer vos propres paramètres en tant que thème - ou du moins, Emacs ici me laisse le faire. De plus, je dois indiquer explicitement (sur l' customize-themesinterface utilisateur) si je veux activer plus d'un thème en même temps. Je suppose que cela pourrait être un moyen d'annuler un thème en cas de changement d'avis. Et je suppose également qu'avec certains lisp, on pourrait conserver une sauvegarde automatique avant toute activation.
Charles Roberto Canato
-2

Si vous avez sélectionné l'un des thèmes intégrés dans M-x customize-themes, commentez simplement les lignes qui activent le thème personnalisé dans votre ~/.emacs.

justinp
la source