Emacs AUCTeX中的乳胶电环境对模式

Emacs AUCTeX中的乳胶电环境对模式,emacs,latex,elisp,auctex,Emacs,Latex,Elisp,Auctex,普通tex模式的成员在emacs 24.1中有一个非常好的特性,这是一个称为latex electric env pair mode的次要模式,它使现有的\begin{…}[…]\end{…}对保持匹配。也就是说,当在\begin{…}标记中更改环境名称时,其相应的\end{…}会自动更改(当环境从星号版本更改为非星号版本时非常好,反之亦然) 然而,与AUCTeX相比,tex模式仍然很差。。。但我真的很喜欢新的小调模式。我尝试创建一个独立的次要模式,将所有看起来像是使用过的东西从tex-mode

普通tex模式的成员在emacs 24.1中有一个非常好的特性,这是一个称为latex electric env pair mode的次要模式,它使现有的
\begin{…}[…]\end{…}
对保持匹配。也就是说,当在
\begin{…}
标记中更改环境名称时,其相应的
\end{…}
会自动更改(当环境从星号版本更改为非星号版本时非常好,反之亦然)

然而,与AUCTeX相比,tex模式仍然很差。。。但我真的很喜欢新的小调模式。我尝试创建一个独立的次要模式,将所有看起来像是使用过的东西从tex-mode.el复制到一个新文件中,并更改了所有描述符(因此它们不会与AUCTeX或tex模式的任何余数冲突)。不幸的是,这将不起作用,次要模式可以打开,但它被打破了:什么都没有发生

我不是(e)lisp程序员,也就是说我不太懂代码。但是也许有人喜欢这个小模式的特性,可以把它移植到一个独立的版本? 此外,可能还有一些提供类似/同等功能的软件包


我将感谢任何帮助

您可能错过了
tex-env-mark
(它设置了
latex-electric-env-pair-mode
稍后用于查找环境启动程序/结束程序的标记)或
latex-syntax-propertize-rules
(在缓冲区的相关部分运行
tex-env-marks
)或
语法属性化函数的设置(使用
latex语法属性化规则
,以便实际使用这些规则)

顺便说一句,与其复制这些东西,不如尝试下面未经测试的代码:

(defconst my-latex-syntax-propertize-function
   (with-temp-buffer (latex-mode) syntax-propertize-function))

(add-hook 'LaTeX-mode-hook
          (lambda ()
            (set (make-local-variable 'syntax-propertize-function)
                 my-latex-syntax-propertize-function)
            (latex-electric-env-pair-mode 1)))

我试过了,但不起作用。消息缓冲区备注:文件模式规范错误:(无效变量latex语法属性规则)确实,我在复制和重命名尝试中忘记了latex语法属性规则部分,但是,当包含这些部分时,AUCTeX停止正常工作…因此我猜您建议的解决方案(修复后)是我的最佳选择。此外,我使用C-h v检查了syntax propertize函数的值(在使用您的修复程序启用electric env pair模式后):它是nil。仅使用(require'tex模式)时,似乎未设置latex syntax propertize rules变量语句,因此它无法应用,对吗?嗯,你是对的,
latex语法属性规则
仅在编译tex模式时设置。我将更新我未经测试的配方。仍然不起作用,但至少
语法属性函数
不再为零。我将其值发布在pastebin(),也许你能理解。对我来说,它看起来像字节码或类似的东西…@elemakil:是的,它是字节码,这很正常。至于为什么它不起作用……你能检查一下
tex env mark
设置的标记的存在吗?为什么每个人都说AUCTeX比常规tex模式好得多?常规tex模式做了我想要的一切,上一次我看它时,AUCTeX似乎只是改变了所有已经连接到我手指上的击键,并添加了一堆我永远不会使用的“插入此”击键(我用手打字会更快)。