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).

cnd-small/2 - Import latest enhancements from master

...

The objective is to pass the "ant commit-validation" checks, to make sure the cnd branch is ready to be merged in master.

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).

Once the compilation database is generated automatically, it would be easier for users to benefit from code-completion and other features.

...

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 sources.


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.