de-vraag
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Анонимный пользователь
Вопрос

Как включить отступ в нижней схеме?

Кажется, что в нижней по умолчанию схеме нет отступов. По крайней мере, когда я делаю M-x run-scheme , результирующий реплик вообще не отделяет мой код.

Как я могу это изменить? Предпочтительно, без каких-либо изменений, например, для гейзеров или других оберток.

1 2016-03-03T23:43:35+00:00 1
Emacs
indentation
inferior-buffer
scheme
Jorriss
4-го марта 2016 в 1:01
2016-03-04T01:01:06+00:00
Дополнительно
Источник
Редактировать
#56789084

Я думаю, проблема в том, что RET , вероятно, отображается на comint-send-input , который не имеет никакого отступа.

Что я делаю, это map Cj to newline-and-indent и оставить RET сопоставлен с comint-send-input , Поэтому я нажимаю C-j для ввода новой строки и отступаю новую строку, или RET , чтобы отправить форму для оценки. (На самом деле я сопоставляю C-j с paredit-newline , но newline-and-indent должен работать, если вы не используете Paredit).

Конечно, вы можете отменить их и использовать RET для newline-and-indent с помощью Cj для comint-send-input код>.

В качестве примера сопоставления одного из этих ключей это будет отображать C-j в newline-and-indent :

(with-eval-after-load 'cmuscheme
  (define-key inferior-scheme-mode-map (kbd "C-j") #'newline-and-indent))

( cmuscheme по историческим причинам является именем пакета, который реализует inferior-scheme-mode , то есть схему REPL.)

<Сильный> Edit:

Вот что-то, что, кажется, работает, хотя я не тестировал его широко:

(defun comint-send-input-indent ()
  (interactive)
  (comint-send-input)
  (unless (save-excursion (forward-char -1)
                          (eq (field-at-pos (point)) 'output))
    (indent-for-tab-command)))

(with-eval-after-load 'cmuscheme
  (define-key inferior-scheme-mode-map (kbd "RET") #'comint-send-input-indent))

Идея состоит в том, чтобы вызвать comint-send-input , а затем проверить, находится ли точка (курсор) непосредственно перед приглашением. Если это не так (потому что comint-send-input только что ввел новую строку), вызовите indent-for-tab-command , что соответственно отложит строку.

Другое редактирование:

С другой стороны, я думаю, что это определение, вероятно, имеет больше смысла:

(defun comint-send-input-indent ()
  (interactive)
  (let ((parens (or (car (syntax-ppss)) 0)))
    (if (zerop parens)
        (comint-send-input)
      (newline-and-indent))))

Для получения дополнительной информации см. <Код> C-h f синтаксис-ppss RET (и, лучше, C-h f parse-partial-sexp RET ). Краткая версия заключается в том, что они могут рассказать нам, насколько глубока вложенность парных в точке, поэтому мы можем использовать это, чтобы решить, следует ли newline-and-indent или comint-send-input код>.

2
0
Похожие сообщества 1
Scheme — русскоязычное сообщество
Scheme — русскоязычное сообщество
149 пользователей
Scheme — это функциональный язык программирования, один из трёх наиболее популярных в наши дни диалектов языка Лисп. Группа про GNU Guix: @gnu_guix_ru Группа про Lisp @lisp_forever Группа про Emacs @emacs_ru Группа про Clojure @clojure_ru
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Roxana Elizabeth CASTILLO Avalos
Зарегистрирован 1 день назад
2
Hideo Nakagawa
Зарегистрирован 2 дня назад
3
Sergiy Tytarenko
Зарегистрирован 4 дня назад
4
shoxrux azadov
Зарегистрирован 6 дней назад
5
Koreets Koreytsev
Зарегистрирован 1 неделю назад
© de-vraag 2022
Источник
emacs.stackexchange.com
под лицензией cc by-sa 3.0 с атрибуцией