Emacs часто называют операционной системой. Это не совсем так, но он умеет управлять программами и утилитами поверх ядра ОС. Встроенный доступ к системным сервисам (файловая система, сеть) и умение запускать сторонние программы превращают Emacs в универсального клиента. Пользователи могут закрывать почти все свои задачи прямо в нём — отсюда и идея «жить только в Emacs».
Клиент-серверная модель тут работает так: клиент отправляет запрос, сервер возвращает ответ. Клиент отвечает за три вещи: пользовательский интерфейс (UI), связь с сервером (Client Edge) и локальное хранение данных (Local Database). Для каждого из этих пунктов Emacs предоставляет встроенные библиотеки — от работы с сетью до парсинга JSON. Если же есть готовая консольная утилита, она становится «сервисом»: Emacs просто дёргает её через shell.
Всё это пишется на языке Elisp. Он динамический, код можно менять на лету, что позволяет гибко комбинировать библиотеки и шелл-команды.
В статье есть конкретный пример — клиент для сервиса погоды wttr.in. Функция wttr запрашивает у пользователя локацию, собирает URL через wttr--request-url, передаёт его в fetch-json-as-hash-table. Та скачивает страницу через url-retrieve-synchronously, срезает HTTP-заголовки и парсит JSON в hash-таблицу Elisp. Функция wttr--report-message достаёт из этой таблицы название региона, страны, температуру в Цельсиях и Фаренгейтах и описание погоды. Всё это выводится в мини-буфер. Весь файл wttr.el занимает 67 строк.
Автор предлагает и альтернативу: если не хочется писать сложный Elisp, можно сделать Python-скрипт weather, а в Emacs — всего одну короткую функцию, которая вызывает его через shell-command-to-string. Shell-команда в таком случае и есть «сервис».
Итог простой: в Emacs любой внешний ресурс или утилита превращается в сервис, а Elisp позволяет связывать их быстрыми и гибкими клиентами.