aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTassilo Horn2015-10-09 09:56:40 +0200
committerTassilo Horn2015-10-09 09:58:22 +0200
commit9a30d6b22307aeaac008d5fbbdffd8950e86208a (patch)
tree90689e03eb3f8a3718d8f943c32552a86ccb378c
parent424072f752ad7928b2be560e9d5dbadf82f62228 (diff)
downloademacs-9a30d6b22307aeaac008d5fbbdffd8950e86208a.tar.gz
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.
-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."
177 (progn (forward-list 1) (point))) 177 (progn (forward-list 1) (point)))
178 (error (min (point-max) (+ 300 (point))))))) 178 (error (min (point-max) (+ 300 (point)))))))
179 179
180(defun reftex--query-search-regexps (default)
181 "Query for regexps for searching entries using DEFAULT as default.
182Return a list of regular expressions."
183 (split-string
184 (completing-read
185 (concat
186 "Regex { && Regex...}: "
187 "[" default "]: ")
188 ;; Ensure default is always in the completion list.
189 (let ((def (when default (list default)))
190 (coll (if reftex-mode
191 (if (fboundp 'LaTeX-bibitem-list)
192 (LaTeX-bibitem-list)
193 (cdr (assoc 'bibview-cache
194 (symbol-value reftex-docstruct-symbol))))
195 nil)))
196 (if (and def (member def coll))
197 coll
198 (cons def coll)))
199 nil nil nil 'reftex-cite-regexp-hist)
200 "[ \t]*&&[ \t]*"))
201
180;;; Parse bibtex buffers 202;;; Parse bibtex buffers
181(defun reftex-extract-bib-entries (buffers) 203(defun reftex-extract-bib-entries (buffers)
182 "Extract bib entries which match regexps from BUFFERS. 204 "Extract bib entries which match regexps from BUFFERS.
@@ -189,20 +211,7 @@ Return list with entries."
189 211
190 ;; Read a regexp, completing on known citation keys. 212 ;; Read a regexp, completing on known citation keys.
191 (setq default (regexp-quote (reftex-get-bibkey-default))) 213 (setq default (regexp-quote (reftex-get-bibkey-default)))
192 (setq re-list 214 (setq re-list (reftex--query-search-regexps default))
193 (split-string
194 (completing-read
195 (concat
196 "Regex { && Regex...}: "
197 "[" default "]: ")
198 (if reftex-mode
199 (if (fboundp 'LaTeX-bibitem-list)
200 (or (LaTeX-bibitem-list) '(""))
201 (cdr (assoc 'bibview-cache
202 (symbol-value reftex-docstruct-symbol))))
203 nil)
204 nil nil nil 'reftex-cite-regexp-hist)
205 "[ \t]*&&[ \t]*"))
206 215
207 (if (or (null re-list ) (equal re-list '(""))) 216 (if (or (null re-list ) (equal re-list '("")))
208 (setq re-list (list default))) 217 (setq re-list (list default)))
@@ -394,20 +403,7 @@ The environment should be located in FILES."
394 403
395 ;; Read a regexp, completing on known citation keys. 404 ;; Read a regexp, completing on known citation keys.
396 (setq default (regexp-quote (reftex-get-bibkey-default))) 405 (setq default (regexp-quote (reftex-get-bibkey-default)))
397 (setq re-list 406 (setq re-list (reftex--query-search-regexps default))
398 (split-string
399 (completing-read
400 (concat
401 "Regex { && Regex...}: "
402 "[" default "]: ")
403 (if reftex-mode
404 (if (fboundp 'LaTeX-bibitem-list)
405 (LaTeX-bibitem-list)
406 (cdr (assoc 'bibview-cache
407 (symbol-value reftex-docstruct-symbol))))
408 nil)
409 nil nil nil 'reftex-cite-regexp-hist)
410 "[ \t]*&&[ \t]*"))
411 407
412 (if (or (null re-list ) (equal re-list '(""))) 408 (if (or (null re-list ) (equal re-list '("")))
413 (setq re-list (list default))) 409 (setq re-list (list default)))