找懒猫?论坛里m什么什么lazycat那位。
懒猫的这个帖子,看是否有帮助
paredit-open-parenthesis
确实会多插入一个空格,用smartparens或者内置的electric-pair-mode就好了,我因为其他一些问题不用smartparens,用的electric-pair-mode,开启paredit之后把(
改回self-insert-command
就好了。然后paredit-kill
和paredit-backward-delete
(匹配才能删除)还是继续用。
@zmqclee @Roife 好像是paredit-space-for-delimiter-predicates
,我的是nil
,会插入空格。
解决了
(defun no-space-for-delimiter-p (endp delim)
(if (or (eq major-mode 'c++-mode)
)
nil
t))
(use-package paredit
:config
(add-to-list 'paredit-space-for-delimiter-predicates 'no-space-for-delimiter-p))
你这段代码写太啰嗦,其实只要一行就够了:
(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 (
。
受教了,谢谢!
这个真是机智……
另外lazycat说他没有自动加空格的问题,好像有别人也没问题,我还以为是spacemacs又做了什么小动作……你那里在加这个函数之前有多加空格的问题吗?
如果不做修改,肯定是有问题的。其实不应该叫做问题,而是 feature:
之所以比较少看到抱怨,可能是:
- 用户少。再加上 melpa 打包的 dev 版有 bug,加剧了用户转投 smartparens 了。
- 不在乎是否加空格,或本来就赞成这种风格。
- 不写 c 类的语言。
应该是一个feature吧,因为如果写 lisp 系语言的话这个功能是很好用的
估计作者也没想到会在其它mode中使用emm,还把分号绑定成semicolon了…
作者给了这个变量,肯定是考虑了这种情况的,奇怪的是没有给个默认的值来fix在C系语言里也出现空格的行为……另外paredit-...-semicolon
在我这里没有异常
在我这里被绑定在了分号键上,我只能把这个键unbind
你使用paredit-…-semicolon的时候注释符号的不是分号吗?
不太明白你的意思,我用的evil,insert-state下分号是paredit...semicolon
,normal-state下是evil-repeat-find-char什么的,注释用的evil-nerd-commenter
,spacemacs默认绑在SPC ;
我发现在js2-mode
里没有按意料中地工作,这里用derived-mode-p
更好吧?不过判断一个list中是否有任意一个符合这个predict,这个我不知道怎么写,你改下?
我在 c+±mode 下 分号 被绑定在了 semicolon函数,导致每次按分号都会运行这个函数…
前面 11# 楼通过判断 font-lock-keyword-face
来决定是否在 (
前面加空格的方式存在一个“例外”:sizeof
c 语言中的 sizeof
确实是关键字,但它写起来很像函数。
要不要忍受这个“例外”看着办吧。
不太理解,为何要在非lisp环境下使用ParEdit。。。
即使在非 lisp 环境,大部分情况下它都工作得很好,少数情况自己做点修补就可以了。
我觉得你要求太高了点,其实这个功能针对sexp风格的lisp系语言。至于用于别的,只是个微微的扩展,毕竟语言的不同在哪里。它本应该只支持lisp系的,现在这点点扩展搞的大家心里痒痒的不爽