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