Since PR #3859 (2d1b3d5), specifically since baaed02, which merges [ctags#3471](universal-ctags/ctags#3471) and [#3473](universal-ctags/ctags#3473) (among others), Geany's tagmanager adds a "module" tag for *instances* of a module (in addition to the "instance" tag for the instance itself, which Geany didn't show in the tree view until #4039).
Example code: ```verilog module outer_module (input D, output Q); inner_module inst (D, Q); endmodule ```
| Before baaed02: | After baaed02: | |-----------------|----------------| | ![Geany_before_baaed02](https://github.com/user-attachments/assets/4bb53785-1444-46b7-b552-8e65cf380...) | ![Geany_after_baaed02](https://github.com/user-attachments/assets/6fa05358-c66d-4757-af37-0f2ad0eed...) |
For an analogy, this is like having the C code `struct inner_struct foo;` tag *both* `inner_struct` and `foo` as struct/variable declarations (but it's *not* defining a struct type, just using it).
This seems to be caused by ctags now creating a *reference tag* whenever it declares an instance, referencing the corresponding module, and Geany erroneously(?) interpreting that reference tag as a normal tag. But I don't know enough about ctags to know what's going on for sure, nor what's the proper way to handle it (other than refraining from creating a reference tag).
Is there a way to fix this? It looks like #3102 might be related to this kind of issue.