你这段代码写太啰嗦,其实只要一行就够了:
(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))))
- 覆盖了常见的非 lisp 语言。
- 函数后面不加空格
foo(,关键字后面加空格if (。