2

I'm writing a minor mode to handle automatic spacing of operator characters, but I'm having some trouble with C/C++. The problem is that I can't figure out how to tell in general whether a * is a multiplication or a pointer type. Similarly for &, and </> in C++ .

I've currently got some basic hacks to detect the built in types (int, char, etc.) and to detect types ending in _t. I've also found the c-guess-basic-syntax function which can tell me when point is in a function header so I can handle function argument and return types. However I can't find any way to detect when point is in a normal variable declaration.

Is it possible without implementing a C compiler?

dshepherd
  • 1,281
  • 6
  • 18
  • It should be possible for C, but not for C++ given the high complexity of the language. Probably explains why the approach of shelling out to `clang` is popular there. – wasamasa Jul 08 '15 at 11:37
  • 1
    If you don't mind the overhead, `semantic` should be able to give you all the information you need. Open up cpp file and start semantic mode and run `(semantic-fetch-tags)` in it, you'll see a ton of information that can be useful to you. Also with your point inside a function you can run `(semantic-get-local-variables)` which will give you the list of local variables and where they are declared in the current function. – Jordon Biondo Jul 08 '15 at 13:57

0 Answers0