Emacs:如何在cc模式导数中自动插入空格后的空格

Ily*_*rov 5 emacs colon cc-mode

假设我有这个代码:

{
  "type"  : "home",
  "number":"212 555-1234"
}
Run Code Online (Sandbox Code Playgroud)

我希望我的emacs在某些模式下自动在冒号后插入空格.特别是我正在使用基于cc模式的javascript模式.它有帮助吗?

预先感谢.

Tyl*_*ler 4

最简单的方法是这样的(在你的 .emacs 中):

(defun my-js-hook ()
  (local-set-key ":" '(lambda () (interactive) (insert ": "))))

(add-hook 'js-mode-hook 'my-js-hook)
Run Code Online (Sandbox Code Playgroud)

更复杂的替代方案包括yasnippetsketch 模式。对于如此简单的事情来说,它们可能有点过分了,但如果您想要更复杂的模板,它们是有用的工具。

编辑:我不知道任何 cc 模式魔法允许在评论中出现不同的行为。我不太使用 cc 模式,但我在手册中没有看到任何明显的内容。这里有一些代码可以实现您想要的功能:

(defun my-js-hook ()
  (local-set-key ":" 
             '(lambda () 
                (interactive)
                (let ((in-comment-p))
                  (save-excursion
                    (setq in-comment-p (comment-beginning)))
                  (if in-comment-p 
                      (insert ":")
                    (insert ": "))))))
Run Code Online (Sandbox Code Playgroud)