插件
插件是一段跟着编辑器一起运行的代码,用来改编辑器本身的行为:给积木加一种选择方式、让下拉 菜单能搜、往顶栏加一个按钮、开一个自己的面板。Gandi 3.0 里有两种:内置插件跟编辑器 一起发版;外部插件由使用者填一个网址装进来。

打开方式#
顶栏右边的齿轮「设置」→ 左边选「插件」。这一页管的是「装不装、开不开」;插件自己 的选项在下面那一页「插件选项」里。
内置插件#
编辑器自带四个,不用填地址,也不联网。它们改的都是积木库和画布本身的行为,所以界面上 不会因此多出或者少掉一块面板,变的是那几个手势和菜单认不认。
| 名字 | 做什么 | 开关 | 细讲 |
|---|---|---|---|
| 选择特定积木 | Ctrl 框选整批拖出、Ctrl 拖出单块,Alt 拖动复制 | 没有,一直开着 | plugin-batch-select.md |
| 下拉可搜索 | 下拉菜单可以打字筛选,积木输入框里能搜变量和积木 | 没有,一直开着 | plugin-dropdown-search.md |
| 查找自制积木的定义 | 在自制积木的调用块上右键,跳到它的定义处 | 没有,一直开着 | plugin-find-definition.md |
| 积木输入框增强 | 积木的输入框可以换行,长文本展开成编辑面板 | 设置 › 插件 | plugin-block-input-editor.md |
前三个是编辑器本身的一部分:框选、跳到定义、下拉搜索就是这个编辑器该有的样子,所以 它们永远装着,设置里也不列它们。写成插件只是因为这几件事的实现形态如此:一段独立的代码, 动的是积木库而不是界面。
「积木输入框增强」是可选的,默认开着。设置 › 插件 那一页上一个开关就能关掉它,关掉的 选择会记住,下次打开编辑器还是关着的。表格里那一句就是它在设置页上写的原话。
一个插件能往编辑器里加什么#
内置和外部走的是同一套约定:一个插件就是 {id, name, setup},装上时调一次 setup,
卸载时调一遍它返回的收尾函数。setup 接收的上下文里有虚拟机、积木库和当前那个积木
工作区,还有一份只属于这个插件的设置存取(存在这台浏览器里)。
它可以注册三样东西:顶栏入口(画在顶栏那排面板开关的最后,单独隔出来一段)、 设置项(按插件分组列在「插件选项」页)、面板(跟内置面板一样能停靠、能浮起来、 能进布局)。四个内置插件都没有注册入口和面板,只有三个注册了设置项,所以「插件选项」那页 只有三组,「查找自制积木的定义」没有可调的东西。
装一个外部插件#
在「装一个插件」下面的输入框里填地址,按回车或者点「装上」。装载时按钮变成「装载中…」, 装不上会在下面用红字说明原因(地址取不到,或者取到了但没导出插件)。
页面上的这句提醒需要认真对待:
插件是一段在编辑器里跑的代码,装之前请确认来源可信。
装好的插件列在「装好的(N)」下面,一行是名字、说明和它的地址,右边一个「卸载」。 内置插件不出现在这个列表里:它们没有地址可显示,也不提供卸载按钮。
装过的地址会记下来,下次打开编辑器自动装回去。同一个地址再装一次是「先卸掉再装」,不会 越装越多。
插件选项#

插件注册的设置项都在这一页,按插件分组。改动当场生效,也会记住。一个插件都没有可调选项 时,这页写着「还没有可调的选项。插件装上并打开之后,它的设置会出现在这里。」
细节#
- 一个装不上,不影响别的。 打开编辑器时会把上次开着的都装回来;某一个
setup里 出错,只有它自己没装上,其余照常。 - 卸载清理干净。 插件注册过的入口、设置项、面板一并清掉,它开着的面板也从当前布局 里关掉。
- 面板还在、插件不在了(上次装过、这次没装上),那一格会写「这个面板来自一个已经 不在的插件。」,不会留一块空白。
- 插件的面板自己渲染出错时,那一格会写「插件面板出错:…」,不会影响整个布局。
- 「积木输入框增强」的开关、外部插件的地址、每个插件自己的设置,都存在这台浏览器里, 换一台机器或者清了浏览器数据就回到默认(内置全开、没有外部插件)。