On Wed, May 3, 2023 at 1:55 AM Mandar Mitra <mandar.mi...@gmail.com> wrote: > > Hongyi Zhao wrote (Tue, May 02, 2023 at 10:03:23PM +0800): > > The example setting of this variable is as follows: > > > > (setq bibtex-completion-bibliography (directory-files-recursively > > (concat (getenv "HOME") > > "/texmf/bibtex/bib/local") "^[A-Za-z].+.bib$")) > > > > But the above setup uses a fixed directory, so it doesn't meet the > > requirements here. Any suggestions for achieving the goal will be > > appreciated. > > Random suggestion: in LaTeX-mode-hook > > (setq (make-local-variable 'bibtex-completion-bibliography) > (lisp-expression-to-create-the-list-of-files-that-you-want)) > > Disclaimer: not sure this will work, not sure it's the "right" way to achieve > what you want, just something for you to try before the experts chime in.
I have some preliminary ideas as follows: First, define `my-bibtex-completion-bibliography` function to search for bib files in, e.g., the `bibs` subdirectory of the current master TeX file directory; then set `bibtex-completion-bibliography` to the result of calling this function. ```emacs-lisp (defun my-bibtex-completion-bibliography () "Return a list of bib files in the 'bibs' subdirectory of the current master tex file directory." (let ((master-file (buffer-file-name)) (bibs-dir (concat (file-name-directory (buffer-file-name)) "bibs/"))) (directory-files-recursively bibs-dir "^[A-Za-z].+.bib$"))) (setq bibtex-completion-bibliography (my-bibtex-completion-bibliography)) ``` This function first gets the filename of the current master TeX file (`master-file`) and constructs the path to the `bibs` subdirectory using `concat`. It then returns a list of bib files in that directory using `directory-files-recursively`. Any corrections/comments will be appreciated. > -mandar Zhao