我是一名關於學習emacs lisp的新生,因此我正在閱讀emacs lisp手冊。當我讀6.6 Char-Tables時,我對如何使用char-table感到困惑。在那一章中,我找不到一個使用char-table的好例子。Emacs lisp char-table
當然,elisp具有由char-table和syntax-table組成的語法表可以做很多事情。 我想知道如何很好地使用char-table,以及在哪些情況下我會使用它。
感謝
我是一名關於學習emacs lisp的新生,因此我正在閱讀emacs lisp手冊。當我讀6.6 Char-Tables時,我對如何使用char-table感到困惑。在那一章中,我找不到一個使用char-table的好例子。Emacs lisp char-table
當然,elisp具有由char-table和syntax-table組成的語法表可以做很多事情。 我想知道如何很好地使用char-table,以及在哪些情況下我會使用它。
感謝
我不是很熟悉的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的字符,表只是一個特殊的數組多數民衆贊成由字符而不是索引由整數。在Unicode中有很多字符,所以值得有一個特殊的實現這樣一個數組,其中許多字符範圍共享相同的值。
如果您認爲Emacs文檔需要改進,請使用'M-x report-emacs-bug'向開發人員提出您的(具體的)建議。 – Drew