Spec-Zone.ru › Elisp

Функции ввода

В этом разделе описываются функции и переменные Lisp, относящиеся к чтению.

В функциях ниже stream обозначает поток ввода (см. предыдущий раздел). Если stream равно nil или опущено, оно по умолчанию принимает значение standard-input.

Ошибка end-of-file возникает, если при чтении встречается незавершенный список, вектор или строка.

Функция: read &optional stream

Эта функция считывает одно текстовое выражение Lisp из stream, возвращая его как объект Lisp. Это основная функция ввода Lisp.

Функция: read-from-string string &optional start end

Эта функция считывает первое текстовое выражение Lisp из текста в string. Она возвращает ячейку cons, у которой CAR — это выражение, а CDR — целое число, указывающее положение следующего оставшегося символа в строке (т.е. первого, не прочитанного).

Если указан start, чтение начинается с индекса start в строке (где первый символ находится по индексу 0). Если вы укажете end, чтение будет остановлено перед этим индексом, как если бы остальная часть строки отсутствовала.

Например:

(read-from-string "(setq x 55) (setq y 5)")
     ⇒ ((setq x 55) . 11)
(read-from-string "\"A short string\"")
     ⇒ ("A short string" . 16)
;; Read starting at the first character.
(read-from-string "(list 112)" 0)
     ⇒ ((list 112) . 10)
;; Read starting at the second character.
(read-from-string "(list 112)" 1)
     ⇒ (list . 5)
;; Read starting at the seventh character,
;;   and stopping at the ninth.
(read-from-string "(list 112)" 6 8)
     ⇒ (11 . 8)
Переменная: standard-input

Эта переменная содержит поток ввода по умолчанию — поток, который read использует, когда аргумент stream равен nil. По умолчанию это t, что означает использование минибуфера.

Переменная: read-circle

Если значение этой переменной не nil, это позволяет считывать циклические и общие структуры. См. Циклические объекты. Ее значение по умолчанию — t.

При чтении или записи из стандартных потоков ввода/вывода процесса Emacs в пакетном режиме иногда требуется убедиться, что любые произвольные двоичные данные будут читаться/записываться буквально, и/или что преобразование переводов строк в пары CR-LF и обратно не выполняется. Эта проблема возникает не на хостах POSIX, а только на MS-Windows и MS-DOS. Следующая функция позволяет управлять режимом ввода/вывода любого стандартного потока процесса Emacs.

Функция: set-binary-mode stream mode

Переключить stream в режим двоичного или текстового ввода/вывода. Если mode не nil, переключиться в двоичный режим, в противном случае — в текстовый. Значение stream может быть одним из stdin, stdout, или stderr. Эта функция в качестве побочного эффекта очищает любые ожидающие данные вывода из stream и возвращает предыдущее значение режима ввода/вывода для stream. На хостах POSIX она всегда возвращает значение, отличное от nil, и ничего не делает, кроме очищения ожидающих данных вывода.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Input-Functions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API