Функции ввода
В этом разделе описываются функции и переменные 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