Commit 2c35bdbb authored by Glenn Morris's avatar Glenn Morris
Browse files

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.
parent 10766e9e
2012-10-09 Glenn Morris <rgm@gnu.org>
* admin.el (cusver-scan-cus-start): New function.
(cusver-check): Scan old cus-start.el.
2012-10-07 Glenn Morris <rgm@gnu.org> 2012-10-07 Glenn Morris <rgm@gnu.org>
* admin.el (cusver-new-version): Set default. * admin.el (cusver-new-version): Set default.
......
...@@ -446,8 +446,6 @@ If optional OLD is non-nil, also include defvars." ...@@ -446,8 +446,6 @@ If optional OLD is non-nil, also include defvars."
(1+ emacs-minor-version)) (1+ emacs-minor-version))
"Version number that new defcustoms should have.") "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) (defun cusver-scan (file &optional old)
"Scan FILE for `defcustom' calls. "Scan FILE for `defcustom' calls.
Return a list with elements of the form (VAR . VER), 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." ...@@ -486,6 +484,21 @@ If optional argument OLD is non-nil, also scan for defvars."
(message "%sdone" m) (message "%sdone" m)
alist)) 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) (define-button-type 'cusver-xref 'action #'cusver-goto-xref)
(defun cusver-goto-xref (button) (defun cusver-goto-xref (button)
...@@ -501,11 +514,9 @@ If optional argument OLD is non-nil, also scan for defvars." ...@@ -501,11 +514,9 @@ If optional argument OLD is non-nil, also scan for defvars."
(pop-to-buffer (current-buffer)))))) (pop-to-buffer (current-buffer))))))
;; You should probably at least do a grep over the old directory ;; You should probably at least do a grep over the old directory
;; to check the results of this look sensible. Eg cus-start if ;; to check the results of this look sensible.
;; something moved from C to Lisp. ;; TODO Check cus-start if something moved from C to Lisp.
;; TODO handle renamed things with aliases to the old names. ;; 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?
(defun cusver-check (newdir olddir version) (defun cusver-check (newdir olddir version)
"Check that defcustoms have :version tags where needed. "Check that defcustoms have :version tags where needed.
NEWDIR is the current lisp/ directory, OLDDIR is that from the previous 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." ...@@ -537,6 +548,8 @@ changes (in a non-trivial way). This function does not check for that."
(message "Reading old defcustoms...") (message "Reading old defcustoms...")
(dolist (file oldfiles) (dolist (file oldfiles)
(setq oldcus (append oldcus (cusver-scan file t)))) (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) ... ). ;; newcus has elements (FILE (VAR VER) ... ).
;; oldcus just (VAR . VER). ;; oldcus just (VAR . VER).
(message "Checking for version tags...") (message "Checking for version tags...")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment