[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Set the variable bibtex-completion-bibliography used by helm-bibtex
From: |
Hongyi Zhao |
Subject: |
Re: Set the variable bibtex-completion-bibliography used by helm-bibtex to the dynamical generated bib files list corresponding to the current master tex file. |
Date: |
Wed, 3 May 2023 08:08:45 +0800 |
On Wed, May 3, 2023 at 1:55 AM Mandar Mitra <mandar.mitra@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