show-paren-mode对于中文括号支持的问题

有时需要在代码里写一些中文注释,但Emacs的show-paren-mode 对中文括号的支持似乎不太好?

(show-paren-mode 1)

当中文里存在空格时候,显示有问题,看如下例子:

p1

英文没问题。

p2

中文,但是中间没有空格,也没问题。

p3

中文,但是中间有空格,显示不正常。

似乎是类 lisp 模式下特有的 bug。

(defun test-show-paren (mode text)
  (with-temp-buffer
    (funcall mode)
    (insert text)
    (goto-char (point-max))
    (show-paren--default)))

(test-show-paren  'emacs-lisp-mode "(英文 括号)" ) ;; => (7 8 1 2 nil)
(test-show-paren  'emacs-lisp-mode "(中文 括号)") ;; => (7 8 5 6 t)
(test-show-paren  'lisp-mode       "(中文 括号)") ;; => (7 8 5 6 t)
(test-show-paren  'clojure-mode    "(中文 括号)") ;; => (7 8 5 6 t)
(test-show-paren  'c-mode          "(中文 括号)") ;; => (7 8 1 2 nil)
(test-show-paren  'python-mode     "(中文 括号)") ;; => (7 8 1 2 nil)

show-paren 代码不长,可以研究一下。

2 个赞