當前位置:
首頁 > 知識 > 程序員如何在Eclipse Orion中如何使用LSP?

程序員如何在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代碼:

程序員如何在Eclipse 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是如何與與語言伺服器進行交互的。

程序員如何在Eclipse Orion中如何使用LSP?

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語言的語法高亮。

程序員如何在Eclipse Orion中如何使用LSP?

其中mJava和mJSP被定義為:

程序員如何在Eclipse Orion中如何使用LSP?

Orion編輯器的每個功能都已經被更新了,以檢查LSP伺服器是否已註冊並需要處理。

例如,對於格式化程序,在調用的文件中org.eclipse.orion.client.ui/web/orion/formatter.js,我們檢查是否存在為當前文件內容類型註冊的LSP伺服器。為此,我們將所有LSP伺服器註冊到一個註冊表中,然後加速查找基於特定內容類型的LSP伺服器。如果我們找到一個,從協議調用相應的處理程序來使用它。在這種情況下,它是執行文檔格式化請求或者文檔範圍格式化請求,要取決於編輯器中的當前選擇。

程序員如何在Eclipse Orion中如何使用LSP?

我們可以這樣做:

程序員如何在Eclipse Orion中如何使用LSP?

我們使用同樣的原理來實現所有可以利用LSP伺服器特性的Orion編輯器特性(事件、搜索引用等)。

未來方向

我們還需要添加LSP中定義的代碼操作請求的支持,以便能夠在Orion編輯器中添加快速修復。

現在,LSP伺服器在Maven和Gradle項目中運行正常。 這是一個快速發展的領域,我們相信未來會有更多的項目可以適用。就像通用Eclipse編輯器一樣,不僅可以支持Java,還可以支持其它語言。

運行界面:

程序員如何在Eclipse Orion中如何使用LSP?

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

「GIVE ME FIVE」:浪潮M5新一代伺服器要來了
雲計算下的這些細分領域 你都了解嗎?
既前沿又接「地氣」的實驗室 X Labs「創贏」未來
為什麼網路對數字化轉型至關重要?

TAG:IT168企業級 |

您可能感興趣

Visual Studio與Eclipse,誰是最強 IDE?
Visual Studio與Eclipse,誰是最強 IDE?
PYPL 8 月 IDE 排行榜:Eclipse 還是沒超過 Visual Studio
Eclipse JSP/Servlet 環境搭建
最強 IDE 之爭:Eclipse 還是沒超過 Visual Studio、Xcode 回溫
eclipse如何導出WAR包
Eclipse 有望超越 Visual Studio!
Eclipse Debug 調試
Fedora:Gnome創建桌面圖標,以Eclipse和IDEA為例
Bang & Olufsen 為 BeoVision Eclipse 電視機與 BeoLab 50 揚聲器推出全新配色
PYPL 12 月 IDE 榜單:Eclipse 有望超越 Visual Studio
Eclipse Debug 配置
eclipse使用ant + ivy 配置項目jar包和依賴關係
意式風尚主宰潮流圈?C.P.Company帶來「The Eclipse」系列精彩演繹
意式風尚主宰潮流圈?C.P.Company帶來「The Eclipse」系列精彩演繹!
刺繡畫,來自藝術家desereclipsestudio!
Eclipse 編程
極速狂飆,三菱Eclipse Cross王者歸來
Eclipse編輯Spring配置文件xml時自動提示類class包名
日本媒體怎麼看三菱Eclipse Cross