eclipse操作指南 手把手教你Eclipse,Orion中使用LSP
eclipse Orion由两个不同的部分组成:服务器端和运行在浏览器中的客户端。Orion服务器有两个单独的实现,其中一个是用Java编写,另一个是用Node.js编写。针对语言服务器协议(LSP),我们选择使用了Node.js服务器。
Orion中的LSP集成着重在Orion编辑器中获得对Java语言的支持。众所周知,Eclipse平台的JDT插件提供了丰富的功能,使Java开发者能够把Eclipse作为一个Java IDE来使用。JDT是一套插件集合,不仅为Eclipse平台提供了Java编译器、调试器,而且还提供了许多Java特定的用户界面元素,支持Java应用的开发,提供重整、增量编译和只能编辑等支持。
如何开始
首先执行以下步骤来获取最新的Orion LSP代码:
使用Docker
orion.client / modules / orionnode /中有一个docker文件,可以用于创建Docker映像,其中包含Eclipse jdt.ls的最新版本以及lsp支持的最新Orion node.js。
构建映像运行:./docker_build.sh
构建完成,可以启动映像:docker run -p 8083:8083 orionlsp
通过打开浏览器连接到http://localhost:8083/。
然后检查Orion服务器和Orion客户端的更改,以便支持Orion编辑器中的Java语言。
选择架构
在开始之前,我们要搞清楚Orion是如何与与语言服务器进行交互的。
LSP服务器和Node.js服务器现在在同一台机器上运行。LSP服务器本地安装在Node.js服务器中名为'server'的文件夹内。这样做的目的是让每个Node.js服务器运行一个LSP服务器。目前,两台Orion服务器之间无法共享LSP服务器。
Orion服务器
在Orion服务器端,无法使语言服务器通信进行。我们定义了一个在服务器代码中注册的扩展名(请参阅server.js中的第100行)。该扩展开始侦听用于启动和初始化LSP服务器的命名套接字。
Orion客户端
语言服务器协议定义了很多,并且可以向LSP服务器发出请求,例如文档生命周期,代码格式化,hover事件,搜索引用,代码补全等等。
目前Orion支持其中的大多数,一旦服务器在工作空间内启动和初始化,用户就可以格式化代码,获取问题和警告,搜索引用,获取Javadoc hover,获取错误警告等。
因为现在不支持代码操作,所以在Orion编辑器中没有可用于报告的错误和警告的快速修复。
使用Orion插件完成编辑器集成。该插件定义了用于启动语言服务器的命名套接字。该插件注册之后,为使用以下内容类型的文件进行初始化:“text / x-java-source”或“application / x-jsp”。这两种文件在Orion插件中注册之后,扩展名为“.java”和“.jsp”。因此,当插件启动和初始化时,它将触发命名套接字的连接并发送'start'事件。然后初始化LSP服务器,并且让两个套接字用于LSP服务器和Orion客户端之间的双向通信。Orion插件也用于通过使用Orion stylers来注册Java语言的语法高亮。
其中mJava和mJSP被定义为:
Orion编辑器的每个功能都已经被更新了,以检查LSP服务器是否已注册并需要处理。
例如,对于格式化程序,在调用的文件中org.eclipse.orion.client.ui/web/orion/formatter.js,我们检查是否存在为当前文件内容类型注册的LSP服务器。为此,我们将所有LSP服务器注册到一个注册表中,然后加速查找基于特定内容类型的LSP服务器。如果我们找到一个,从协议调用相应的处理程序来使用它。在这种情况下,它是执行文档格式化请求或者文档范围格式化请求,要取决于编辑器中的当前选择。
我们可以这样做:
我们使用同样的原理来实现所有可以利用LSP服务器特性的Orion编辑器特性(事件、搜索引用等)。
未来方向
我们还需要添加LSP中定义的代码操作请求的支持,以便能够在Orion编辑器中添加快速修复。
现在,LSP服务器在Maven和Gradle项目中运行正常。 这是一个快速发展的领域,我们相信未来会有更多的项目可以适用。就像通用Eclipse编辑器一样,不仅可以支持Java,还可以支持其它语言。
运行界面:
- 05-13赛尔号五大神兽极速冰点:赛尔号尘封已久的神秘
- 01-19天龙八部88卡级服推荐,天龙八部八部国际服5城版本卡级
- 01-08杨幂与刘瑾睿合唱:杨幂和刘瑾睿深情合唱若把你
- 02-24浴霸灯坏了要全部换吗?学会这些知识再也不求人了
- 03-05excel打印功能在哪:Excel打印功能你真的会用吗
- 12-07李宁在运营方面的变革:深度,重新搭建李宁
- 01-11mt4手机版无法创建模拟账户:手机版mt4登录授权失败是什么原因
- 10-09超人钢铁之躯反派人物:强大到杀死钢铁之躯超人的经典反派
- 01-02天猫双11优惠到什么时候?天猫,双1131日晚开买
- 01-01虚不受补是什么表现?所谓的虚不受补其实和4个因素有关
- 03-07华为ai音箱2更换网络:谁说智能音箱声音不行
- 05-25率土之滨适合平民手游攻略全套 这款被称为养老版率土之滨的策略手游
- 04-10上海最大面积寺庙和最小面积寺庙:上海三大寺院之一的玉佛禅寺和郑州大观音寺
- 05-15520男朋友在外地送什么东西给他?520男士送礼物女朋友表示
- 10-16vba从网页抓取指定数据的方法:WebBrowser控件网页数据抓取,II
- 05-21面试绘画是边讲边画吗?女面试官,舌
热门
推荐
- 1遭遇挫折而取得成功的名言270
- 2超市联营合同范本|超市特许合同范本191
- 3外星人笔记本电脑怎么样386
- 4办公室励志名言标语352
- 52020年XX小学大队部学习雷锋倡议书438
- 6王姓女孩子取名字的方法282
- 7最新的生产实习报告443
- 8人大代表团召集人会议讲话263