Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

NOTE: The DSMs above represent build-time module dependencies (not test dependencies nor runtime dependencies).NOTE

STATUS:

...

COMPLETEThis stage completed in 2022/01/06 https://github.com/

...

...

...

cnd-small/2 - Import latest enhancements from master

Once these functionalities are in place the proposal is to merge master into "cnd-small", to integrate with the latest enhancements.

The objective is to pass the "ant commit-validation" checks, to make sure the cnd branch is ready to be merged in master.NOTE: For an example see

STATUS: COMPLETEThis stage started in 2022/01/06 https://github.com/apache/netbeans/commit/f790d79d8f0d0ccee9de517854cf7b9a4b56a1ca and ended in 2022/01/15 https://github.com/

...

...

cnd-small/3 - Integrate cnd-small with cpplite

Once "cnd-small" in in place and merged with master, the plan is to enhance the NetBeans Makefile-based projects so that a compilation database can be generated automatically (using the cnd/cnd.api.project and/or cnd.makeproject).

STATUS: ONGOINGAs discussed on the dev mailing list on how to proceed with this integration: https://lists.apache.org/thread/n6cgbbpjmp04x76wmh6wlqlv4ophbprf

The objecives are:

  • Make "cnd" be aware of LSP (clangd, ccls, sourcekit?) servers to provide:
    • Debugging
    • Semantic syntax highlighting (for instance, properly highlighting #if #else #endif branches)
    • Code completion.
  • Merge "cnd" and "cpplite" into cnd, "merging what is needed from cpplite and dropping the rest".

The tasks required (to be done in the "cnd" branch)  will be (no special order here):

  • (MRG) Merge "cnd" and "cpplite" in one clusterhttps://lists.apache.org/thread/zlf78ryof5d3cg4g2gh3dsx0fzrjhrgj, merging what is needed from the cpplite cluster into the cnd cluster and dropping the rest.
    • The LSP bindings in cpplite (cpplite.editor/.../spi) to be placed in a reasonable module in cnd (cnd.lsp).
    • Make sure cpplite's LSP settings are under C/C++ Options Dialog
  • (PRJ) Discuss what the future of "cpplite.project" will be.
    • "We might just remove the ability to create new cpplite projects"
  • (CDB) Add the capability in "cnd.makeproject" based projects to generate a "compile_commands.json" with proper files/compilers/flags/include directories, etc.
  • (CC) Add code-completion based on LSP to CND projects.
  • (SH) Add semantic highliting based on LSP to CND projects.

The proposed plan of action is:

3.1.- Generate "compile_commands.json" automatically in Make based projects in a new module "cnd.lsp".

3.2.- Gradually integrate LSP support in cnd.lsp (and remove it from cpplite).

3.3.- Add debugging support in cnd.debugger (dropping cpplite.debugger).

3.4.- Get rid of "cnd/cnd.debugger/external/cpplite-mi-1.0-SNAPSHOT.jar" retrieving donated stuff from contrib/cnd.debugger as required

Steps 3.3 and 3.4 above merged in https://github.com/apache/netbeans/commit/9bdac2b8ed38528a3b196fbdd0424d34717f4e3a , we've recovered cnd.debugger.common2 and cnd.debugger.gdb from contrib).

3.5.- Migration path from "cpplite" projects to "Make based projects with existing sourcesOnce the compilation database is generated automatically, it would be easier for users to benefit from code-completion and other features.


NOTE: Cpplite "lsp" support does not currently register the LSP servers in the Options Dialog as "ide/lsp.client" does. We could explore the possibility to use "clangd", "ccls" (as cpplite does) or even Apple's sourcekit-lsp: https://github.com/apple/sourcekit-lsp and register them in the Options Dialog of "ide/lsp.client".

...

  • See if we want to recover any other module from the "cnd" donation (cnd.search?).
  • Add more tools to the existing Toolchains (including Microsoft Visual Studio 2022, with a free-to-use Community Edition?)
STATUS: PENDINGPending on the results of previous phases.