程序員如何在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,還可以支持其它語言。
運行界面:
※「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