From: Tassilo Horn Date: Fri, 9 Oct 2015 07:56:40 +0000 (+0200) Subject: Refactor duplicated code; ensure default is in completions X-Git-Tag: emacs-25.0.90~1188 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9a30d6b22307aeaac008d5fbbdffd8950e86208a;p=emacs.git 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. --- 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)))