На других языках: [[gschem repl|English]]

====== Использование REPL в gschem ======
===== Встроенные графические функции REPL в gschem =====
Поле ввода процедур guile открывается по нажатию клавиши <key>:</key>
(двоеточие). После этого пользователь может вводить команды в
появившемся поле ввода и наблюдать результат выполнения команд в
окне журнала.

===== REPL в фоновом терминале =====
В текущей версии репозитория geda-gaf (на 09.02.2016) имеется
дополнительная функция вызова REPL в фоновом терминале,
запускаемая по нажатию <key>f</key><key>Shift-r</key>.

Учтите, что в данный момент можно запустить её несколько раз, что
может привести к путанице в терминале. Кроме того, есть
вероятность закрыть работающую версию gschem, при использовании
некоторых сочетаний клавиш.

При работе в терминале можно подключить функции библиотеки
//readline//. Для этого в терминале следует набрать:
<code>
(use-modules (ice-9 readline))
(activate-readline)
</code>

===== Внешний графический REPL =====
Для запуска внешнего графического окна, предоставляющего функции
REPL, необходима библиотека работы с REPL из проекта
//guile-gnome//. В Debian, например, для её использования необходимо
установить пакет //guile-gnome2-gtk//. Для вывода окна наберите в
поле встроенного REPL:
<code>
(use-modules (gnome-2) (gnome gtk) (gnome gtk graphical-repl))
(guile-gtk-repl)
</code>

===== REPL в любом терминале =====
Для запуска REPL в терминале нужно открыть сокет изнутри gschem. Для
этого надо загрузить системный модуль для REPL и вызвать функцию
порождения сервера.
<code>
(use-modules (system repl server))
(spawn-server)
</code>

Без параметров функция запуска сервера работает с портом 37146,
используемым в guile по умолчанию. Для использования другого порта
можно задать, например:
<code>
(spawn-server 1234)
</code>

При открытии порта учтите соображения по безопасности, указанные здесь
https://lists.gnu.org/archive/html/guile-devel/2010-10/msg00044.html.

Дальше необходимо просто подключиться к нему любой программой,
которая может работать с сокетом, например, используя **telnet**,
**netcat** или другую программу. Примеры использования **telnet**:
<code>
$ telnet localhost 37146
</code>

Пример использования **netcat**:

<code>
$ nc localhost 37146
</code>

В этом случае интерфейс //readline// работать не будет.

Пользователи **Emacs** для работы с REPL могут использовать чудесное
окружение //Geiser//.
Для этого нужно установить данный пакет, запустить сервер REPL в
gschem и подключиться к нему в **Emacs** с помощью <key>M-x</key>
**''connect-to-guile''**.