前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >让live-templet活起来

让live-templet活起来

原创
作者头像
黄希彤
修改2022-09-02 15:17:39
4581
修改2022-09-02 15:17:39
举报
文章被收录于专栏:黄希彤的专栏黄希彤的专栏

众所周知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里面,比如

代码语言:javascript
复制
<completion.contributor language="any" implementationClass="com.github.myname.myplugin.completion.contributors.MyCompletionContributor"></completion.contributor>

4 在MyCompletionContributor里面override 掉 fillCompletionVariants 方法,大概像这样

代码语言:javascript
复制
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

新开一个文件验证一下,已经可以实时动态生成随机推荐了。

在这个功能的基础上做了一个IDEA插件,可以按需生成推荐代码模板:

https://snippets.sou.ac.cn/plugin/idea_plugin.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档