I have this function:
(defvar biblio-publishers-info-list
'(("Cambridge University Press" . "Cambridge, U.K."))
"DOCSTRING")
(defun biblio-publishers-info-complete ()
"DOCSTRING. E.g.:
Cambridge University Press (2013)
-->
Cambridge University Press, Cambridge, U.K. (2013)"
(interactive)
(save-excursion
(goto-char (point-max))
(let* ((replace-regexp-lax-whitespace "\\(?:\n?[~\s\t]+\\|\n\\)")
(case-fold-search t)
(case-replace nil))
(delete-trailing-whitespace)
(dolist (COUPLE biblio-publishers-info-list)
(let* ((PUBLISHER (car COUPLE))
(ADDRESS (cdr COUPLE)))
(with-syntax-table (copy-syntax-table latex-mode-syntax-table)
(modify-syntax-entry '126 "-" )
(query-replace-regexp (format "\\(%s\\),? (?\\([12][0-9]\\{3\\}\\))?"
(downcase PUBLISHER))
(format "%s, %s (\\2)" PUBLISHER ADDRESS)
nil (point-min) (point-max))))))))
It works on:
Cambridge University Press (2013)
Cambridge University Press, 2013
CAMBRIDGE UNIVERSITY PRESS 2013
cambridge university Press (2013)
cambridge
university Press (2013)
but not on:
Cambridge University~Press, 2013
Is it possible to make query-replace-regexp
interpret the ~
character as a whitespace? I tried do modify the syntax table but it didn't work.
I need to use this function on LaTeX
documents so the major mode is latex-mode
.