【发布时间】:2011-10-31 12:46:39
【问题描述】:
假设我有这个代码:
{
"type" : "home",
"number":"212 555-1234"
}
我希望我的 emacs 在某些模式下自动在冒号后插入空格。 特别是我使用的是基于 cc-mode 的 javascript-mode。能帮上忙吗?
提前致谢。
【问题讨论】:
假设我有这个代码:
{
"type" : "home",
"number":"212 555-1234"
}
我希望我的 emacs 在某些模式下自动在冒号后插入空格。 特别是我使用的是基于 cc-mode 的 javascript-mode。能帮上忙吗?
提前致谢。
【问题讨论】:
执行此操作的最简单方法是这样的(在您的 .emacs 中):
(defun my-js-hook ()
(local-set-key ":" '(lambda () (interactive) (insert ": "))))
(add-hook 'js-mode-hook 'my-js-hook)
更复杂的替代方案包括yasnippet 或skeleton mode。对于这么简单的事情,它们可能有点矫枉过正,但如果您想要更复杂的模板,它们是有用的工具。
编辑:我不知道任何允许在 cmets 内进行不同行为的 cc 模式魔法。我很少使用 cc-mode,但我在手册中看不到任何明显的内容。这里有一些代码可以做你想做的事:
(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 ": "))))))
【讨论】:
comment-beginning 移动点作为副作用。所以它需要被包裹在save-excursion 中,否则: 将被插入到评论的开头。也许您可以将save-excursion 移动到 let 变量声明中?试试看!