我是一名学习emacs lisp的新生,因此我正在阅读emacs lisp手册。当我阅读6.6 Char-Tables时,我对如何使用char-table感到困惑。在该章中,我找不到使用char-table的好例子。
当然,elisp的语法表由char表和语法表组成,可以做很多事情。我想知道如何充分利用char-table,在哪种情况下我会使用它。
谢谢
我对Emacs Lisp编程不是很熟悉,但是仅从对数据结构的描述中,我立即想到了keymaps。而且,事实证明,我是对的。
在这种情况下,特别是使用“父”字符表是有意义的:例如,在激活模式时,该模式可能具有其提供的键绑定的键映射。在将当前键盘映射设置为模式键盘映射之前,当前键盘映射可能已成为该模式键盘的父级。这样,当模式的键盘映射不提供映射时,可以查询先前的键盘映射以获取适当的映射。
作为粗略的草图,这是我如何在C中实现char-tables的方法:
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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句