これはあなたを近づけるかもしれません(テストされていません):
(defvar my-auto-update-tags-alist
(list '("/some/path/to/TAGS" "command_to_build_tags")
'("/another/path/to/TAGS" "another_build_command")))
(defun my-auto-update-tags ()
"Automatically update TAGS files"
(tags-table-check-computed-list)
(let ((filename (buffer-file-name))
build-cmd)
(mapc (lambda (tag-file)
(set-buffer tag-file)
(when (member filename (tags-table-files))
(setq build-cmd (cdr (assoc tag-file my-auto-update-tags-alist)))
(when build-cmd
(call-process build-cmd nil 0))))
tags-table-computed-list)))
(add-hook 'after-save-hook 'my-auto-update-tags)
すでにTAGSファイルにあるファイルでのみ機能します(テストされていないことを述べましたか?)。新しいファイルを追加する場合は、最初にTAGSファイルを自分で再生成する必要があります。呼び出しプロセス部分は非同期で機能するはずなので、TAGSファイルが実際に再構築されるまでには少し時間がかかる場合があります(これが機能する場合でも;)