RCP学习:内容提示\代码提示\代码补全

简介: 我们使用eclipse的java编辑器的时候,会经常用到alt+/触发的自动代码补全 这个并不仅仅是SWT/JFACE框架下的内容更是属于eclipse先说明一下这个概念,现在的eclipse是基于osgi框架的,osgi是一个可热插拔的以bundle为基本元素的灵活管理规范。

我们使用eclipse的java编辑器的时候,会经常用到alt+/触发的自动代码补全

这个并不仅仅是SWT/JFACE框架下的内容
更是属于eclipse
先说明一下这个概念,现在的eclipse是基于osgi框架的,osgi是一个可热插拔的以bundle为基本元素的灵活管理规范。eclipse提供了一个osgi规范的实现叫做equinox,eclipse的插件(plugin)即是bundle。
swt/jface则是用于构建eclipse的UI框架。
但是,你所说的这个问题,其实看下eclipse的编辑器如何实现的就能明白了。
去官网下载一个eclipse for rcp含源码版本,即可看到代码提示是怎么实现的。

我这里说下原理。
1、java编辑器属于jdt(java develop tool)插件,这是正常的eclipse都会有的一组插件
2、提示代码的内容是来自于数据字典,eclipse会随时维护所有工作空间、jre内的class,用于编译和索引
3、快捷键来自于视图(viewer)的setKeyHandler
4、定位你指定的内容则是编辑器的mark记录的
5、而最关键的,代码提示,则是ISourceViewer.CONTENTASSIST_PROPOSALS(内容辅助提示)
以上都是属于eclipse插件开发方面的知识

当然,你可以自己利用swt/jface来实现一个类似的,代码如下:
首先你需要有一个org.eclipse.jface.text.source.SourceViewer,这是最基本的控件。
为该SourceViewer设置一个监听,该监听触发一个ISourceViewer.CONTENTASSIST_PROPOSALS操作:

  1. sv.appendVerifyKeyListener(newVerifyKeyListener(){
  2.             @Override
  3.             publicvoid verifyKey(VerifyEvent event){
  4.                 if(event.stateMask == SWT.ALT && event.character =='/'){
  5.                     sv.doOperation(ISourceViewer.CONTENTASSIST_PROPOSALS);
  6.                 }
  7.             }

然后,你需要重写org.eclipse.jface.text.source.SourceViewerConfiguration#getContentAssistant(ISourceViewer sourceViewer),用于定义触发CONTENTASSIST_PROPOSALS操作之后的动作

你可以自己用dialog之类的来实现代码提示,当然更推荐使用:
org.eclipse.jface.text.contentassist.ContentAssistant#setContentAssistProcessor(IContentAssistProcessor processor, String contentType)
来完成操作。

eclipse本身就是一个完整的样例,你可以参照jdt对SourceViewer的使用来完成以上。

参考:

org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer
目录
相关文章
|
5月前
VScode用户自定义代码片段
VScode用户自定义代码片段
44 0
|
5月前
|
Python
优化 ParamValidator,让编辑器Pycharm智能提示校验方法
优化 ParamValidator,让编辑器Pycharm智能提示校验方法
74 0
|
5月前
IDEA设置代码自动提示不区分大小写
IDEA设置代码自动提示不区分大小写
358 1
IDEA设置代码自动提示不区分大小写
|
5月前
IDEA快捷注释格式
IDEA快捷注释格式
28 0
vscode代码格式化 还有其他重要的快捷键评论补充
vscode代码格式化 还有其他重要的快捷键评论补充
62 1
|
Shell
Shell VSCode 基本开发插件(语法提示、错误检测、格式化、运行代码)
Shell VSCode 基本开发插件(语法提示、错误检测、格式化、运行代码)
1046 0
webstorm 自定义注释内容
webstorm 自定义注释内容
561 0
webstorm 自定义注释内容
[解决]vscode代码没有输入完成就自动换行bug
[解决]vscode代码没有输入完成就自动换行bug
1134 0
[解决]vscode代码没有输入完成就自动换行bug
|
JavaScript
vscode编辑器怎么用代码片段生成用户的文件模板?
vscode编辑器怎么用代码片段生成用户的文件模板?
vscode编辑器怎么用代码片段生成用户的文件模板?
|
程序员 开发工具 git
骚注释一键添加佛祖保佑永无BUG、神兽护体等注释图形的VSCode插件
很早之前就见过各种佛祖保佑永无BUG、神兽护体等形式的注释,感觉很有趣,蛮骚的😉。 然后最近有人在我开源的VSCode插件:**koroFileHeader**里面给我提issue,希望能够支持这种类型的注释。 现在开发完成了,大家可以根据下面的使用方式试用一下。 koroFileHeader插件简介 这个插件目前维护两年多了,有1300+Star,支持所有主流语言,支持自定义语言(不支持的语言可以自行设置)。 作用: 在文件开头添加注释,记录文件信息/文件的传参/出参等,让人对文件的功能一目了然。 如果觉得还不错的话,就给我点个Star⭐️吧~ 插件示例:
498 0
骚注释一键添加佛祖保佑永无BUG、神兽护体等注释图形的VSCode插件