Emacs php-mode 和 paredit

4
我想在php-mode中使用paredit,但它不会添加一个闭合的大括号“}”。这可能与电动大括号绑定到“{”有关吗?我该如何覆盖它?
谢谢。
3个回答

2

之前我为C语言写过这样的东西,但你也可以很容易地将其用于PHP:

(define-minor-mode c-helpers-minor-mode
  "This mode contains little helpers for C developement"
  nil
  ""
  '(((kbd "{") . insert-c-block-parentheses))
)

(defun insert-c-block-parentheses ()
  (interactive)
  (insert "{")
  (newline)
  (newline)
  (insert "}")
  (indent-for-tab-command)
  (previous-line)
  (indent-for-tab-command)
  )

(add-hook 'php-mode-hook 'c-helpers-minor-mode)

2
在php-mode中使用paredit是一个不好的主意 - 它更适合于Lisp代码编辑。然而,有一个非常好的通用开发替代方案 - autopair-mode。它非常容易使用,并以类似于大多数IDE中存在的方式插入大括号、方括号和引号。

当我打开大量缓冲区时,我发现autopair-mode非常缓慢。另一方面,paredit-mode总是感觉很快,这就是为什么我在任何地方都使用它的原因。 - Vicky Chijwani
Emacs 24 包含一个新的全局 electric-pair-mode,可能更快? - phils
1
жҳҜзҡ„пјҢжҲ‘е·Із»Ҹд»Һautopair-modeиҪ¬з§»еҲ°дәҶж–°зҡ„electric-pair-modeгҖӮе®ғзҡ„еҠҹиғҪз•Ҙеҫ®еҮҸе°‘пјҢдҪҶзЎ®е®һжӣҙеҝ«гҖӮ - Bozhidar Batsov

1
在我的经验中,当大量缓冲区打开时,autopair-mode感觉非常迟缓(另外,paredit-mode确保分隔符永远不会失衡,而autopair-mode则不然)。因此,如果像我一样,你绝对想使用paredit-mode,而且没有其他选择,那么看看this answer。在提供的elisp片段中,只需将slime-repl-mode-mapslime-repl-mode-hook替换为php的相应变量(最可能是php-mode-mapphp-mode-hook)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接