Emacs 将全局次模式缓冲区设为本地

Emacs 将全局次模式缓冲区设为本地,emacs,buffer,Emacs,Buffer,另一个Elisp包将次要模式定义为全局模式。换言之,软件包使用以下内容定义次要模式: (define-minor-mode some-minor-mode ;; ... other stuff ... :global t) 我想让它成为本地缓冲区,这样当我激活它时,它只适用于它被激活的缓冲区。我该怎么做?你不能。或者至少,你不能用一般的方式 当一个次要模式被定义为全局模式时,该模式的逻辑无疑会做出完全相同的假设,并且没有任何通用的更改会导致任何任意全局次要模式仅具有缓冲区局部效果 此外

另一个Elisp包将次要模式定义为全局模式。换言之,软件包使用以下内容定义次要模式:

(define-minor-mode some-minor-mode
  ;; ... other stuff ...
  :global t)

我想让它成为本地缓冲区,这样当我激活它时,它只适用于它被激活的缓冲区。我该怎么做?

你不能。或者至少,你不能用一般的方式

当一个次要模式被定义为全局模式时,该模式的逻辑无疑会做出完全相同的假设,并且没有任何通用的更改会导致任何任意全局次要模式仅具有缓冲区局部效果

此外,对于某些全局模式,缓冲区局部变量甚至没有意义,例如影响窗口配置或帧参数的模式

全局模式必须逐案处理,查看其具体的实现细节。根据所讨论的代码,您可能能够实现某些特定模式的目标;但同样的方法不能保证适用于所有全球模式


值得一提的是,有一些“全球化”的次要模式,它们融合了其他两个概念,采用现有的缓冲区局部次要模式,然后定义一个全局模式,在所有适用的缓冲区中整体启用或禁用缓冲区局部模式。但是,您不能转向另一个方向——如果您还没有缓冲区本地模式,那么您必须先写入该模式。

@Drew,我认为这只适用于S.E.的[elisp]标记。?在S.O.这里,我相信在“elisp编程”问题中使用它是有效的。@phils:我认为它也适用于SO。至少应该是这样(国际海事组织)。应使用更具体的编程相关标记(必要时创建)。S.O.是否有其他编程语言标记以这种方式使用。?AFAIK编程语言的标记广泛用于标记有关使用该语言编程的问题。在E.S.上下文已经是Emacs,因此“使用elisp编程”总是隐式的,因此[elisp]的定义在那里是合理的。我们可能会说,在S.O.中包含[emacs]标记提供了与E.S.相同的上下文,但我不明白为什么在S.O.中使用[elisp]与任何其他语言标记不同。至少,有大量的问题没有这样标记,因此不存在一致性。我认为这需要元讨论和普遍同意。