Я не очень хорошо знаком с программированием Emacs Lisp, но одна из описания структуры данных, я сразу же думаю о раскладках. И, как выясняется, I was right.
В частности, использование «родительских» таблиц символов имеет смысл в этом контексте: например, при активации режима этот режим, вероятно, имеет комбинацию клавиш с привязками клавиш, которые он предоставляет. Прежде чем устанавливать текущую раскладку в ключевую карту режима, текущая раскладка клавиатуры, возможно, является родительским ключом для клавиатуры. Таким образом, когда ключевая карта режима не предоставляет сопоставления, предыдущую раскладку (ы) можно запросить для соответствующего сопоставления.
Вот как я бы реализовать углеродно таблицы в C, как грубый эскиз:
struct char_table {
void * data[256 /* or how many char codes there are */];
struct char_table * parent;
};
void * lookup(
struct char_table * table,
char /* or a more suitable type for char codes */ key) {
void * result = table.data[key /* plus possibly some calculation */];
if (!result && table.parent) {
result = lookup(table.parent, key);
}
return result;
}
Если вы считаете, что документ Emacs нуждается в улучшении, сделайте свое (конкретное) предложение разработчикам, используя «M-x report-emacs-bug». – Drew