> The thing that will complicate it is that a Geany user can set filetype, and 
> really uctags should use that, not its own determination.

That would be hard to do with the hacky interface we have against uctags (and I 
don't want to introduce too many Geany-specific things to uctags which is 
primarily a command-line tool).

But the main problem is that for `isHeader()` uctags defaults to `TRUE` for an 
unknown file extension which is what I'd like to change. In the C++ parser, the 
logic looks typically like
```
if (tag->isFunctionDeclaration && !isHeader())
    tag->local = true;
```
If `isHeader()` returns `FALSE` for `*.foo` files, we'll be fine.

Of course if the user uses something crazy like `*.C` for headers, we'll be 
doomed but I don't think this is very likely. Also when `*.foo` is a source 
file we get `tag->local = false` incorrectly but the only difference is there 
will be some extra tags in the autocompletion popup which is not a big problem 
either and which would happen for all the tags if we applied this PR.

Also I think `isHeader()` defaulting to `FALSE` for unknown files is a good 
idea in general because real C/C++ sources tend to have the right extension but 
it's the headers (or header-like things like CORBA `*.idl` interface definition 
files) which tend to have some special extension (e.g. `signallist.i` in Geany 
or the `*.hdl` files that triggered this problem).

-- 
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/3457#issuecomment-1504879986
You are receiving this because you are subscribed to this thread.

Message ID: <geany/geany/pull/3457/[email protected]>

Reply via email to