Emacs: Как автоматически вставлять пробел после двоеточия в производных cc-mode - PullRequest
5 голосов
/ 31 октября 2011

Предположим, у меня есть этот код:

{
  "type"  : "home",
  "number":"212 555-1234"
}

Я хочу, чтобы мои emacs автоматически вставляли пробел после двоеточия в некоторых режимах.В частности, я использую javascript-режим на основе cc-mode.Это может помочь?

Спасибо заранее.

1 Ответ

4 голосов
/ 31 октября 2011

Самый простой способ сделать это будет примерно так (в ваших .emacs):

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

(add-hook 'js-mode-hook 'my-js-hook)

Более сложные альтернативы включают yasnippet или скелетный режим ,Они, вероятно, излишни для чего-то такого простого, но являются полезными инструментами, если вы хотите более сложные шаблоны.

РЕДАКТИРОВАТЬ: Я не знаю ни о какой магии cc-mode, которая допускает различное поведение внутри комментариев.Я не пользуюсь режимом 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 ": "))))))
...