1

У меня есть некоторые команды emacs, скопированные и скопированные / вставленные в ~/.emacs когда это необходимо.

Я хочу добавить макрос сворачивания кода, но макрос выглядит по-разному для emacs23 и emacs24. Следующие два требования взяты из Stack Overflow, как Постоянно включать hs-minor-mode в emacs.

Для emacs23 мне нужно:

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

Для emacs24 мне, кажется, нужно:

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

Я сейчас ищу способ охранять команды. (Я также использую варианты emacs-nox , если это имеет значение).

Как я могу добавить обе команды в мой ~/emacs чтобы я мог копировать / вставлять, не беспокоясь о версиях?

2 ответа2

2

Я на самом деле не знаю, что означает guarding или guard в контексте программирования, потому что я просто хобби, но следующий фрагмент кода представляет собой метод программного различия между 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.")))
1

Как правило, лучше (точнее) проверить наличие функции или переменной, чем проверить emacs-major-version .

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .