Le 20/09/2013 21:00, Tory Gaurnier a écrit : > [...], > however, I reallized that it's probably getting the line # to point at > from the current line number in File when you actually create the tag, > so I traced down the functions, and it appears to be the case, so with > that method it would most definitely not be pointing at the correct line > for the tag. > > So here is my question, does anyone know if another filetype is already > doing something similar to this (scanning ahead to find aditional info > before adding the tag) so I can study it? Or is there maybe a way I can > copy File.fp so I can scan ahead on that one without affecting File? Or > is there a way to rewind File to a specific point (this would probably > be the easiest method)? If I rewind File.fp will it update all the other > info (File.lineNumber, File.filePosition, etc.) with it? I'm just weary > about editing File itself because it's kinda hard to trace down how it's > managed.
To do that, normally you store the File.lineNumber/File.filePosition at the location you want to generate the tag, and use initTagEntry() and makeTagEntry() instead of simpler but dumber makeSimpleTag(): createMyTag(qmlKind kind, const char *name, ...) { tagEntryInfo entry; initTagEntry (&entry, name); entry.lineNumber = savedLineNumber; entry.filePosition = savedFilePosition; entry.kindName = QMLKinds[kind].name; entry.kind = (char) QMLKinds[kind].letter; makeTagEntry (&entry); } See e.g. Geany's PHP parser functions makeNamespacePhpTag() or makeSimplePhpTag(). Regards, Colomban _______________________________________________ Devel mailing list Devel@lists.geany.org https://lists.geany.org/cgi-bin/mailman/listinfo/devel