Hello World!
У цьому підручнику розглянуто мінімальну структуру плагіна Scheme. Деякі рядки — «шаблонні»: вони потрібні Lumi для завантаження файлу, навіть якщо ви їх ще не до кінця розумієте.
#!/usr/bin/env lumi-scheme-interpreter-0.1На високому рівні ви:
- Визначите функцію
- Зареєструєте її, щоб вона з’явилася в базі даних процедур
- (Необов’язково) Додасте пункт меню
- Розмістите файл у папці плагінів
Визначення функції
Функція, або процедура, — це фрагмент коду з назвою та призначенням: вона приймає вхідні дані та повертає результат.
Вхід > Функція > Вихід
Реєстрація функції
Реєстрація — це додавання назви функції до списку, щоб Lumi знала про неї.
(scheme-register-procedure "scheme-hello-world"...Прив’язка до меню
Це вказує Lumi, де знайти вашу функцію в системі меню.
(scheme-menu-register "scheme-hello-world" "<Image>/Funky")У головному меню з’явиться пункт «Funky». Змініть шлях, щоб розмістити плагін в іншому місці. Шлях <Image>/Funky означає, що плагін з’явиться в категорії меню Зображення. Замість <Image> можна використати <Tools>, <Filters> тощо — залежно від того, де ви хочете розмістити плагін.
Коментарі
У Scheme коментарі зазвичай починаються з ;; перед корисним рядком тексту. Скільки коментарів додавати — залежить від вашого досвіду: якщо кодите рідко, коментарі допоможуть; якщо постійно — код часто читається так само легко. Крім того, у функціональному програмуванні код часто стає настільки описовим, що читається як сценарій.
Синтаксис
У коді є невеликі правила розміщення елементів у рядку, щоб його було легко читати. Наприклад, у реченні після коми або крапки ставлять пробіл — це покращує читабельність.
Код може впорядковувати елементи подібним чином, що спочатку може виглядати дивно:
(define (function-name input-a
input-b
input-c))Приклад коду
Ось повний приклад. Більшість процедур Lumi мають префікс lumi-. Наприклад, lumi-message виводить рядок у налаштований обробник повідомлень.
#!/usr/bin/env lumi-scheme-interpreter-0.1
(define (scheme-hello-world)
;; Налаштувати обробник повідомлень для виводу в діалогове вікно GUI
(lumi-message-set-handler 0)
(lumi-message "Hello world!\n")
;; Налаштувати обробник повідомлень для виводу в консоль помилок
(lumi-message-set-handler 2)
(lumi-message "Hello world!\n")
;; Надіслати повідомлення в термінал — вікно ОС, з якого запущено Lumi
(display "Hello world!\n"))
(scheme-register-procedure "scheme-hello-world"
"Hello world!"
"A Scheme procedure plug-in"
"Mark Sweeney"
"Under GNU GENERAL PUBLIC LICENSE Version 3"
"2024")
(scheme-menu-register
"scheme-hello-world"
"<Image>/Funky")Встановлення плагіна
- Перейдіть до Lumi -> Редагувати -> Параметри -> Папки -> Плагіни.
- Додайте папку плагінів репозиторію до списку.
- Створіть папку для плагіна та збережіть наведений вище приклад коду як
hello-world.scm:
your-plug-ins-repo/hello-world/hello-world.scm
- Клацніть правою кнопкою миші файл
hello-world.scm. - Перейдіть до Властивості -> Дозволи -> Дозволити виконання файлу як програми.
- Перезапустіть Lumi.
Спробуйте плагін
Плагін має з’явитися в меню «Funky» головного вікна Lumi. Клацніть його — має з’явитися повідомлення «Hello world!». Спробуйте змінити код, наприклад текст повідомлення, і збережіть файл. Коли ви знову запустите плагін, зміни відобразяться без перезапуску Lumi.
Спробуйте змінити шлях меню. Наприклад, "<Image>/File" помістить плагін у меню «Файл», а "<Image>/File/Funky" створить новий розділ у меню «Файл». Це зручний спосіб налаштувати розташування плагіна та впорядкувати інструменти.