I tried Qt Creator to simplify my development experience for C++. There is a lot of things I liked about it:

  • Shiny responsive GUI with bells and whistles
  • Function arguments hint in the code editor
  • Easy code navigation: go to declaration, find usages etc
  • Integrated debugger
  • Automated project management for CMake

And for sure the whole idea of getting project configured, built and debugged just out of the box is very attractive. However, I did encounter challenging things too:

  • Generic projects still have to be configured manually (consider gradle build)
  • Code completion may become unstable for some reason, showing errors in every line randomly
  • There is no fuzzy search yet
  • Catch C++ test framework isn’t well integrated (jump to the first error?)
  • Not to mention I’m still more productive with neovim

Then the realization happened that we have had all this in Vim for quite a long time, but it just needed to be set up manually. This may be a tedious and distracting process. Luckily, it could be easily automated the way Qt Creator handles generic projects. So meet cproj, a system to handle generic C++ projects within my dotfiles:

  • ycm-update.sh will prepare a compact YouCompleteMe deployment with correct system includes in ~/.vim/includes.txt

  • cproj-init executed in project root will create a template directory .cproj with files and cflags in it

  • cproj-scan executed in project root will create a compilation database in .cproj.out and add the project to rtags (it’s convenient to have rdm socket-activated in systemd)

  • Finally, YCM will load the same project settings!

So I’m likely to go further with both neovim for productivity and Qt Creator for curiosity and inspiration. But clearly Vim is still the best.