LINUX.ORG.RU

Вообще определены готовая функция для пар скобок (): insert-parentheses

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

(defmacro set-key-bind-for-insert-pair-symbol (key begin-symbol end-symbol)
    `(global-set-key ,key (lambda (arg) (interactive "P") (insert-pair ,arg ,begin-symbol ,end-symbol))))

Использовать так:
(set-key-bind-for-insert-pair-symbol (kbd "\e(") ?\( ?\))
(set-key-bind-for-insert-pair-symbol (kbd "\e[") ?\[ ?\])
(set-key-bind-for-insert-pair-symbol (kbd "\e{") ?{ ?\})

И т.п. :)

catap ★★★★★
()
Ответ на: комментарий от catap

Да, там немного веселое поведение (в начале может быть не привычно), она обводит вокруг слово последнее

catap ★★★★★
()
Ответ на: комментарий от catap

Вот нормальный код, там ошибка была ;)

(defmacro set-key-bind-for-insert-pair-symbol (key begin-symbol end-symbol)
    `(global-set-key ,key (lambda (arg) (interactive "P") (insert-pair arg ,begin-symbol ,end-symbol))))

(set-key-bind-for-insert-pair-symbol (kbd "\e(") ?\( ?\))
(set-key-bind-for-insert-pair-symbol (kbd "\e[") ?\[ ?\])
(set-key-bind-for-insert-pair-symbol (kbd "\e{") ?{ ?\})

2moderator: а может просто замените код (defmacro) в верхнем сообщение и снесете это?

catap ★★★★★
()
Ответ на: комментарий от catap

Спасибо, в общем-то всё неплохо, только раздражает следующее: если перед открывающим символом есть буквенно-цифровые символы, то перед открывающим символом вставляется пробел.

Bohtvaroh ★★★★
() автор топика
Ответ на: комментарий от Bohtvaroh

А меня они раздражать сильно начали, пришлось читать документацию :)

PartyZan ★★★
()
Ответ на: комментарий от PartyZan

А так еще лучше будет, правда? 



(defmacro set-key-bind-for-insert-pair-symbol (key begin-symbol end-symbol &optional space)
  `(global-set-key ,key (lambda (arg) (interactive "P") 
			  (let (parens-require-spaces (quote ,space))
			    (insert-pair arg ,begin-symbol ,end-symbol)))))

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