簡體   English   中英

Emacs:僅在init.el中為給定的主要模式加載軟件包

[英]Emacs: load package only for given major mode in init.el

不久前,我為一些使用特定格式的文件制作了.el文件(epx.el)。 我通過(require 'epx)其加載到(require 'epx)

問題在於,在此epx.el中,存在:

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

我很麻煩,因為它會影響其他主要模式(特別是在python模式下)的注釋函數(例如comment-dwim )的行為:當我取消注釋區域時,它會縮進縮進...)。 如果我在epx.el中注釋了這些行,就沒有更多問題了。

那么這些(defadvice ...)僅在epx主模式下如何起作用?

謝謝!

您可以檢查當前緩沖區的主模式,並且只有在它為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 -p。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM