获取缓冲区中活动次要模式的列表


14

如何获取当前缓冲区中活动的次要模式的列表?

文件(info "(elisp)Minor Mode Conventions")说:

 Define a variable whose name ends in ‘-mode’.  We call this the
 "mode variable".  The minor mode command should set this variable.
 The value will be ‘nil’ if the mode is disabled, and non-‘nil’ if
 the mode is enabled.  The variable should be buffer-local if the
 minor mode is buffer-local.

我停止:

(dolist (m minor-mode-list)
  (when (symbol-value m)
    (push m modes)))

describe-mode 消息来源指出:

;; Older packages do not register in minor-mode-list but only in
;; minor-mode-alist.

我不知道那是否仍然有效...


2
describe-mode在当前缓冲区中没有给您足够的活动次要模式列表吗?
德鲁

1
@Drew听起来好像他可能会以编程方式想要它?
保姆

1
@nanny:是的,我猜到了。在这种情况下,一个开始的地方就是查看代码describe-mode- 如果这样做足够的话。
画了

Answers:


7

尝试这个:

(mapcar #'car minor-mode-alist)

实际上,您会发现此值通常不同于minor-mode-list


13

如果您只是想查看缓冲区中正在使用哪些次要模式,而无需以编程方式使用列表,请使用:

M-x describe-mode

该命令将打开一个新缓冲区,该缓冲区以次要模式的完整列表开头,并对主要模式以及可能已运行的所有父模式进行简要说明。


1
尽管这可能无法完全回答OP的问题,但这是我搜索此问题时发现的第一个结果。由于Drew的评论解决了我的用例,因此我认为应该为将来的搜索者提供完整的答案。
野鸭'16

+1用于说明该问题的更通用解决方案。 describe-mode特别有用!
伊夫史密斯17/09/14
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.