Что делает активация рекламы?

В ответ я заметил:

;; Align with spaces only
(defadvice align-regexp (around align-regexp-with-spaces)
  "Never use tabs for alignment."
  (let ((indent-tabs-mode nil))
    ad-do-it))
(ad-activate 'align-regexp)

Это звучит многообещающе, но... что это делает?!

Я старался eval-region на блок кода. Но для меня все, что он делает, это добавляет следующее к align-regexp документы:

Эта функция рекомендуется.

Around-advice `align-regexp-with-space ':
Никогда не используйте вкладки для выравнивания.

Кажется, я не могу использовать align-regexp-with-spaces, если это то, что должно быть эффект... Что я пропускаю?

Я использовал GNU Emacs версии 24.0.96.1 (i386-mingw-nt6.1.7601).

1 ответ

Решение

Задавая этот вопрос, я понял, что мне просто не пришло в голову советовать функциям.

Мне стало ясно, что:

  • align-regexp-with-spaces не функция и не переменная, а только имя (чтобы включить / отключить отдельные советы)
  • с тех пор (ad-activate 'align-regexp), align-regexp просто делает то, что я "посоветовал": не использовать вкладки

Так: ad-activate активирует совет, эффективно изменяя поведение исходной функции. Большой!

Я не понимаю, почему это "лучше", чем определение функции вокруг align-regexp хоть. Но опять же, я мало что знаю об Emacs Lisp.

Боюсь, дополнительные строки документации только добавили путаницы...

Другие вопросы по тегам