Я хочу, чтобы определенное изображение запускалось с определенными настройками во время запуска, как указано здесь.
StartupPreferencesLoader default executeAtomicItems: { (StartupAction
name: 'Start Literate Server'
code: [
| class |
class := Smalltalk at: #LiterateServer ifAbsent: [
Metacello new
baseline: 'LiterateSmalltalk';
repository: 'github://jingtaozf/literate-smalltalk';
onConflict: [ :ex | ex allow ];
load.
Smalltalk at: #LiterateServer ].
class ifNotNil: [ LiterateServer start ] ]
runOnce: false) }
Есть ли какой-нибудь способ добиться этого?
@tukan Это пользовательская настройка для конкретного изображения, которая позволяет редактировать и выполнять код Pharo с помощью Emacs. Я нашел несколько советов и руководство по этому процессу, которое мне еще предстоит попробовать.
Я думаю, что вам, возможно, лучше создать раскладку клавиш Emacs. Я не играл с этим, поэтому не знаю, насколько это должно быть сложно.
Вот быстрый способ создать новые пользовательские настройки в Pharo:
Сначала создайте класс для вашего приложения:
Object subclass: #VfclistsApplication
instanceVariableNames: ''
classVariableNames: 'emacsSetting'
package: 'VfclistPackage'
Сначала создайте метод установки и получения для вашей переменной.
Сеттер с ленивой инициализацией. Это сделано для того, чтобы настройка не была nil
. Ваша настройка никогда не должна быть nil
!
VfclistsApplication class>>emacsSetting
emacsSetting ifNil: [ emacsSetting := false ].
^ emacsSetting
геттер:
VfclistsApplication class>>emacsSetting: aValue
emacsSetting := aValue
В классе VfclistsApplication
создайте метод emacsSettingSettingsOn:
, который определяет настройку вашего приложения:
VfclistsApplication class>>emacsSettingSettingsOn: aBuilder
<systemsettings>
(aBuilder setting: #emacsSetting)
target: VfclistsApplication;
label: 'Emacs setting' translated;
description: 'A setting needed for the use of Emacs';
parent: nil.
Является ли переменная aBuilder
экземпляром какого-то класса Builder
?
@vfclists Я в отпуске. Builder — это экземпляр UI Builder.
Я нашел старое руководство, в котором объясняются шаги Буклет с советами и подсказками от 2017 года
Он включает в себя создание некоторых StartupActions, которые выполняются при загрузке изображения.
Мне нужны настройки запуска, которые специфичны для конкретного образа и, следовательно, сохраняются в файле в каталоге образа, а не в каталоге общих настроек для Pharo в целом или в общем каталоге версий виртуальной машины.
| items |
items := OrderedCollection new.
items add: (StartupAction
name: 'Start Literate Server'
code: [
| class |
class := Smalltalk at: #LiterateServer ifAbsent: [
Metacello new
baseline: 'LiterateSmalltalk';
repository: 'github://jingtaozf/literate-smalltalk';
onConflict: [ :ex | ex allow ];
load.
Smalltalk at: #LiterateServer ].
class ifNotNil: [ LiterateServer start ] ]
runOnce: false).
StartupPreferencesLoader default
addAtStartupInImageDirectory: items.
В результате появился файл startup.st
со следующим содержимым.
StartupPreferencesLoader default executeAtomicItems: {
StartupAction name: 'Start Literate Server' code: [
| class |
class := Smalltalk at: #LiterateServer ifAbsent: [
Metacello new
baseline: 'LiterateSmalltalk';
repository: 'github://jingtaozf/literate-smalltalk';
onConflict: [ :ex | ex allow ];
load.
Smalltalk at: #LiterateServer ].
class ifNotNil: [ LiterateServer start ] ].
}.
Вы хотите настроить параметры для своего приложения или настроить параметры, которые уже доступны в pharo?