For everyone who investigates this bug - the erlang ctags parser is very primitive and distinguishes function definitions only based on indentation in code such as: ``` tot_print(ToT) -> tot_print(1, ToT). tot_print(Y, ToT) when Y =< size(ToT) -> tot_print_tuple(element(Y, ToT)), io:fwrite("~n"), tot_print(Y+1, ToT); tot_print(Y, ToT) -> ok. tot_print_tuple(T) -> tot_print_tuple(1, T). tot_print_tuple(X, T) when X =< size(T) -> io:fwrite("~s", [[element(X, T)]]), tot_print_tuple(X+1, T); tot_print_tuple(X, T) -> ok. ``` So for the ctags parser, definitions are those lines without any indentation. I think proper fix would require rewriting the whole parser to something better.