Nat*_*ath 10 emacs parentheses paredit
在编程模式(如C)中使用paredit时,键入(当我尝试调用函数时将在paren之前插入一个空格,让我:
foo ()
Run Code Online (Sandbox Code Playgroud)
有没有办法在不改变paredit源的情况下禁用空间的插入?
Tre*_*son 12
好吧,paredit似乎工作的方式是它检查语法表以查看你是否在一个单词/符号/等之后插入一对,在这种情况下它强制插入一个空格.您需要覆盖该功能 - 可以通过多种不同方式完成:建议,重新定义函数确定空间,更改语法表等.
我会直接尝试:
(defun paredit-space-for-delimiter-p (endp delimiter)
(and (not (if endp (eobp) (bobp)))
(memq (char-syntax (if endp (char-after) (char-before)))
(list ?\" ;; REMOVED ?w ?_
(let ((matching (matching-paren delimiter)))
(and matching (char-syntax matching)))))))
Run Code Online (Sandbox Code Playgroud)
这显然适用于您使用的所有地方paredit.如果您想要更具特定模式的内容,可以在该and语句中添加一些条件(例如(and ... (memq major-mode '(c-mode lisp-mode)))).
所以...我想我确实改变了"来源",但是你可以用一块defadvice...... 做同样的事情......这都是elisp,所以差别很小.似乎没有设置来控制此类行为.
| 归档时间: |
|
| 查看次数: |
1643 次 |
| 最近记录: |