Guardando as modificações do init tanto para o emacs23 quanto para o emacs24?

1

Eu tenho alguns comandos do emacs sendo copiados e copiados / colados em ~/.emacs quando necessário.

Eu quero adicionar uma macro de dobra de código, mas a macro parece ser diferente para o emacs23 e o emacs24. Os próximos dois requisitos vêm do Como ativar permanentemente o hs-minor-mode no emacs do Stack Overflow.

Para o emacs23, parece que preciso de:

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

Para o emacs24, parece que preciso de:

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

Agora estou procurando uma maneira de proteger os comandos. (Eu também uso as variantes emacs-nox , se isso for importante).

Como posso adicionar os dois comandos ao meu ~/emacs para copiar / colar sem me preocupar com as versões?

    
por jww 22.09.2015 / 07:03

2 respostas

2

Eu realmente não sei o que guarding ou guard significa no contexto da programação porque sou apenas um amador, mas o trecho de código a seguir é um método de distinguir programaticamente entre 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.")))
    
por 22.09.2015 / 09:58
1

Geralmente é melhor (mais preciso) testar a existência de uma função ou variável do que testar emacs-major-version .

(add-hook (if (boundp 'prog-mode-hook) 'prog-mode-hook 'c-mode-common-hook)
          #'hs-minor-mode)
    
por 29.09.2015 / 02:30

Tags