当前位置:网站首页>让live-templet活起来
让live-templet活起来
2022-08-05 18:55:00 【黄希彤】
众所周知Jetbrains的代码片段live-templet其实并不怎么live,编写完了以后就一直放在那儿,直到下次更新它。
虽然官方说可以用“Add Read-Only source”功能让live-templet与远程的只读源同步,实际上只读源的功能一直都不稳定,官方论坛吐槽也很多,然后file-templet和live-templet的远程同步功能似乎也并不可用。
所以如果需要一个可以更服务器同步,团队内组织内共享的活的live-templet库,要么去买一些收费的插件比如cacher,要么就要自己通过Completion Contributor来模拟lve-templet。扒拉了一下文档,简单来说大概要这么做:
1 到github上下载插件模板工程到本地,用IDEA打开。readme里面要求安装的plugins也都安装上。
2 在src/main/kotlin下面创建自己的package和kotlin class,比如 com.github.myname.myplugin.completion.contributors 和 MyCompletionContributor.kt
3 到 src/main/resources/META-INF/plugin.xml 里的extensions里面添加completion.contributor段,把上一步的class注册到IDE里面,比如
<completion.contributor language="any" implementationClass="com.github.myname.myplugin.completion.contributors.MyCompletionContributor"></completion.contributor>4 在MyCompletionContributor里面override 掉 fillCompletionVariants 方法,大概像这样
package com.github.myname.myplugin.completion.contributors
import com.intellij.codeInsight.completion.*
import com.intellij.codeInsight.lookup.LookupElementBuilder
open class MyCompletionContributor() : CompletionContributor() {
override fun fillCompletionVariants(parameters: CompletionParameters, result: CompletionResultSet) {
println(parameters.editor.document.text)
result.addElement(LookupElementBuilder.create("random suggestion1 " + Math.random().toString()))
result.addElement(LookupElementBuilder.create("random suggestion2 " + Math.random().toString()))
result.addElement(LookupElementBuilder.create("random suggestion3 " + Math.random().toString()))
result.addLookupAdvertisement("只是一个测试而已")
}
}5 拉下 help 菜单搜索 gradle,打开gradle窗口,选择 Run Plugin
新开一个文件验证一下,已经可以实时动态生成随机推荐了。
边栏推荐
- Alibaba billion-level concurrent system design manual has been open source (2022 latest version)
- EdgeNeXt轻量化学习笔记
- CANoe—基于14229+15765的UDS培训(CAN+CANFD)—无DIVA的UDS自动化测试用例CAPL脚本
- 数据库 GUI 工具 CH Visualize 新 UI 布局抢先看
- 工作之余如何提高个人技术水平
- rhcsa 第一次作业
- Kubernetes的整体架构
- 力扣每日一题-第49天-724. 寻找数组的中心下标
- 上新 | 从0到1数据库内核实战教程直播开始啦
- 防火墙的目标地址转换和源地址转换
猜你喜欢
随机推荐
MetaFormer/PoolFormer学习笔记及代码
【 Jmeter聚合报告 】
真正靠谱的手机清理APP与方法,轻松帮你干掉几个G垃圾!
kettle庖丁解牛第34篇之常用转换组件之Add XML
tiup cluster destroy
pgsql数据库手写自动生成雪花id函数教程
大型数据中心云平台建设中网络的知识及实践
别再用QQ的破数字邮箱了,你其实还有注册姓名全拼微软邮箱的机会
PBX与VoIP:它们之间有什么区别?
元器件选型实例(一、如何选一款合适的 DC-DC )
知识点滴 - ODBC和ADO的区别
国内Api行业,可以内卷到什么程度?
Redis(三)session共享
使用 Monaco Editor 开发 SQL 编辑器
C陷阱:数组越界遍历,不报错却出现死循环?从内存解析角度看数组与局部变量之“爱恨纠葛”
jd试用h5st参数探索
IDEA运行参数配置
【Redux】如何实现多组件数据共享
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
tiup cluster audit








