include $(CFG_SRC_DIR)/mk/tools.mk
include $(CFG_SRC_DIR)/mk/docs.mk
-
######################################################################
# Secondary makefiles, conditionalized for speed
######################################################################
ifneq ($(findstring install,$(MAKECMDGOALS)),)
CFG_INFO := $(info cfg: including install rules)
include $(CFG_SRC_DIR)/mk/install.mk
-endif
\ No newline at end of file
+endif
+
+ifneq ($(strip $(findstring TAGS.emacs,$(MAKECMDGOALS)) \
+ $(findstring TAGS.vi,$(MAKECMDGOALS))),)
+ CFG_INFO := $(info cfg: including ctags rules)
+ include $(CFG_SRC_DIR)/mk/ctags.mk
+endif
--- /dev/null
+######################################################################
+# TAGS file creation. No dependency tracking, just do it on demand.
+# Requires Exuberant Ctags: http://ctags.sourceforge.net/index.html
+######################################################################
+
+CTAGS_OPTS=--options=${CFG_SRC_DIR}/mk/ctags.rust -R ${CFG_SRC_DIR}/src
+
+TAGS.emacs:
+ ctags -e -f $@ ${CTAGS_OPTS}
+
+TAGS.vi:
+ ctags -f $@ ${CTAGS_OPTS}
--- /dev/null
+--langdef=rust
+--langmap=rust:.rs
+--regex-rust=/[ \t]*fn[ \t]+([a-zA-Z0-9_]+)/\1/f,function/
+--regex-rust=/[ \t]*type[ \t]+([a-zA-Z0-9_]+)/\1/T,types/
+--regex-rust=/[ \t]*tag[ \t]+([a-zA-Z0-9_]+)/\1/T,types/
+--regex-rust=/[ \t]*resource[ \t]+([a-zA-Z0-9_]+)/\1/T,types/
+--regex-rust=/[ \t]*mod[ \t]+([a-zA-Z0-9_]+)/\1/m,modules/