defun guess-TeX-master : filename . "Guess the master file for FILENAME from currently open .tex files." let : candidate nil filename : file-name-nondirectory filename save-excursion dolist : buffer : buffer-list with-current-buffer buffer let : name : buffer-name file buffer-file-name if and file : string-match "\\.tex$" file progn goto-char : point-min if re-search-forward concat "\\\\input{" filename "}" . nil t setq candidate file if re-search-forward concat "\\\\include{" (file-name-sans-extension filename) "}" . nil t setq candidate file if candidate message "TeX master document: %s" : file-name-nondirectory candidate . candidate