Hello World!

У цьому підручнику розглянуто мінімальну структуру плагіна Scheme. Деякі рядки — «шаблонні»: вони потрібні Lumi для завантаження файлу, навіть якщо ви їх ще не до кінця розумієте.

#!/usr/bin/env lumi-scheme-interpreter-0.1

На високому рівні ви:

  1. Визначите функцію
  2. Зареєструєте її, щоб вона з’явилася в базі даних процедур
  3. (Необов’язково) Додасте пункт меню
  4. Розмістите файл у папці плагінів

Визначення функції

Функція, або процедура, — це фрагмент коду з назвою та призначенням: вона приймає вхідні дані та повертає результат.

Вхід > Функція > Вихід

Реєстрація функції

Реєстрація — це додавання назви функції до списку, щоб 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")

Встановлення плагіна

  1. Перейдіть до Lumi -> Редагувати -> Параметри -> Папки -> Плагіни.
  2. Додайте папку плагінів репозиторію до списку.
  3. Створіть папку для плагіна та збережіть наведений вище приклад коду як hello-world.scm:
  • your-plug-ins-repo/hello-world/hello-world.scm
  1. Клацніть правою кнопкою миші файл hello-world.scm.
  2. Перейдіть до Властивості -> Дозволи -> Дозволити виконання файлу як програми.
  3. Перезапустіть Lumi.

Спробуйте плагін

Плагін має з’явитися в меню «Funky» головного вікна Lumi. Клацніть його — має з’явитися повідомлення «Hello world!». Спробуйте змінити код, наприклад текст повідомлення, і збережіть файл. Коли ви знову запустите плагін, зміни відобразяться без перезапуску Lumi.

Спробуйте змінити шлях меню. Наприклад, "<Image>/File" помістить плагін у меню «Файл», а "<Image>/File/Funky" створить новий розділ у меню «Файл». Це зручний спосіб налаштувати розташування плагіна та впорядкувати інструменти.