Схема PLT (Ракетка) - PullRequest
       1

Схема PLT (Ракетка)

2 голосов
/ 10 апреля 2011

Кто-нибудь имеет представление о том, как или если можно использовать автоматическое заполнение скобок в drScheme / Racket

Ответы [ 2 ]

4 голосов
/ 11 апреля 2011

DrRacket не выполняет автоматическое заполнение закрывающих скобок (я полагаю, это то, о чем вы спрашиваете), но он вставит правильную форму парен - так что вы можете быстро нажать ]]] несколько раз, пока выВы закрываете нужный уровень.

Но в качестве sidenote, намного легче работать на любом языке sexpr (или вообще любом другом языке), если вы сохраняете круглые скобки (всехформы), двойные кавычки и т. д. всегда сбалансированы.DrRacket позволяет легко это сделать, заставив Alt- ( вставить пару символов и оставив курсор посередине.Emacs делает то же самое, но DrRacket имеет похожие ключи для квадратных скобок, фигурных скобок и двойных кавычек.Этот стиль работы очень эффективен, поскольку вам никогда не нужно подсчитывать паренов или даже смотреть на основные моменты.Это также легко для работы с кодом, так как то же самое сохраняется тогда - при условии, что код имеет правильные отступы (что означает, что скобки исчезают из-за чего-то, на что вы не смотрите сознательно).

1 голос
/ 07 марта 2015

Я согласен с Eli в том, что всегда легче поддерживать баланс между паренами, и хотел бы добавить, что легко реализовать встроенное поведение и работать там, чтобы настроить все, что вы хотите.В DrRacket через «Редактировать / Связывания клавиш / Добавить пользовательские сочетания клавиш» вы можете добавить файл, подобный следующему, который добавляет привязку к «Control- #», чтобы вставить пару символов в курсор (или вокруг текущего выделения, если оно есть),После этого вам нужно перезапустить DrRacket.

#lang s-exp framework/keybinding-lang
(keybinding "c:#"
        (λ (text evt)
          (define a (send text get-start-position))
          (define b (send text get-end-position))
          (send text insert #\( a)
          (send text insert #\) (+ b 1))
          (send text move-position 'left)))
...