Загрузка
Как только вспомогательная функция вырастет, переместите ее в небольшой библиотечный файл. Это сохраняет фокус плагина и позволяет повторно использовать помощник в нескольких плагинах.
Создаем библиотечную функцию
Мы можем взять функцию отправки сообщения и создать новый файл с ее содержимым. Сохраните файл в папке репозитория, а не в части плагинов, возможно, на верхнем уровне;
/home/your-username/code/
├── scheme/
├── library/
│ └── send-message.scm
└── plug-ins/
└── hello-world/
└── hello-world.scm- scheme/: это ваш основной каталог для хранения кода Scheme.
- library/: здесь живут общие функции, такие как
send-message.scm. - плагины/: здесь хранятся ваши отдельные плагины.
- hello-world/: Папка для plug-in «Hello World!».
- hello-world.scm: Файл скрипта plug-in.
- hello-world/: Папка для plug-in «Hello World!».
- library/: здесь живут общие функции, такие как
Пример библиотечной функции send-message.scm
;; Функция для вывода сообщений в различные места назначения
(define (send-message message output)
(cond
;; Отправить в консоль сообщений
((eq? output 'error-console)
;; Установить обработчик на консоль сообщений
(lumi-message-set-handler 2)
(lumi-message message))
;; Отправить в диалоговое окно GUI
((eq? output 'gui)
;; Установить обработчик на диалог GUI
(lumi-message-set-handler 0)
(lumi-message message))
;; Отправить в окно терминала
((eq? output 'terminal)
;; Вывод terminal обрабатывается с помощью display
(display message)))
;; Восстановить обработчик сообщений по умолчанию для консоль сообщений
(lumi-message-set-handler 2))Загрузите библиотечную функцию
Мы можем загрузить эту библиотечную функцию с помощью команды Scheme load;
Загрузка файла библиотеки:
#!/usr/bin/env lumi-scheme-interpreter-0.1
(load "/home/mark/code/github/script-plugins/funky-library/send-message.scm")
(define (scheme-hello-world)
(let ((message "Hello world!\n"))
(send-message message 'gui)
(send-message message 'error-console)
(send-message message 'terminal)))
(scheme-register-procedure "scheme-hello-world"
"Hello world!"
"A Scheme procedure plug-in refactored"
"Mark Sweeney"
"Under GNU GENERAL PUBLIC LICENSE Version 3"
"2024")
(scheme-menu-register
"scheme-hello-world"
"<Image>/Funky")Эй! Теперь у нас есть что-то более простое и короткое для чтения, которое описывает себя без комментариев. Это удовлетворительный вывод рефакторинга.