Abcd support for IDEs

2025-10-15 (last update) / (published at) 2023-08-18


Introduction


One of main goals of Abcd 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 Abcd 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.


Abcd'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. ReGen4Ide tool 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, ReGen4Ide tool (in a hook-script) 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:
    • Abcd can launch ReGen4Ide tool from a hook-script. However, ReGen4Ide may or may not adapt to the latest format used by your IDE. It is recommended to test this feature again after IDE updates. Replacing the template with a new one, generated with the new IDE, should help.
    • Some users either didn't feel the need to use this feature or had an Adaptive IDE.
  • Currently:
    • There have been requests for integration with the user's IDE of choice.

Previous Article Next Article

..