Привет, мир!
В этом руководстве рассматривается минимальная структура плагина 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, базовом языке 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")Установите плагин
- Перейдите в Lumi -> Редактировать -> Настройки -> Папки -> Плагины.
- Добавьте в список папку плагинов repo.
- Создайте папку для плагина и сохраните приведенный выше пример кода как
hello-world.scm:
your-plug-ins-repo/hello-world/hello-world.scm
- Щелкните правой кнопкой мыши файл
hello-world.scm. - Перейдите в Свойства -> Разрешения -> Разрешить выполнение файла как программы.
- Перезапустите Люми.
Попробуйте плагин
Плагин теперь должен появиться в меню «Funky» в главном окне Lumi. Нажмите на него, и должно отобразиться сообщение «Hello world!» сообщение. Попробуйте изменить код, например изменить текст сообщения, и сохраните файл. Когда вы снова запустите плагин, ваши изменения будут отражены без перезапуска Lumi.
Попробуйте поэкспериментировать, изменив путь меню. Например, "<Image>/File" поместит его в меню «Файл», а "<Image>/File/Funky" создаст новый раздел в меню «Файл». Это отличный способ настроить место появления вашего плагина и упорядочить ваши инструменты.