(list 'progn (list 'defvar var val docstring)
(list 'make-variable-buffer-local (list 'quote var))))))
+(eval-and-compile
+ (unless (fboundp 'user-error)
+ (defalias 'user-error 'error)))
+
(defgroup ggtags nil
"GNU Global source code tagging system."
:group 'tools)
(setq-local compilation-auto-jump-to-first-error nil)
(remove-hook 'compilation-finish-functions 'ggtags-handle-single-match t))))
+(defun ggtags-delete-tag-files ()
+ "Delete the tag files generated by gtags."
+ (interactive)
+ (when (ggtags-root-directory)
+ (let ((files (directory-files (ggtags-root-directory) t
+ (regexp-opt '("GPATH" "GRTAGS" "GTAGS" "ID"))))
+ (buffer "*GTags File List*"))
+ (or files (user-error "No tag files found"))
+ (with-output-to-temp-buffer buffer
+ (dolist (file files)
+ (princ file)
+ (princ "\n")))
+ (let ((win (get-buffer-window buffer)))
+ (unwind-protect
+ (progn
+ (fit-window-to-buffer win)
+ (when (yes-or-no-p "Remove GNU Global tag files? ")
+ (mapc 'delete-file files)))
+ (when (window-live-p win)
+ (quit-window t win)))))))
+
(defvar-local ggtags-global-exit-status nil)
(defun ggtags-global-exit-message-function (_process-status exit-status msg)