2014-10-23 5 views
1

Существует встроенная функция emacs для окружения области с круглыми скобками, так как я нашел ее здесь: https://stackoverflow.com/a/2952021/1635919. Есть ли аналогичный способ окружить регион долларом ($)?

C-h f insert-pair говорит, что эта функция способна окружать sexp любым персонажем, поэтому как связать окружение с $ M-$, как в связанном ответе?

Моего Emacs: GNU Emacs 24.3.1 (i686-ПК-Linux-гну, GTK + версии 3.10.7)

ответ

3

Вы можете дублировать то, что M- (делает, глядя на функцию вставки-скобки Все это делает вызов вставки пары с жестко заданные параметры, так что вы можете аналогово-сцеплять M- $ с функцией:

(defun insert-dolla-dolla-bills-yall (&optional arg) 
     (interactive "P") 
     (insert-pair arg ?\$ ?\$)) 
+0

Да, вот и все! :) Но как вы нашли код функции? Я пробовал все [эти советы] (https://www.gnu.org/software/emacs/manual/html_node/eintr/Finding-More.html), но не нашел никаких файлов .el или других файлов, содержащих источник , 'C-h f insert-roundembly' не говорит, где искать. – danek

+0

Интересно - возможно, что ваш дистрибутив linux по умолчанию не устанавливает источник elisp, а только байтовые версии. Если у вас есть источник elisp, когда вы выполняете функцию описания M-x, буфер справки имеет ссылку на местоположение исходного кода, где я нашел источник для пары вставки. Вы можете попробовать выполнить поиск в репозитории пакетов для своего дистрибутива, чтобы узнать, есть ли пакет исходного кода Emacs elisp. – neal

0

Там представляет собой набор инструментов, который обеспечивает это наряду с кучей связанного друга.

Это называется ar-dollar-region-atpt

Получить его здесь:.

https://launchpad.net/s-x-emacs-werkstatt/

+0

По некоторым причинам пакет ожидается ** ш-бек-end.el ** файл и не получить его (при оценке «(требуется„вещь на точке-утилиты)“Emacs сказал:» Не удается открыть нагрузки файл: sh-beg-end '). После того, как я загрузил sh-beg-end из [здесь] (https://raw.githubusercontent.com/pdee/pdee/master/sh-beg-end.el), все сработало хорошо. Вызов ar-region-dollar-atpt выполнил эту работу, спасибо :) – danek

+0

@danek Извините, это ошибка. Вы можете смело прокомментировать, что «(require ...» - это повлияет только на редактирование в режиме sh-script. Будет загружено исправление с последующим выпуском ASAP. –

+0

@danek Выпущена новая версия, в которой не должно быть этой ошибки: https : //launchpad.net/sx-emacs-werkstatt/+download –

1

Установить переменнуювключить (?\$ ?\$):

(add-to-list 'insert-pair-alist (list ?\$ ?\$)) 

Затем привязать ключ к insert-pair, чтобы делать то, что вы хотите:

(global-set-key (kbd "M-$") 'insert-pair) 
+0

Пробовал: вставил эти две строки в * scratch *, а затем сделал «M-x eval-current-buffer».Результат: «M- $» создает только один символ $ после отмеченной области. Я сделал что-то не так? – danek

+1

Извините, как-то я набрал '? \?', Когда я хотел набрать '? \ $'. Исправлено, выше. – Drew

1

Если вы используете библиотеку yasnippet (https://github.com/capitaomorte/yasnippet), он имеет встроенную поддержку для упаковки область окружающего звука с пользовательским кодом на любом конце выбранной области:

ПРИМЕЧАНИЕ. Похоже, что последняя версия yasnippet изменила название функции с yas/selected-text - yas-selected-text. Однако, похоже, также поддерживается поддержка совместимости с обратной версией.

# -*- mode: snippet -*- 
# name: dollar-surround 
# key: dollar-surround 
# binding: C-I $ 
# -- 
$`yas/selected-text`$ 
+0

Использование yasnippet версии 20141017.736 --- Предлагается отрезанный работает правильно. Благодаря :) – danek

Смежные вопросы