Garder les modifications initiales pour emacs23 et emacs24?

1

J'ai quelques commandes emacs écrites et copiées / collées dans ~/.emacs si nécessaire.

Je souhaite ajouter une macro de repliement de code, mais cette macro semble être différente pour emacs23 et emacs24. Les deux prochaines exigences proviennent de Stack Overflow Comment activer en permanence le mode mineur dans emacs .

Pour emacs23, il me semble avoir besoin de:

(add-hook 'c-mode-common-hook #'hs-minor-mode)

Pour emacs24, il semble que j'ai besoin de:

(add-hook 'prog-mode-hook #'hs-minor-mode)

Je cherche maintenant un moyen de garder les commandes. (J'utilise aussi le emacs-nox variantes, si ça compte).

Comment puis-je ajouter les deux commandes à mon ~/emacs je peux donc copier / coller sans me soucier des versions?

jww
la source
AFAICT le c-mode-common-hook la version devrait fonctionner aussi bien dans Emacs-24 (ou 25 d'ailleurs).
Stefan

Réponses:

2

Je ne sais pas vraiment quoi guarding ou guard signifie dans le contexte de la programmation parce que je ne suis qu'un amateur, mais l'extrait de code suivant est une méthode permettant de distinguer par programmation emacs-major-version:

(cond
  ((= emacs-major-version 23)
    (add-hook 'c-mode-common-hook #'hs-minor-mode))
  ((= emacs-major-version 24)
    (add-hook 'prog-mode-hook #'hs-minor-mode))
  (t
    (message "The catch-all condition has not been set for hs-minor-mode.")))
lawlist
la source
Ma mauvaise ... J'empruntais un terme C / C ++. J'ai supprimé la phrase car je ne pensais pas que les programmeurs non-C / C ++ comprendraient une définition en termes de macros de définition et de pré-processeur.
jww
Cela produit une erreur sous Debian 8: "Avertissement (initialisation): une erreur s'est produite lors du chargement de '/root/.emacs': fin du fichier lors de l'analyse: /root/.emacs \ r \ n \ r \ n Pour garantir un fonctionnement normal, vous devez en rechercher la cause et en supprimer le motif. Démarrez Emacs avec l’option '--debug-init' pour afficher une trace complète de l’erreur. "
jww
@jww - Chaque fois que vous voyez une erreur qui dit End of file during parsing, cela signifie généralement que vous avez oublié une parenthèse ou une citation double. Par exemple, si vous copiez tout l'exemple dans la réponse ci-dessus, il n'y aura pas d'erreur. Toutefois, si vous ne parvenez pas à copier l'une des parenthèses fermantes à la toute fin de l'exemple, vous rencontrerez l'erreur que vous avez reçue. En matière de vérification des erreurs, il est utile de toujours vérifier quelle que soit la section sur laquelle je travaille pour m'assurer que les parenthèses de fin correspondent aux parenthèses de début avant de passer au projet suivant.
lawlist
@jww - Je trouve aussi la fonction intégrée M-x check-parens pour être extrêmement précieux - cela déplace le point vers la section générale du fichier ouvert qui pose le problème, ou laisse le point où il se trouve s'il n'y a pas de problème.
lawlist
1

Il est généralement préférable (plus précis) de vérifier l’existence d’une fonction ou d’une variable que de emacs-major-version.

(add-hook (if (boundp 'prog-mode-hook) 'prog-mode-hook 'c-mode-common-hook)
          #'hs-minor-mode)
Drew
la source