@@ -542,24 +542,28 @@ RIME_API Bool RimeSelectSchema(RimeSessionId session_id, const char* schema_id)
542
542
543
543
// config
544
544
545
- RIME_API Bool RimeSchemaOpen (const char *schema_id, RimeConfig* config) {
546
- if (!schema_id || !config) return False;
547
- Config::Component* cc = Config::Require (" schema" );
545
+ static Bool open_config_in_component (const char * config_component,
546
+ const char * config_id,
547
+ RimeConfig* config) {
548
+ if (!config_id || !config) return False;
549
+ Config::Component* cc = Config::Require (config_component);
548
550
if (!cc) return False;
549
- Config* c = cc->Create (schema_id );
551
+ Config* c = cc->Create (config_id );
550
552
if (!c) return False;
551
553
config->ptr = (void *)c;
552
554
return True;
553
555
}
554
556
557
+ RIME_API Bool RimeSchemaOpen (const char *schema_id, RimeConfig* config) {
558
+ return open_config_in_component (" schema" , schema_id, config);
559
+ }
560
+
555
561
RIME_API Bool RimeConfigOpen (const char *config_id, RimeConfig* config) {
556
- if (!config_id || !config) return False;
557
- Config::Component* cc = Config::Require (" config" );
558
- if (!cc) return False;
559
- Config* c = cc->Create (config_id);
560
- if (!c) return False;
561
- config->ptr = (void *)c;
562
- return True;
562
+ return open_config_in_component (" config" , config_id, config);
563
+ }
564
+
565
+ RIME_API Bool RimeUserConfigOpen (const char * config_id, RimeConfig* config) {
566
+ return open_config_in_component (" user_config" , config_id, config);
563
567
}
564
568
565
569
RIME_API Bool RimeConfigClose (RimeConfig *config) {
@@ -1008,6 +1012,7 @@ RIME_API RimeApi* rime_get_api() {
1008
1012
s_api.select_schema = &RimeSelectSchema;
1009
1013
s_api.schema_open = &RimeSchemaOpen;
1010
1014
s_api.config_open = &RimeConfigOpen;
1015
+ s_api.user_config_open = &RimeUserConfigOpen;
1011
1016
s_api.config_close = &RimeConfigClose;
1012
1017
s_api.config_get_bool = &RimeConfigGetBool;
1013
1018
s_api.config_get_int = &RimeConfigGetInt;
0 commit comments