更改 Paredit 格式
当在 C 等编程模式中使用 paredit 时,当我尝试调用函数时,键入 ( 将在 paren 之前插入一个空格,从而留下:
foo ()
有没有办法在不更改 paredit 源代码的情况下禁用空格的插入?
When using paredit in programming modes such as C, typing ( will insert a space before the paren when I'm trying to call a function, leaving me with:
foo ()
Is there a way to disable the insertion of the space without changing paredit's source?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
嗯,Paredit 非常适合编辑由 S 表达式构建的语言。 如果您只是喜欢它自动插入右括号的方式,请使用功能
Well, Paredit is ideal for editing languages built of S-expressions. If you just like how it automatically inserts the closing paren, use feature skeleton-pair.
好吧,paredit 的工作方式似乎是它检查语法表,看看您是否在单词/符号/等后面插入一对,在这种情况下,它会强制插入一个空格。 您需要重写该功能 - 可以通过多种不同的方式来完成:建议、重新定义函数确定空间、更改语法表等。
我会尝试直接进行:
这显然适用于您使用的所有地方
paredit
。 如果您想要更具体的模式,您可以在and
语句中添加一些条件(例如(and ... (memq Major-mode '(c-mode lisp-mode))) )。
所以...我想我确实改变了“源”,但是你可以用一块
defadvice
做同样的事情...这都是 elisp,所以差异很小。 似乎没有一个设置可以控制此类行为。Well, the way paredit appears to work is that it checks the syntax tables to see if you're inserting a pair right after a word/symbol/etc., in which case it forces a space to be inserted. You need to override that functionality - which can be done a number of different ways: advice, redefine the function determining space, changing the syntax table, etc.
I'd try the straight forward:
This will obviously apply to all places where you use
paredit
. If you want something more mode specific, you can add some conditions to thatand
statement (e.g.(and ... (memq major-mode '(c-mode lisp-mode)))
).So... I guess I did change the "source", but you can do the same thing with a piece of
defadvice
... it's all elisp, so the difference is minimal. There doesn't appear to be a setting to control this type of behavior.请参阅
paredit-space-for-delimiter-predicates
See
paredit-space-for-delimiter-predicates