无论是 ParEdit 还是 Smartparens 都很难用啊

你这段代码写太啰嗦,其实只要一行就够了:

(defun no-space-for-delimiter-p (endp delim)
  (not (eq major-mode 'c++-mode)))

函数名也不恰当,其意思跟返回结果刚好相反。

更为完善的版本:

(defun paredit/space-for-delimiter-p (endp delm)
  (or (member 'font-lock-keyword-face (text-properties-at (1- (point))))
      (not (derived-mode-p 'basic-mode
                           'c++-mode
                           'c-mode
                           'coffee-mode
                           'csharp-mode
                           'd-mode
                           'dart-mode
                           'go-mode
                           'java-mode
                           'js-mode
                           'lua-mode
                           'objc-mode
                           'pascal-mode
                           'python-mode
                           'r-mode
                           'ruby-mode
                           'rust-mode
                           'typescript-mode))))
  1. 覆盖了常见的非 lisp 语言。
  2. 函数后面不加空格 foo(,关键字后面加空格 if (
5 个赞