summaryrefslogtreecommitdiff
path: root/lisp/textmodes/reftex-cite.el
diff options
context:
space:
mode:
authorTassilo Horn <tsdh@gnu.org>2015-10-09 09:56:40 +0200
committerTassilo Horn <tsdh@gnu.org>2015-10-09 09:58:22 +0200
commit9a30d6b22307aeaac008d5fbbdffd8950e86208a (patch)
tree90689e03eb3f8a3718d8f943c32552a86ccb378c /lisp/textmodes/reftex-cite.el
parent424072f752ad7928b2be560e9d5dbadf82f62228 (diff)
downloademacs-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.el52
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)))