如何根据输入更改ido完成阅读的候选人?

时间:2016-03-04 13:40:06

标签: emacs autocomplete

我有一个ido-completed-read调用的候选列表,它代表了我系统上所有已安装的python模块。我想输入一个名字,然后输入一个。并让候选人列表更改为说明该模块中可用的类/功能。这可能吗?

1 个答案:

答案 0 :(得分:0)

不确定ido-completing-read,但通常在完成表中,您通过将完成表实现为函数来执行此操作,该函数需要3个参数(STRING PRED ACTION)其中 STRING 是要完成的当前前缀,` PRED 是传递给完成读取函数的谓词(如果你没有传递这样的谓词,你可以忽略这个参数),和 ACTION 是要做的操作。

该函数最好被认为是一个OO风格的对象,其中 ACTION 参数是方法。您需要实现几种方法(列出所有完成,找到当前最佳完成,测试完成,返回对应于“列出所有完成”的边界)(例如,如果“ab”上的“列出所有完成”方法返回列出("bob" "baby")而不是("a.bob" "a.baby"),那么“ab”上的完成边界应放在“b”周围)。

有关更详细的文档,请参阅(elisp)Programmed Completion节点。您可能还想查看completion-file-name-table函数的源代码,因为这是用于文件名完成的完成表,它使用了您正在寻找的相同行为。