系统:macOS 10.15
emacs-mac 27.1,spacemacs最新版。
安装并调用cdlatex后,latex模式下输入圆括号(
无法自动补全另一半,并且会报错:
Search failed: there is an unmatched expression somewhere or we are at the beginning/end of file.
相关代码:
dotspacemacs-configuration-layers
(
(latex :variables
latex-backend 'company-auctex
latex-build-engine 'xetex
latex-enable-magic t
latex-enable-folding t)
)
dotspacemacs-additional-packages '(
cdlatex
)
(add-hook 'LaTeX-mode-hook 'turn-on-cdlatex)
(add-hook 'org-mode-hook 'turn-on-org-cdlatex)
org-mode下面一切正常。latex-mode则出现开头所描述的问题。截图如下:
我的smartparens相关配置全部默认,没有改动过。
尝试搜索解决方案,但相关讨论很少。有一个在很多地方都能看到的回答是:https://gitmemory.com/issue/cdominik/cdlatex/15/643754217
但经尝试无效。
请问有没有什么解决方案?
按照我之前用 Spacemacs 时的经验是建议不用 smartparens,改用 electric-pair-mode
试了一下。把smartparens放进excludedpackage里面,然后(electric-pair-mode t)。然而还是不会补全括号,只不过没有那一句报错信息了。而且smartparens的高亮功能我还挺喜欢的,不知道有没有办法兼顾一下。
问题已经解决。我参考了doom-emacs配置中如何避免此类问题的代码,在doom的latex layer里。注意doom里把各类函数都重新定义了,不能直接照抄,只是参考了一下思路。最后代码如下,供遇到同样问题的人参考:
(use-package cdlatex
:hook (LaTeX-mode . cdlatex-mode)
:hook (org-mode . org-cdlatex-mode)
:config (define-key cdlatex-mode-map "(" nil)
)
感谢所有的回复。
1 个赞
高亮功能应该是别的 packages 提供的,另外我记得 smarparens 和挺多 packages 冲突的,比如 hungry delete。
看了下当时配置就这两行:
(setq electric-pair-inhibit-predicate 'electric-pair-conservative-inhibit)
(electric-pair-mode t)
试了一下,确实可以,不过高亮功能就没了,应该可以有什么Highlight-paren之类的东西可以解决。也是一个可行的方案。
高亮括号应该是靠这两个插件呀?rainbow-delimiters 和 highlight-parentheses
很奇怪,我发现我昨天用你的代码可以匹配括号是因为我不小心把cdlatex给关了。开了之后又不行了(smartparens已经关掉了)。highlight-parentheses-mode是开启状态,但是没有效果。
抱歉,我很少用 tex,刚刚确认了下确实有这个问题,我有空看看。
update:
cdlatex 提供 PAIR INSERTION of (), [], {}, and $$,详见 README,可能把上述两个插件的功能覆盖了了。
可以看看这个变量:cdlatex-paired-parens