|
|
@@ -306,6 +306,31 @@ void LuaApi::register_types() {
|
|
|
"active_theme", &ThemeManager::active_theme
|
|
|
);
|
|
|
|
|
|
+ // Config type
|
|
|
+ lua_.new_usertype<Config>("Config",
|
|
|
+ sol::no_constructor,
|
|
|
+ "set", [](Config& config, const std::string& key, sol::object value) {
|
|
|
+ if (value.is<bool>()) {
|
|
|
+ config.set(key, value.as<bool>());
|
|
|
+ } else if (value.is<int>()) {
|
|
|
+ config.set(key, value.as<int>());
|
|
|
+ } else if (value.is<std::string>()) {
|
|
|
+ config.set(key, value.as<std::string>());
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "get_bool", [](const Config& config, const std::string& key, sol::optional<bool> default_val) {
|
|
|
+ return config.get<bool>(key, default_val.value_or(false));
|
|
|
+ },
|
|
|
+ "get_int", [](const Config& config, const std::string& key, sol::optional<int> default_val) {
|
|
|
+ return config.get<int>(key, default_val.value_or(0));
|
|
|
+ },
|
|
|
+ "get_string", [](const Config& config, const std::string& key, sol::optional<std::string> default_val) {
|
|
|
+ return config.get<std::string>(key, default_val.value_or(""));
|
|
|
+ },
|
|
|
+ "has", &Config::has,
|
|
|
+ "keys", &Config::keys
|
|
|
+ );
|
|
|
+
|
|
|
// EditorCore type
|
|
|
lua_.new_usertype<EditorCore>("EditorCore",
|
|
|
sol::no_constructor,
|
|
|
@@ -346,6 +371,11 @@ void LuaApi::register_types() {
|
|
|
"copy_region_as_kill", &EditorCore::copy_region_as_kill,
|
|
|
"yank", &EditorCore::yank,
|
|
|
"yank_pop", &EditorCore::yank_pop,
|
|
|
+ // Registers
|
|
|
+ "copy_to_register", &EditorCore::copy_to_register,
|
|
|
+ "insert_register", &EditorCore::insert_register,
|
|
|
+ "copy_region_to_register", &EditorCore::copy_region_to_register,
|
|
|
+ "yank_from_register", &EditorCore::yank_from_register,
|
|
|
// Buffer management
|
|
|
"get_buffer_names", &EditorCore::get_buffer_names,
|
|
|
"get_buffer_by_name", &EditorCore::get_buffer_by_name,
|
|
|
@@ -355,7 +385,9 @@ void LuaApi::register_types() {
|
|
|
// Theme management
|
|
|
"theme_manager", sol::property([](EditorCore& e) -> ThemeManager& { return e.theme_manager(); }),
|
|
|
"set_theme", &EditorCore::set_theme,
|
|
|
- "active_theme", &EditorCore::active_theme
|
|
|
+ "active_theme", &EditorCore::active_theme,
|
|
|
+ // Configuration
|
|
|
+ "config", sol::property([](EditorCore& e) -> Config& { return e.config(); })
|
|
|
);
|
|
|
}
|
|
|
|