ZeroBrane:基于每个文件注册API

ZeroBrane:基于每个文件注册API,zerobrane,Zerobrane,我正在为我们的网站写一个ZeroBrane Studio插件,它工作起来很有魅力。包括自动完成 我现在想知道它是否能够只为一个文件注册LuaAPI 我需要它来提供全局符号的自动完成/文档,这些符号可能因脚本而异,但可以从引擎的附件文件中推断出来 总结:是否可以为单个文件注册api?例如在onEditorLoad()事件中 谢谢 格雷格 编辑: 我尝试了以下方法但没有成功: 本地功能开关编辑器(编辑器) 如果当前编辑器==编辑器,则 ide:打印(“同一编辑器”) 返回 结束 当前编辑器=编辑器

我正在为我们的网站写一个ZeroBrane Studio插件,它工作起来很有魅力。包括自动完成

我现在想知道它是否能够只为一个文件注册LuaAPI

我需要它来提供全局符号的自动完成/文档,这些符号可能因脚本而异,但可以从引擎的附件文件中推断出来

总结:是否可以为单个文件注册api?例如在
onEditorLoad()事件中

谢谢

格雷格

编辑:

我尝试了以下方法但没有成功:

本地功能开关编辑器(编辑器)
如果当前编辑器==编辑器,则
ide:打印(“同一编辑器”)
返回
结束
当前编辑器=编辑器
如果不是编辑的话
ide:打印(“空ed”)
返回
结束
lua\u file\u path=ide:GetDocument(编辑器).filePath
如果lua_file_path:match('/data/maps/'),则
ide:打印(“地图文件!”,键入(编辑器))
本地映射api=生成映射api(lua文件路径)
当前api=映射api
ide:AddAPI('lua','solarus_-map',map_-api)
其他的
ide:打印('其他文件')
如果是当前的api,那么
ide:RemoveAPI('lua','solarus_map'))
当前空气污染指数=零
结束
结束
结束
api={“baselib”、“solarus”、“solarus_map”},--在解释器表中
... -- 在插件表中:
onEditorFocusSet=函数(自身、编辑器)
开关编辑器(编辑器)
完,,
使用
solarus
api可以很好地完成工作,但是
solarus\u map
api的动态注册似乎没有被考虑在内

编辑2:

愚蠢的我,我一定是打错了,因为在检查和重写了一些东西之后,就像上面粘贴的代码一样。。。它起作用了!太棒了


唯一一个小问题是,当切换到一个我不想要
solarus\u map
API的文件时<代码>ide:RemoveAPI
不够。相反,我必须执行
ide:AddAPI('lua','solarus_-map',{})
以将API替换为空的API。我可以使用它。

总结一下,实现一个自定义api,它可以在不同的文件中更改:

  • 将api名称添加到解释器
  • onEditorFocusSet
    事件中,使用
    ide:AddAPI(…)
    更新API,如果需要为空/禁用,最终将其设置为
    {}
我的问题版本中的代码示例