Skip the format specifier when loading a global tag file
commit11da5557a0addb47ede0273d3975486daf9c82c0
authorColomban Wendling <ban@herbesfolles.org>
Fri, 23 Mar 2018 04:48:18 +0000 (23 00:48 -0400)
committerColomban Wendling <ban@herbesfolles.org>
Fri, 23 Mar 2018 04:48:18 +0000 (23 00:48 -0400)
treef513ed25817df9a6185faff3ae5adac540f07957
parent7c6b4794b1c0f9696465fb8920ccffc107f5b4d8
Skip the format specifier when loading a global tag file

This prevents loading a spurious tag for the format specifier line, as
well as fixing loading of CTags format with a format specifier line.

Before this change, the file pointer was rewound after reading a format
specifier line; but this had various unwanted side effects depending on
the recognized format:

* For TagManager and Pipe formats, it led to loading a tag named after
  the format specifier (e.g. a literal "# format=tagmanager").  This
  was fairly harmless and only introduced a spurious tag seldom even
  used because "#" isn't usually considered for looking up completions.
* For CTags format, having an explicit specifier led to failure to load
  the file in most cases because the specifier line would be parsed but
  doesn't usually follow the format's requirements, leading to early
  abortion loading that file.  On some very specific specifier lines
  actually following CTags format, it could have led to loading a
  spurious tag instead.

Fixes #1814 and closes #1816.
src/tagmanager/tm_source_file.c