It’s been three weeks since I started working on the plugin, and now it’s finally in a working state. I’ll get around to finally adding a README to the project soon, but in the meantime here’s a bunch of things in no particular order:

  • Parsing and compiling the file takes around 1-3 seconds depending on the size of the file and the sizes of all includes, but it’s completely asynchronous and as such will later be done as part of a visit-file hook.
  • Once the parsing is done and the results cached, completions take less than 200 ms for member variables/functions and around 500 to 800ms for variable declarations.
  • It’s been hooked up with AutoComplete, albeit a slightly modified version that provides more information about each completion and supports duplicates (for overloaded functions).
  • Compilation flags for clang are supplied via directory-local variables. I might switch to eproject given how anal Emacs is about “unsafe” directory-local variables.
  • Any compilation errors are printed to a separate buffer.

And here’s what I will be working on next, again in no particular order:

  • Add a README to the project
  • Find a better place to store compilation flags
  • Add more logging
  • Suppress annoying messages printed by deferred and epc

And some long-term goals:

  • Highlight lines with compilation errors/warnings
  • Jump to declaration/definition
  • Display docstrings

In the meantime, here are some screenshots of the completion in action:

Screenshot 1
Screenshot 2