LINUX.ORG.RU

emacs: автоматическая вставка парных символов


0

0

Приветствую,

хочется, чтобы авто-вставка парных скобок (,[,{ происходила во всех режимах. Объявил так в конфиге:

;; enable skeleton-pair insert globally
(setq skeleton-pair t)
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "{") 'skeleton-pair-insert-maybe)

Но в c-mode автоматически вставляется только [, ( и } нет. Что нужно подкрутить? Или это не-правильно навязывать такое для C/C++-режимов, может быть эти режимы имеют свое видение насчет скобок?

Спасибо!

anonymous

Неужели никто не подскажет?

anonymous
()

Видемо они перекрываются локальными биндингами cc-mode.

Можно сделать так:

(setq skeleton-pair t) 
(defun set-pair-keybindings ()
  (local-set-key (kbd "(") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "[") 'skeleton-pair-insert-maybe)
  (local-set-key (kbd "{") 'skeleton-pair-insert-maybe))

(add-hook 'c-mode-hook
          'set-pair-keybindings)
(add-hook 'c++-mode-hook
          'set-pair-keybindings)

PS: Ещё можеш пошарится в http://www.emacswiki.org/cgi-bin/emacs-en?CategoryParentheses, может найдёш что-нибуть поинтереснее.

slackophile
()

попробуй поставить хук на c mode и устанавливать локально

anonymous
()
Ответ на: комментарий от slackophile

> (setq skeleton-pair t)
> (defun set-pair-keybindings ()

> (local-set-key (kbd "(") 'skeleton-pair-insert-maybe)

> (local-set-key (kbd "[") 'skeleton-pair-insert-maybe)

> (local-set-key (kbd "{") 'skeleton-pair-insert-maybe))


> (add-hook 'c-mode-hook

> 'set-pair-keybindings)

> (add-hook 'c++-mode-hook

> 'set-pair-keybindings)


Так работает. Спасибо. Попутный вопрос: у меня заведена ф-ция (взята с сайта Alex Ott'a) для С-режима, в которой я определяю различные настройки режима:

(defun my-c-mode-common-hook ()
...
)

(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

Я обнаружил, что парные скобки также работают, если внести такую строку в эту ф-цию:

(defun my-c-mode-common-hook ()
...
(local-set-key (kbd "[") 'skeleton-pair-insert-maybe)
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

Правильно ли так?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.