It'd be good if etags didn't tag defvar declaration forms, only actual variable definitions. For example it picks up (defvar message-indent-citation-function) in longlines.el ahead of that variable's actual definition in message.el, so M-. of that var goes to longlines.el first. Perhaps something along the lines below. I found the tripe-negative of while(!noninname) hard to follow and thought a skip_name() could be clearer. It might be shared by Perl_functions, PHP_functions and Makefile_functions. 2010-02-18 Kevin Ryde * etags.c (Lisp_functions): Don't tag "(defvar foo)" declarations. (skip_name): New helper.