2015-01-29 3 views
0

Я сделал некоторое время назад файл .el (epx.el) для некоторых файлов с определенным форматом, который я использую. Я загружаю его в свой init.el через (require 'epx).Emacs: загрузить пакет только для данного основного режима в init.el

Проблема заключается в том, что в этом epx.el есть:

(defadvice comment-region (after indent-after activate) 
    (indent-region beg end) 
) 
(defadvice uncomment-region (after indent-after activate) 
    (indent-region beg end) 
) 

У меня проблема, потому что это влияет на поведение комментария функций (например, comment-dwim) в других основных режимах (в частности, в python mode: когда я раскомментирую область с комментариями, она разбивает мой отступ ...). Если я прокомментирую эти строки в epx.el, проблем больше нет.

Так как же эти (defadvice ...) имеют эффект только в режиме epx major?

Спасибо!

ответ

0

Вы можете проверить основной режим текущего буфера, и принять меры, только если это exp-mode:

(defadvice comment-region (after indent-after activate) 
    (if (derived-mode-p 'exp-mode) 
     (indent-region beg end)) 
) 
(defadvice uncomment-region (after indent-after activate) 
    (if (derived-mode-p 'exp-mode) 
     (indent-region beg end)) 
) 

EDIT: использовать derived-mode-p как предложено @Stefan.

+0

'(буфер-локальное значение 'main-mode (current-buffer))' - это круглый способ записи 'major-mode'. И обычно для проверки основного режима я рекомендую 'производный-режим-р'. – Stefan

+0

Спасибо, я изменил ответ, чтобы использовать ваше предложение. –

Смежные вопросы