From 2c35bdbb581c410b2e5562ee712d1cf170c82480 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 9 Oct 2012 00:00:23 -0700 Subject: [PATCH] Make cusver handle options moved from C to lisp * admin/admin.el (cusver-scan-cus-start): New function. (cusver-check): Scan old cus-start.el. --- admin/ChangeLog | 5 +++++ admin/admin.el | 27 ++++++++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/admin/ChangeLog b/admin/ChangeLog index 7d4921887ce..c10ec67147b 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,8 @@ +2012-10-09 Glenn Morris + + * admin.el (cusver-scan-cus-start): New function. + (cusver-check): Scan old cus-start.el. + 2012-10-07 Glenn Morris * admin.el (cusver-new-version): Set default. diff --git a/admin/admin.el b/admin/admin.el index 3e3fbba7202..59d085b6405 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -446,8 +446,6 @@ If optional OLD is non-nil, also include defvars." (1+ emacs-minor-version)) "Version number that new defcustoms should have.") -;; TODO do something about renamed variables with aliases to the old name? -;; Scan old cus-start.el to find variables moved from C to lisp? (defun cusver-scan (file &optional old) "Scan FILE for `defcustom' calls. Return a list with elements of the form (VAR . VER), @@ -486,6 +484,21 @@ If optional argument OLD is non-nil, also scan for defvars." (message "%sdone" m) alist)) +(defun cusver-scan-cus-start (file) + "Scan cus-start.el and return an alist with elements (VAR . VER)." + (if (file-readable-p file) + (with-temp-buffer + (insert-file-contents file) + (when (search-forward "(let ((all '(" nil t) + (backward-char 1) + (let (var ver alist) + (dolist (elem (ignore-errors (read (current-buffer)))) + (when (symbolp (setq var (car-safe elem))) + (or (stringp (setq ver (nth 3 elem))) + (setq ver nil)) + (setq alist (cons (cons var ver) alist)))) + alist))))) + (define-button-type 'cusver-xref 'action #'cusver-goto-xref) (defun cusver-goto-xref (button) @@ -501,11 +514,9 @@ If optional argument OLD is non-nil, also scan for defvars." (pop-to-buffer (current-buffer)))))) ;; You should probably at least do a grep over the old directory -;; to check the results of this look sensible. Eg cus-start if -;; something moved from C to Lisp. -;; TODO handle renamed things with aliases to the old names. -;; What to do about new files? Does everything in there need a :version, -;; or eg just the defgroup? +;; to check the results of this look sensible. +;; TODO Check cus-start if something moved from C to Lisp. +;; TODO Handle renamed things with aliases to the old names. (defun cusver-check (newdir olddir version) "Check that defcustoms have :version tags where needed. NEWDIR is the current lisp/ directory, OLDDIR is that from the previous @@ -537,6 +548,8 @@ changes (in a non-trivial way). This function does not check for that." (message "Reading old defcustoms...") (dolist (file oldfiles) (setq oldcus (append oldcus (cusver-scan file t)))) + (setq oldcus (append oldcus (cusver-scan-cus-start + (expand-file-name "cus-start.el" olddir)))) ;; newcus has elements (FILE (VAR VER) ... ). ;; oldcus just (VAR . VER). (message "Checking for version tags...") -- 2.39.2