我一会加一个语言的限制吧.
现在只在Lisp语言中会自动提取右括号到当前行位, 其他语言知识调到右括号外并换行
好的,非常感谢!刚才我已经下载试过了,很好用。
关于M-)
操作之后
format太lisp风格了,可不可以方便的时候,把c系的语言的这个format去掉。上图是Rust
github提issue,最近忙,放论坛忘记了
已经提issue了
太感谢了! ありがとうございます!
我刚才也试过了,非常好用。以后我也试着提一些PR
欢迎欢迎,哈哈哈哈
刚才又发现一个问题,不清楚是我的环境问题还是哪里冲突了,就没提issue
我的F6键绑定的是neotree-toggle
窗体模式打开emacs, 按F6是正常的。但在终端模式打开emacs, F6却被绑定到swesome-pair-wrap-bracket上了。
再现手顺
C-h-k F6
上面也提示swesome-pair-wrap-bracket是绑定到M-[
看不明白是怎么回事了。可能是哪方面的问题呢?能给个提示吗?
在终端F6被翻译成C-[
了,应该是你终端的设置问题
刚我又确认了一下,不是终端的问题。我把F6和F7对调了一下,F6没问题了,F7出现相同的问题了。
另外发现在终端环境下,只有和awesome-pair相关的mode才会出这问题,打开别的文件,比如README.md就没这个问题。
不知大家能否在自己的环境中再现这种现象不?
再现手顺:
1. F键(如F6)绑定到neotree-toggle
2. 在终端环境下打开emacs
3. 在和awosome-pair相关的mode下按F6,比如lisp-mode下
注意:上面的问题只出现在终端下
如果大家也能再现的话,我就提issue了
我想问一下,paredit里有快速把括号左边或右边的元素包含进括号内的功能,awesome-pair里,我没找到,是不是因为不常用,所以没有提供?
这功能就叫slurp… 楼上说了为啥没搞
好的,我刚才爬楼看到了
关于awesome-pair-jump-*系列的命令,使用过之后有些想法拿出来讨论一下:先看下面的GIF
当中所有移动都是使用awesome-pair-jump-right (我绑定到了M-n),可以发现中间跳转到了?a左边的左括号上,原因应该是awesome-pair-jump-*系列的函数可以跳转到单引号上头(jump-right会跳到单引号后面,jump-left会直接跳到单引号上面),所以当awesome-pair-jump-right寻找下一个目标的时候发现了单引号,所以就跳到他后面
这在lisp一类的语言里用起来有时候很尴尬,因为常常
(quote ...)
会被简写成
'(...)
会导致awesome-pair在跳转的时候就跳到了左括号上,可是awesome-pair-jump-right理论上应该是设计的要在右括号,右方括号,右花括号之间跳转,这样用起来感觉就不是很一致,我暂时也没想到会有想要跳到单引号上头的场合
而如果是在非lisp一类的语言中,单引号通常是用来表示字元(当然也可能表示字串,可能相对少一点),使用场景可能会变成这样(|表示光标位置)
|'a' ==> 'a'|
感觉用处就不是很大,双引号常用来代表字串而在字串边界跳转是很实用的,但是单引号比较常用来表示字元,在字元边界跳转感觉用处不是很大?
综上所述,个人感觉让awesome-pair-jump-*系列的命令不要跳到单引号上可能可以增加一致性,也可以省去很多不太必要的跳转过程
当然以上都只是我个人的使用经验,可能这在很多情况下会是很好的feature,在这边抛砖引玉发表点自己的看法
单引号在写c或者python的时候,用处特别大。
其实严格意义上的对称跳转并不好用,徒增不必要的跳转。
当然欢迎大家一起探索每种语言最佳跳转逻辑,awesome-pair.el本身就是为了适应所有编程语言去设计的。
感谢说明
话说awesome-pair的github说明里是用
(define-key awesome-pair-mode-map (kbd "M-p") 'awesome-pair-jump-right)
(define-key awesome-pair-mode-map (kbd "M-n") 'awesome-pair-jump-left)
虽然按键完全是可以自己配置的,不过依照emacs的传统把这两个倒过来感觉会直觉一些? ? 像是emacs内建的C-M-n (forward-list)跟awesome-pair-jump-right就有点像,感觉用n代表right,p代表left会更直觉一些,要不要考虑把说明里的这两行换过来?
另外个人有个比较好奇的问题是楼主平常向后删除是用M-o (awesome-pair-backward-delete)还是会用backspace ? 推荐直接用awesome-pair-backward-delete完全取代backspace吗? e.g.
(define-key awesome-pair-mode-map (kbd "<backspace>") 'awesome-pair-backward-delete)
我是按照键盘布局来记忆的, 因为 N 在靠左的位置, P在靠右的位置, 所以 M-n 代表 awesome-pair-jump-left M-p 代表 awesome-pair-jump-right
我 99% 的情况都用 awesome-pair-backward-delete 进行语法删除, 但是不建议完全用 awesome-pair-backward-delete 绑定到 backspace 上, 因为像Elisp这样语言, 一旦语法结构发生错误, awesome-pair-backward-delete 这个函数会发生非常诡异的删除行为 (因为 awesome-pair-backward-delete 是建立在正确语法基础之上进行语法推测并进行删除的, 语法结构都错了, 结果就不可预料了)
所以, 推荐 backspace 按键不要绑定 awesome-pair-backward-delete, 以备不时之需.