Abc support for IDEs

2023-08-18


Introduction


One of main goals of Abc is to help developers do fewer context switches and be able to focus on project logic.

One way is to automate (in a known and expected way) the additional maintenance tasks required by the tools to be performed by the user.


Another main goal of Abc is to adapt the build process to changes in the structure of the projects.

Accordingly, the build rules must be adapted:

  • In each sub-project where changes have occurred.
  • Between projects, when a project is added or removed or changes its dependencies.


Note: There are projects that need source files that are generated during the build. These can trigger changes in the structure of the project.


IDE related use cases:

  • On build-machines, the build process is started on the command line. IDE files are unused and ignored.
  • On developer machines, however, the developer usually uses the IDE to change the project sources.
    • If the developer changes everything from the IDE, everything should be fine.
    • When the developer imports changes from somewhere else (git, svn, etc.), and IDE-specific project files are not synchronized with changes, problems may occur.


IDE flavors


There are many IDEs out there. Some are vendor specific, some support multiple programming languages, some support projects with sub-projects in tree or flat view.

Some tools like Xemacs, Emacs, Vim, Notepad++ (to name a few) are text editors by design. But these editors with the right extensions can be the fastest or most powerful IDE for someone used to them.

Considering the intended use of the user, let's name all IDEs here.


IDE approach to external changes (new or removed source files and directory tree changes):

  • Adaptive:
    • Adjust project files automatically.
    • Optionally ask the user to accept a resync.
  • Aware:
    • Detect some of the changes.
    • Ask the user to fix the deviations.
  • Unaware:
    • Keep showing the same project structure.
    • Accept changes from the IDE only.
  • Other:
    • Mixed behavior.


Now, for an IDE which successfully reloads its project files after a build action is finished:

  • A specialized tool can then be used to regenerate IDE-specific project files. This tool must be in sync with the format and content expected by the IDE.
  • The IDE can become more user friendly: Aware or even Adaptive.


Notes:

  • IDE creators are the best at knowing how their IDE behaves now and what the plans are for the future. They can implement a synchronization tool, or implement synchronization directly in the IDE, or document the related file structure so that others can create a specialized synchronization tool. IF it makes sense for their IDE. For an updated version compatible with the latest IDE of your choice, ask the creators of the sync-tool.
  • Synchronizing a project can trigger symbol synchronization tasks, where symbol references are used.


Abc's approach to friendly coexistence with an IDE

  • Where an IDE is not used (e.g. build-machines), the user is not affected.
  • Where an Adaptive IDE is used, the IDE handles the changes. Abc option "--gen-ide" does not touch unknown files and is not necessary at all.
  • Where an IDE can successfully reload its project files after a build action is finished, Abc option "--gen-ide" should help boost IDE behavior to Adaptive for known IDEs.


Note: IDE files have a wide range of naming conventions, which differ by IDE. If for some unexpected reason an IDE file is considered documentation or even a source file, please check the selection patterns. Any file can be excluded from build lists.


Feature Status

  • So far:
    • Abc option "--gen-ide" knows only one sub-variant which is in experimental (E) state. This subvariant was not really used. It's safer to assume that it's not working properly, especially with the latest official versions of the IDE.
    • Users either didn't feel the need to use this feature or had an Adaptive IDE.
  • Currently:
    • There have been requests for better integration with the user's IDE of choice.
  • Next:
    • Coming soon: Abc will change to support an external tool of your choice for "--gen-ide".

Previous Article Next Article

..