前段时间我为一些具有我正在使用的特定格式的文件制作了一个.el文件(epx.el)。我通过(require 'epx)
在我的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模式中:当我取消注释一个注释区域时,它会破坏我的缩进... )。如果我在epx.el中评论这些行,就不会有更多问题。
那么这些(defadvice ...)
怎么才能在epx主模式下生效呢?
谢谢!
答案 0 :(得分: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))
)
编辑:按照@Stefan的建议使用derived-mode-p
。