Project

General

Profile

Feature #3883

eclipse plug for developing 4GL code using FWD including editing, syntax checks, running conversion

Added by Greg Shah over 7 years ago. Updated 4 months ago.

Status:
Pending
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
Due date:
% Done:

0%

billable:
No
vendor_id:
GCD
case_num:
version_reported:
version_resolved:
reviewer:
production:
No
env_name:
topics:

Related issues

Related to Conversion Tools - Feature #6319: IntelliJ plugin Rejected
Related to Conversion Tools - Feature #1757: update ANTLR to latest version New
Related to Conversion Tools - Feature #11355: VSCode extension New

History

#1 Updated by Greg Shah over 7 years ago

Eclipse plugin for integration with syntax check and running conversion (et al). This must also provide the regular Eclipse support for 4GL editor coloring, syntax expansion, source debugging and so forth). A developer must be able to continue 4GL development using FWD only (no Progress Developer Studio which is a licensed product).

#2 Updated by Greg Shah over 5 years ago

There is an Eclipse "simple" plugin framework called XText. It is probably not suitable for our usage. See this answer about integrating an external parser into Eclipse using Xtext. XText is essentially a framework in which you plugin a bunch of text matching (usually regex stuff) and implement various syntax highlighting (etc...) off of that. It is not suitable for something as complex and context-aware as the 4GL. Useful links:

The idea is that it would not be too hard to do this if your grammar is very simple and has few actions and little to no semantic/syntactic predicates. FYI, progress.g is hugely dependent upon actions and semantic predicates so this means it would probably be infeasible to reuse the existing grammar.

The original article at the top of this node suggests looking at Geppetto which is an Eclipse plugin that uses an external JRuby compiler to implement a Puppet development environment in Eclipse. It is implemented in a way that the backing tools are generic and can be used from other IDEs or tooling environments. This is the same requirement that we have.

I think we will need to implement a plugin using the "platform" itself. This is the underlying API used by any plugin, including those which provide a perspective. We will also need to integrate with the Java Development Tools (JDT is one of the main sub-projects of Eclipse; it provides the Java perspective).

Eclipse Documentation (click into a specific version and you will want to look for "Platform Plug-in Developer Guide", "JDT Plug-in Developer Guide" and "Plug-in Development Environment Guide")

Eclipse Main Project Wiki Page (pretty high level, but it explains the core components)

Java Development Tools (this is a nice article with some details about the JDT subproject)

JDT Github Projects (for example, the core JDT support or JDT UI or JDT debugger)

#3 Updated by Greg Shah almost 5 years ago

Questions/Items to Investigate

  • Generic Editor
  • Language Server Protocol (LSP)
    • The Language Server Protocol (LSP) is a platform independent protocol for creating language support that can work across various IDEs (VSCode, Eclipse IDE, Eclipse Che, vim...).
    • It is an open standard, originally created by Microsoft for their internal use and then made more generic through work with Eclipse, IBM and Red Hat. Eclipse now supports it quite well and it can be easily plugged in to the Generic Editor support to provide a pretty rich environment.
    • Eclipse has built-in support for integrating with the LSP. It also has a kind of library to help implement support for a language using the LSP, called LSP4E (see the LSP For Eclipse Github Project.
    • You still need to create a plugin, but it can be quite small (Using Language Servers to Edit Code in the Eclipse IDE).
    • To the degree that there are limitations, some articles suggest that some extension points and traditional Eclipse plugin support can be added to extend the "generic" LSP support and make the result complete.
    • What are the limitations?
    • Why You Should Know the Language Server Protocol
  • Debug Adapter Protocol
    • The Debug Adapter Protocol is a platform independent protocol for separating the debugging back-end from the debugger UI. As such it allows the same back-end debugging support to be used by multiple IDEs.
    • It is an open standard, originally created by Microsoft for the VSCode product. It is being adopted by multiple IDEs now and it is a kind of companion to the Language Server Protocol.
    • Adopting the Debug Adapter Protocol in Eclipse IDE
      lipse-platform-generic-editor
  • Eclipse Che
    • LE: Actually, this seems to be more of a kubernete's hosting environment for IDEs. It isn't a generic IDE platform.
    • This is a web-based IDE.
    • I am wondering if this is the more strategic option over the long term.
    • It is definitely the less mature option at this point. And it is less well known.
  • Eclipse Theia
    • Open source, extensible platform for building an IDE or tools.
    • Eclipse Theia IDE is a standardized end-user ready IDE distribution of Theia. LE: It is generally available now (as of July 4, 2024 in v1.51)
    • Builds upon some VSCode modules (like the Monaco editor) but is supposedly more modular/extensible.
    • Supports VSCode extensions.
    • Can run a web-based IDE or desktop IDE from the same source implementation. To deliver on the desktop, you would use something like Electron.
    • Leverages both LSP and DAP.
    • Used in Eclipse Che (starting in v7).
    • Eclipse Theia (this is the core platform)
    • Eclipse Theia is the Next Generation Eclipse Platform for IDEs and Tools!
    • The Eclipse Theia IDE vs. VS Code (FYI, Theia is based on the VS Code open-source project and then extends/expands from there)

#4 Updated by Greg Shah almost 5 years ago

From Hynek:

Btw. the debugging experience in Developer Studio is pretty lousy. For example I couldn't add new breakpoints doubleclicking in the editor or using the menu, I had to add it manually in the debuggers window (enter the full procedure file path and line number). Also inspecting variable values by hover in the editor doesn't work either, I had add the expression manually in the watch window.

#5 Updated by Greg Shah almost 5 years ago

I couldn't add new breakpoints doubleclicking in the editor or using the menu, I had to add it manually in the debuggers window (enter the full procedure file path and line number).

I was pretty surprised at this limitation. Normally, this is a very simple integration that is supported for plugins that have a source code editor view. I looked in the Developer Studio documentation and it seems it should in fact support the normal breakpoint capabilities (e.g. adding via a double click in the source editor). I think the reason it is not working for you is probably that there is no project created for the source you are debugging. Without a project, the source editor integration won't work.

#6 Updated by Greg Shah about 4 years ago

#7 Updated by Greg Shah over 3 years ago

In April 2022, the official word is that Eclipse Theia is the next generation of Eclipse!. This doesn't mean that the Eclipse desktop version is going away, but rather that Theia is more strategic.

The more I dig into this, the following seems pretty clear to me:

  1. Writing a language server (i.e. using the LSP and DAP) is the best long term approach to implementing common code for multiple IDEs. VS Code and Theia both use this "natively" as the back-end. Eclipse desktop and IntelliJ both have plugins can allow LSP to be used. Full LSP support in Eclipse desktop and IntelliJ might require us to write a more complex plugin. In other words, there may be more or less work in the "client side" (a.k.a. a plugin) of a LSP depending on the level of LSP support that exists for a platform.
  2. We will need to decide if the maturity of the Eclipse JDT platform justifies writing an SWT-based plugin at the time when the world is already shifting to the web. Considering that we already have a web UI written for the report server AND we are very interested in expanding it, the web is very attractive. It could be a common implementation for all of this. In addition we've considered the value of a web-based IDE for implementing conversion projects. The idea here is that we could create a portal that would make it very easy for people to try out FWD. A purely web based approach would easily enable this idea. I'm leaning toward using the web based approach rather than investing in SWT.

#8 Updated by Greg Shah over 3 years ago

#9 Updated by Greg Shah over 3 years ago

See #1757-9 for some analysis of how auto-completion may require a move to ANTLRv4.

#10 Updated by Greg Shah over 1 year ago

As of July 4, 2024 the Theia IDE project is generally available (no longer beta). It is easy to install on multiple platforms (Windows, MacOS and Linux), supports a wide range of languages and provides a full modern IDE experience. My sense is that we should build for that platform instead of the legacy SWT Eclipse IDE. Doing so has some advantages:

  • The same IDE can be hosted as a desktop IDE and as a cloud IDE (pure web browser for access and the same complete IDE experience without a local install). This means our plugin should work for both cases without any changes.
  • The plugin should be simpler to implement than using LSP and DAP on SWT Eclipse. This is because the LSP and DAP are the core mechanisms for Theia, not experimental add-ons like with Eclipse.
  • The plugin will likely work with VSCode with little (or no?) change.

The down side is just that people that know classic Eclipse will have to learn a new UI.

#11 Updated by Greg Shah 4 months ago

#12 Updated by Greg Shah 4 months ago

We will focus time on #11355 and that delivery should also work in Theia. Regardless of that point, the delivery will come in #11355 and this task will be deprecated.

#13 Updated by Greg Shah 4 months ago

  • Status changed from New to Pending

Also available in: Atom PDF