首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改Paredit格式

更改Paredit格式
EN

Stack Overflow用户
提问于 2009-05-27 00:38:44
回答 3查看 1.7K关注 0票数 10

在C等编程模式下使用paredit时,当我试图调用函数时,键入(会在paren前插入一个空格,只剩下:

代码语言:javascript
复制
foo ()

有没有办法在不改变paredit的来源的情况下禁止插入空格?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-27 03:36:21

好吧,paredit的工作方式是,它检查语法表,看看您是否在单词/符号/等后面插入一对,在这种情况下,它会强制插入一个空格。您需要覆盖该功能-这可以通过许多不同的方式来完成:建议、重新定义函数、确定空间、更改语法表等。

我会试着直接说:

代码语言:javascript
复制
(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)))))))

这显然适用于所有使用paredit的地方。如果您想要更多特定于模式的内容,可以向该and语句添加一些条件(例如,(and ... (memq major-mode '(c-mode lisp-mode))))。

所以..。我想我确实改变了“源代码”,但你也可以用一段defadvice做同样的事情……都是elisp,所以差别很小。似乎没有设置来控制这种类型的行为。

票数 12
EN

Stack Overflow用户

发布于 2011-02-15 01:53:03

请参阅paredit-space-for-delimiter-predicates

票数 5
EN

Stack Overflow用户

发布于 2009-05-27 07:17:58

嗯,Paredit是编辑由S表达式构建的语言的理想选择。如果你喜欢它自动插入结束符的方式,可以使用feature skeleton-pair

代码语言:javascript
复制
(setq skeleton-pair t)
(global-set-key "(" 'skeleton-pair-insert-maybe)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/913449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档