световой стол paredit в окружении скобок

Как я могу взять форму и сделать ее аргументом другой функции, заключить ее в скобки одной командой?

В приведенном ниже примере предположим, что курсор начинается в начале, и я не перемещаю его повсюду.

(макс. 1 2 3) -> ((макс. 1 2 3)) -> (= 3 (макс. 1 2 3))

Таким образом, мои команды будут такими: «комбинация волшебных клавиш» -> «=» -> « » -> «3»


person shmish111    schedule 15.03.2014    source источник


Ответы (2)


Не существует единой встроенной команды, которая делает все это, однако вы можете привязать клавишу к нескольким командам.

Попробуйте поместить следующее в файл user.keymap (просто замените "ctrl-m" предпочитаемой комбинацией волшебных клавиш).

{:+ {...
     :editor {...
              "ctrl-m" [:paredit.select.parent 
                        (:editor.open-pair "(")
                         :paredit.move.down.backward 
                         :paredit.move.up.backward  
                         :editor.char-right]
              ...}}}

См. Я не могу найти шпаргалку по световому столу для Подробная информация о том, что делает каждая отдельная команда paredit, и настройка по мере необходимости!

person Daniel Neal    schedule 15.03.2014
comment
Спасибо. Я не могу найти шпаргалку по световому столу, это тоже был мой вопрос :) - person shmish111; 15.03.2014
comment
О да - теперь я это вижу! Мне нравятся ваши вопросы о Light Table - я все еще новичок в Light Table, и ответы на вопросы помогают мне лучше понять его, например. Я никогда не думал о том, чтобы попытаться сделать это раньше, хотя я знал, что это теоретически возможно. - person Daniel Neal; 15.03.2014

Вот еще один вариант, которым я пользуюсь постоянно. Начиная с «(max 1 2 3)», я бы набрал «= 3» перед открывающей скобкой, в результате чего получилось:

= 3 (max 1 2 3)

Затем я выбираю все выражение и ввожу открывающую скобку. LightTable автоматически вставляет закрывающую скобку в конце выделения:

(= 3 (max 1 2 3))

Вы все равно можете решить использовать привязку клавиш, но этот трюк полезно знать.

person DavidM    schedule 19.03.2014