?? htreg.cc
字號(hào):
config_editor->insert(new ht_registry_node(RNT_DWORD, "auto indent", new ht_registry_data_dword(1))); config_editor->insert(new ht_registry_node(RNT_DWORD, "tab size", new ht_registry_data_dword(8))); AVLTree *palette_analyser = new AVLTree(true); AVLTree *palette_generic = new AVLTree(true); AVLTree *palette_syntax = new AVLTree(true); AVLTree *palette_tags = new AVLTree(true); palette->insert(new ht_registry_node(RNT_SUBDIR, "analyser", new ht_registry_data_stree(palette_analyser))); AVLTree *analyser_default = new AVLTree(true); palette_analyser->insert(new ht_registry_node(RNT_SUBDIR, "default", new ht_registry_data_stree(analyser_default))); analyser_default->insert(new ht_registry_node(256, "default", create_empty_palette_entry())); analyser_default->insert(new ht_registry_node(256, "comment", create_empty_palette_entry())); analyser_default->insert(new ht_registry_node(256, "label", create_empty_palette_entry())); analyser_default->insert(new ht_registry_node(256, "number", create_empty_palette_entry())); analyser_default->insert(new ht_registry_node(256, "string", create_empty_palette_entry())); analyser_default->insert(new ht_registry_node(256, "symbol-character", create_empty_palette_entry())); palette->insert(new ht_registry_node(RNT_SUBDIR, "generic", new ht_registry_data_stree(palette_generic))); AVLTree *palette_generic_black = new AVLTree(true); AVLTree *palette_generic_blue = new AVLTree(true); AVLTree *palette_generic_cyan = new AVLTree(true); AVLTree *palette_generic_gray = new AVLTree(true); AVLTree *palette_generic_gray2 = new AVLTree(true); palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "desktop", new ht_registry_data_string("black"))); palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "dialog", new ht_registry_data_string("gray"))); palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "help", new ht_registry_data_string("cyan"))); palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "keyline", new ht_registry_data_string("black"))); palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "menu", new ht_registry_data_string("gray2"))); palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "special", new ht_registry_data_string("cyan"))); palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "window", new ht_registry_data_string("blue"))); palette_generic->insert(new ht_registry_node(RNT_SUBDIR, "black", new ht_registry_data_stree(palette_generic_black))); palette_generic->insert(new ht_registry_node(RNT_SUBDIR, "blue", new ht_registry_data_stree(palette_generic_blue))); palette_generic->insert(new ht_registry_node(RNT_SUBDIR, "cyan", new ht_registry_data_stree(palette_generic_cyan))); palette_generic->insert(new ht_registry_node(RNT_SUBDIR, "gray", new ht_registry_data_stree(palette_generic_gray))); palette_generic->insert(new ht_registry_node(RNT_SUBDIR, "gray2", new ht_registry_data_stree(palette_generic_gray2))); // black palette_generic_black->insert(new ht_registry_node(256, "body", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "text focused", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "text unfocused", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "text shortcut", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "text shortcut selected", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "text selected", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "text disabled", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "frame focused", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "frame unfocused", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "frame move-resize", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "frame killer", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "scrollbar", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "input focused", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "input unfocused", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "input selected", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "input clip-chars", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "button focused", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "button unfocused", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "button shadow", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "button shortcut", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "list focused & selected", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "list focused & unselected", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "list unfocused & selected", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "list unfocused & unselected", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "cluster focused", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "cluster unfocused", create_empty_palette_entry())); palette_generic_black->insert(new ht_registry_node(256, "cluster shortcut", create_empty_palette_entry())); // blue palette_generic_blue->insert(new ht_registry_node(256, "body", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "text focused", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "text unfocused", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "text shortcut", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "text shortcut selected", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "text selected", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "text disabled", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "frame focused", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "frame unfocused", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "frame move-resize", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "frame killer", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "scrollbar", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "input focused", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "input unfocused", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "input selected", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "input clip-chars", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "button focused", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "button unfocused", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "button shadow", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "button shortcut", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "list focused & selected", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "list focused & unselected", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "list unfocused & selected", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "list unfocused & unselected", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "cluster focused", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "cluster unfocused", create_empty_palette_entry())); palette_generic_blue->insert(new ht_registry_node(256, "cluster shortcut", create_empty_palette_entry())); // cyan palette_generic_cyan->insert(new ht_registry_node(256, "body", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "text focused", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "text unfocused", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "text shortcut", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "text shortcut selected", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "text selected", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "text disabled", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "frame focused", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "frame unfocused", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "frame move-resize", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "frame killer", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "scrollbar", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "input focused", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "input unfocused", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "input selected", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "input clip-chars", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "button focused", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "button unfocused", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "button shadow", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "button shortcut", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "list focused & selected", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "list focused & unselected", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "list unfocused & selected", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "list unfocused & unselected", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "cluster focused", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "cluster unfocused", create_empty_palette_entry())); palette_generic_cyan->insert(new ht_registry_node(256, "cluster shortcut", create_empty_palette_entry())); // gray palette_generic_gray->insert(new ht_registry_node(256, "body", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "text focused", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "text unfocused", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "text shortcut", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "text shortcut selected", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "text selected", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "text disabled", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "frame focused", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "frame unfocused", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "frame move-resize", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "frame killer", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "scrollbar", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "input focused", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "input unfocused", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "input selected", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "input clip-chars", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "button focused", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "button unfocused", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "button shadow", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "button shortcut", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "list focused & selected", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "list focused & unselected", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "list unfocused & selected", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "list unfocused & unselected", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "cluster focused", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "cluster unfocused", create_empty_palette_entry())); palette_generic_gray->insert(new ht_registry_node(256, "cluster shortcut", create_empty_palette_entry())); // gray2 palette_generic_gray2->insert(new ht_registry_node(256, "body", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "text focused", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "text unfocused", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "text shortcut", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "text shortcut selected", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "text selected", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "text disabled", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "frame focused", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "frame unfocused", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "frame move-resize", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "frame killer", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "scrollbar", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "input focused", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "input unfocused", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "input selected", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "input clip-chars", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "button focused", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "button unfocused", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "button shadow", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "button shortcut", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "list focused & selected", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "list focused & unselected", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "list unfocused & selected", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "list unfocused & unselected", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "cluster focused", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "cluster unfocused", create_empty_palette_entry())); palette_generic_gray2->insert(new ht_registry_node(256, "cluster shortcut", create_empty_palette_entry())); palette->insert(new ht_registry_node(RNT_SUBDIR, "syntax", new ht_registry_data_stree(palette_syntax))); AVLTree *c = new AVLTree(true); palette_syntax->insert(new ht_registry_node(RNT_SUBDIR, "c", new ht_registry_data_stree(c))); AVLTree *default1 = new AVLTree(true); c->insert(new ht_registry_node(RNT_SUBDIR, "default", new ht_registry_data_stree(default1))); default1->insert(new ht_registry_node(256, "whitespace", create_empty_palette_entry())); default1->insert(new ht_registry_node(256, "comment", create_empty_palette_entry())); default1->insert(new ht_registry_node(256, "identifier", create_empty_palette_entry())); default1->insert(new ht_registry_node(256, "reserved", create_empty_palette_entry())); default1->insert(new ht_registry_node(256, "integer number", create_empty_palette_entry())); default1->insert(new ht_registry_node(256, "float number", create_empty_palette_entry())); default1->insert(new ht_registry_node(256, "string", create_empty_palette_entry())); default1->insert(new ht_registry_node(256, "character", create_empty_palette_entry())); default1->insert(new ht_registry_node(256, "symbol", create_empty_palette_entry())); default1->insert(new ht_registry_node(256, "preprocess", create_empty_palette_entry())); default1->insert(new ht_registry_node(256, "meta", create_empty_palette_entry())); palette->insert(new ht_registry_node(RNT_SUBDIR, "tags", new ht_registry_data_stree(palette_tags))); AVLTree *tag_default = new AVLTree(true); palette_tags->insert(new ht_registry_node(RNT_SUBDIR, "default", new ht_registry_data_stree(tag_default))); tag_default->insert(new ht_registry_node(256, "edit-tag cursor select", create_empty_palette_entry())); tag_default->insert(new ht_registry_node(256, "edit-tag cursor edit", create_empty_palette_entry())); tag_default->insert(new ht_registry_node(256, "edit-tag cursor unfocused", create_empty_palette_entry())); tag_default->insert(new ht_registry_node(256, "edit-tag selected", create_empty_palette_entry())); tag_default->insert(new ht_registry_node(256, "edit-tag modified", create_empty_palette_entry())); tag_default->insert(new ht_registry_node(256, "edit-tag", create_empty_palette_entry())); tag_default->insert(new ht_registry_node(256, "sel-tag cursor focused", create_empty_palette_entry())); tag_default->insert(new ht_registry_node(256, "sel-tag cursor unfocused", create_empty_palette_entry())); tag_default->insert(new ht_registry_node(256, "sel-tag", create_empty_palette_entry())); // build node_types tree node_types = new AVLTree(true); struct bla { char *identifier; ht_registry_node_type type; create_empty_registry_data_func create_empty_registry_data; }; bla b[]= { {"subdir", RNT_SUBDIR, NULL}, {"symlink", RNT_SYMLINK, create_empty_symlink}, {"dword", RNT_DWORD, create_empty_dword}, {"string", RNT_STRING, create_empty_string}, {"raw", RNT_RAW, create_empty_raw}, }; for (uint i=0; i<sizeof (b) / sizeof b[0]; i++) { ht_registry_node_type_desc *d=new ht_registry_node_type_desc( b[i].type, b[i].identifier, b[i].create_empty_registry_data); node_types->insert(d); } ht_registry_node_type_desc *d=new ht_registry_node_type_desc( 256, "palette", create_empty_palette_entry); node_types->insert(d);#endif}void ht_registry::done(){ delete node_types; delete root;}int ht_registry::create_node(const char *key, ht_registry_node_type type){ const char *name; ht_registry_node *m; if (!splitfind(key, &name, &m)) return EINVAL; if (!valid_nodename(name)) return EINVAL; ht_registry_node_type_desc *d = get_node_type_desc(type, NULL); if (d && d->create_empty_registry_data) { ht_registry_node t(0, name, NULL); if (((ht_registry_data_stree*)m->data)->tree->find(&t) != invObjHandle) return EEXIST; ht_registry_data *data = d->create_empty_registry_data(); ht_registry_node *n=new ht_registry_node(type, name, data); ((ht_registry_data_stree*)m->data)->tree->insert(n); return 0; } return ENOSYS;}int ht_registry::create_subdir(const char *key){ const char *name; ht_registry_node *m; if (!splitfind(key, &name, &m)) return EINVAL; if (!valid_nodename(name)) return EINVAL; AVLTree *s=new AVLTree(true); ht_registry_node *n=new ht_registry_node(RNT_SUBDIR, name, new ht_registry_data_stree(s)); bool ins; ((ht_registry_data_stree*)m->data)->tree->findOrInsert(n, ins); if (!ins) { delete n; return EEXIST; } return 0;}int ht_registry::delete_node(const char *key){ Container *dir; ht_registry_node *n = find_entry_i(&dir, key, false); if (!n) return ENOENT; const char *s = strrchr(key, '/'); if (s) s++; else s=key; ht_registry_node ss(0, s, NULL); return dir->delObj(&ss) ? 0 : ENOENT;}void ht_registry::debug_dump(){#if 0// FILE *f=fopen("", ""); debug_dump_i(stderr, ((ht_registry_data_stree*)root->data)->tree, 0);// fclose(f);#endif}void ht_registry::debug_dump_i(FILE *f, Container *t, int ident){#if 0 ht_data_string *key=NULL; ht_registry_node *n; while ((key=(ht_data_string*)t->enum_next((ht_data**)&n, key))) { for (int i=0; i<ident; i++) fprintf(f, " "); fprintf(f, "%s ", key->value); switch (n->type) { case RNT_DWORD: fprintf(f, "= (uint32) %08d (%08x)\n", ((ht_data_dword*)n->data)->value, ((ht_data_dword*)n->data)->value); break; case RNT_STRING: fprintf(f, "= (string) \"%s\"\n", ((ht_data_string*)n->data)->value); break; case RNT_SYMLINK: fprintf(f, "=> \"%s\"\n", ((ht_data_string*)n->data)->value); break; case RNT_SUBDIR: fprintf(f, "{\n"); debug_dump_i(f, ((ht_registry_data_stree*)n->data)->tree, ident+1); for (int i=0; i<ident; i++) fprintf(f, " "); fprintf(f, "}\n"); break; case RNT_RAW: fprintf(f, "= (raw) nyi!\n"); break; default: { char *name = lookup_node_type_name(n->type); if (!name) name = "?"; fprintf(f, "= ('%s'=%d)\n", name, n->type); break; } } }#endif}ht_registry_node *ht_registry::enum_next(const char *dir, ht_registry_node *prevkey){ rec_depth = 0; ht_registry_node *n = find_entry_i(NULL, dir, true); if (n) { if (n->type != RNT_SUBDIR) return NULL; Container *t = ((ht_registry_data_stree*)n->data)->tree; if (prevkey) { return (ht_registry_node *)t->get(t->findG(prevkey)); } else { return (ht_registry_node *)t->get(t->findFirst()); } } return NULL;}ht_registry_node *ht_registry::enum_prev(const char *dir, ht_registry_node *prevkey){ rec_depth = 0; ht_registry_node *n = find_entry_i(NULL, dir, true); if (n) { if (n->type != RNT_SUBDIR) return NULL; Container *t = ((ht_registry_data_stree*)n->data)->tree; if (prevkey) { return (ht_registry_node *)t->get(t->findL(prevkey)); } else { return (ht_registry_node *)t->get(t->findLast()); } } return NULL;}bool ht_registry::find_any_entry(const char *key, ht_registry_node **node){ rec_depth = 0; ht_registry_node *n = find_entry_i(NULL, key, true); if (n) { *node = n; return true; } return false;}bool ht_registry::find_data_entry(const char *key, ht_registry_node **node, bool follow_symlinks){
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -