Emacs lisp char-table



我是一名学习emacs lisp的大一新生,因此我正在阅读emacs lisp手册。当我阅读6.6字符表时,我对如何使用字符表感到困惑。在那一章中,我找不到一个使用char表的好例子。

当然,elisp有一个由char表组成的语法表,语法表可以做很多事情。我想知道如何充分利用字符表,以及在哪些情况下我会使用它

感谢

我对Emacs Lisp编程不是很熟悉,但从数据结构的描述来看,我立刻想到了keymaps。事实证明,我是对的。

特别是在这种情况下,使用"父"字符表是有意义的:例如,当激活一个模式时,该模式可能有一个带有其提供的键绑定的键映射。在将当前关键帧映射设置为模式的关键帧映射之前,当前关键帧贴图可能会成为模式关键帧映射的父对象。这样,当模式的关键点映射不提供映射时,可以查询以前的关键点贴图以获得适当的映射。


以下是我如何在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的字符表只是一种特殊类型的数组,由字符而不是整数索引。Unicode中有很多字符,因此有必要对这样一个数组进行特殊实现,其中许多字符范围共享相同的值。

最新更新