OK, many thanks. I renamed as suggested (the links should redirect), and will wait for Philip's instructions on the next steps re. ELPA, so as to get more feedback. (I've thus far incorporated feedback from colleagues, e.g., five people on my hallway, and a few elsewhere, who have been using some of these packages over the past year or so.) I'll respond to the specific issues you noted here, saving further discussion re. AUCTeX for auctex-devel: --8<---------------cut here---------------start------------->8--- > (defun tex-parens--beginning-of-defun () > "Move to the beginning of the current defun. > Here `defun' means top-level environment." > (interactive) > (re-search-backward "^\\\\begin{[^}]+}" nil t)) > --8<---------------cut here---------------end--------------->8--- > > Why do you use an internal name for a command > The idea was that this function would be used only in the setup function, like so: (setq-local beginning-of-defun-function #'tex-parens--beginning-of-defun). I guess I didn't need to make it (interactive). I've removed the (interactive) for now, but could just as well keep it and give the command an external name. > > --8<---------------cut here---------------start------------->8--- > (defun tex-numbers-update-cache (aux-file) > "Update the cache for AUX-FILE. > Return the updated cache, or nil if the aux file does not exist." > (when (file-exists-p aux-file) > (with-temp-buffer > (insert-file-contents aux-file) > (let ((cache (make-hash-table :test 'equal)) > (pattern "\\newlabel{\\([^}]+\\)}{{\\([^}]+\\)}")) > (save-excursion > (goto-char (point-min)) > (while (re-search-forward pattern nil t) > (let ((label (match-string 1)) > (number (match-string 2))) > (puthash label number cache)))) > (puthash 'timestamp (current-time) cache) > (puthash aux-file cache tex-numbers-cache) > cache)))) > --8<---------------cut here---------------end--------------->8--- > > I think pattern should be "\\\\newlabel{\\([^}]+\\)}{{\\([^}]+\\)}" > if you want to pass it to `re-search-forward'. > Thanks. (I had failed to notice this error because, by luck, it worked anyway: the regexp "\\n" matches "n".) Paul