Привет, мир!

В этом руководстве рассматривается минимальная структура плагина 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, базовом языке 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)

  ;; Set the message handler to output the message to a GUI dialog box
  (lumi-message-set-handler 0)
  (lumi-message "Hello world!\n")

  ;; Set the message handler to output the message to the Error Console
  (lumi-message-set-handler 2)
  (lumi-message "Hello world!\n")

  ;; Send the message to the terminal, the OS window that launched 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. Добавьте в список папку плагинов repo.
  3. Создайте папку для плагина и сохраните приведенный выше пример кода как hello-world.scm:
  • your-plug-ins-repo/hello-world/hello-world.scm
  1. Щелкните правой кнопкой мыши файл hello-world.scm.
  2. Перейдите в Свойства -> Разрешения -> Разрешить выполнение файла как программы.
  3. Перезапустите Люми.

Попробуйте плагин

Плагин теперь должен появиться в меню «Funky» в главном окне Lumi. Нажмите на него, и должно отобразиться сообщение «Hello world!» сообщение. Попробуйте изменить код, например изменить текст сообщения, и сохраните файл. Когда вы снова запустите плагин, ваши изменения будут отражены без перезапуска Lumi.

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