LINUX.ORG.RU

Re: emacs, автовставка парных символов

Вообще определены готовая функция для пар скобок (): 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 ★★★★★ ()
Ответ на: Re: emacs, автовставка парных символов от catap

Re: emacs, автовставка парных символов

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

catap ★★★★★ ()
Ответ на: Re: emacs, автовставка парных символов от catap

Re: emacs, автовставка парных символов

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

(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 ★★★★★ ()
Ответ на: Re: emacs, автовставка парных символов от catap

Re: emacs, автовставка парных символов

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

Bohtvaroh ★★★★ ()
Ответ на: Re: emacs, автовставка парных символов от PartyZan

Re: emacs, автовставка парных символов

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



(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 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.