我对elisp不太了解,我正在试图找出如何调用一个函数,该函数将属性列表作为其参数之一。特定的函数是来自rudel-join-session包的鲁德尔;我正在尝试设置它,这样Rudel将在Emacs启动时自动加入会话。我不确定属性列表是如何工作的,所以我尝试这样做:
(rudel-join-session (list :backend 'obby
:host "foo"
:port 6522
:username "username"
:color "blue"
:global-password ""
:user-password ""
))我得到了错误:
错误类型参数: listp,obby
我想是因为使用了错误的财产列表。知道正确的语法是什么吗?
发布于 2010-08-30 22:17:19
不,那是正确的财产清单。我注意到rudel.el中的这个片段:
(let* ((backend (cdr (plist-get info :backend)))这意味着:backend参数应该是一个反单元格。我所能找到的所有文档都假定rudel-join-session是交互式调用的,在这种情况下,后端参数是以编程方式生成的,我无法从对代码的随意细读中看出它应该是什么。但我要做的第一件事是
(rudel-join-session (list :backend '(dummy . obby) ...))这样,表达式(cdr (plist-get info :backend))将计算为符号obby,这可能是代码的其余部分所期望的。
发布于 2010-09-26 17:04:52
此外,您可能需要查看rudel-session-initiation.el的内容。
该文件包含变量rudel-configured-sessions,其文档字符串将更详细地解释“会话信息属性列表”。
在同一个文件中,有rudel-session-initiation-adjust-info,它通过用实际的后端对象替换后端引用来解析plist中的后端引用。这个函数的作用是用表单('obby . #<backend object>)的反单元格替换后端名称,比如'obby‘或"obby“。在内部,正如您所怀疑的那样,它使用rudel-backend-get。
https://stackoverflow.com/questions/3604383
复制相似问题