diff options
author | Tassilo Horn <tsdh@gnu.org> | 2015-10-09 09:56:40 +0200 |
---|---|---|
committer | Tassilo Horn <tsdh@gnu.org> | 2015-10-09 09:58:22 +0200 |
commit | 9a30d6b22307aeaac008d5fbbdffd8950e86208a (patch) | |
tree | 90689e03eb3f8a3718d8f943c32552a86ccb378c /lisp/textmodes/reftex-cite.el | |
parent | 424072f752ad7928b2be560e9d5dbadf82f62228 (diff) | |
download | emacs-9a30d6b22307aeaac008d5fbbdffd8950e86208a.tar.gz emacs-9a30d6b22307aeaac008d5fbbdffd8950e86208a.tar.bz2 emacs-9a30d6b22307aeaac008d5fbbdffd8950e86208a.zip |
Refactor duplicated code; ensure default is in completions
* lisp/textmodes/reftex-cite.el (reftex--query-search-regexps): New function.
(reftex-extract-bib-entries): Use it.
(reftex-extract-bib-entries-from-thebibliography): Use it.
Diffstat (limited to 'lisp/textmodes/reftex-cite.el')
-rw-r--r-- | lisp/textmodes/reftex-cite.el | 52 |
1 files changed, 24 insertions, 28 deletions
diff --git a/lisp/textmodes/reftex-cite.el b/lisp/textmodes/reftex-cite.el index 8f3f2ccd061..a35d41109e6 100644 --- a/lisp/textmodes/reftex-cite.el +++ b/lisp/textmodes/reftex-cite.el @@ -177,6 +177,28 @@ If RETURN is non-nil, just return the entry and restore point." (progn (forward-list 1) (point))) (error (min (point-max) (+ 300 (point))))))) +(defun reftex--query-search-regexps (default) + "Query for regexps for searching entries using DEFAULT as default. +Return a list of regular expressions." + (split-string + (completing-read + (concat + "Regex { && Regex...}: " + "[" default "]: ") + ;; Ensure default is always in the completion list. + (let ((def (when default (list default))) + (coll (if reftex-mode + (if (fboundp 'LaTeX-bibitem-list) + (LaTeX-bibitem-list) + (cdr (assoc 'bibview-cache + (symbol-value reftex-docstruct-symbol)))) + nil))) + (if (and def (member def coll)) + coll + (cons def coll))) + nil nil nil 'reftex-cite-regexp-hist) + "[ \t]*&&[ \t]*")) + ;;; Parse bibtex buffers (defun reftex-extract-bib-entries (buffers) "Extract bib entries which match regexps from BUFFERS. @@ -189,20 +211,7 @@ Return list with entries." ;; Read a regexp, completing on known citation keys. (setq default (regexp-quote (reftex-get-bibkey-default))) - (setq re-list - (split-string - (completing-read - (concat - "Regex { && Regex...}: " - "[" default "]: ") - (if reftex-mode - (if (fboundp 'LaTeX-bibitem-list) - (or (LaTeX-bibitem-list) '("")) - (cdr (assoc 'bibview-cache - (symbol-value reftex-docstruct-symbol)))) - nil) - nil nil nil 'reftex-cite-regexp-hist) - "[ \t]*&&[ \t]*")) + (setq re-list (reftex--query-search-regexps default)) (if (or (null re-list ) (equal re-list '(""))) (setq re-list (list default))) @@ -394,20 +403,7 @@ The environment should be located in FILES." ;; Read a regexp, completing on known citation keys. (setq default (regexp-quote (reftex-get-bibkey-default))) - (setq re-list - (split-string - (completing-read - (concat - "Regex { && Regex...}: " - "[" default "]: ") - (if reftex-mode - (if (fboundp 'LaTeX-bibitem-list) - (LaTeX-bibitem-list) - (cdr (assoc 'bibview-cache - (symbol-value reftex-docstruct-symbol)))) - nil) - nil nil nil 'reftex-cite-regexp-hist) - "[ \t]*&&[ \t]*")) + (setq re-list (reftex--query-search-regexps default)) (if (or (null re-list ) (equal re-list '(""))) (setq re-list (list default))) |