diff options
| author | Glenn Morris | 2016-01-07 20:16:31 -0500 |
|---|---|---|
| committer | Glenn Morris | 2016-01-07 20:16:31 -0500 |
| commit | 428b3de2bfeaa445ca096a5cfabacda8253e8f0e (patch) | |
| tree | 8d939b40d52fa057181f5393ea1205818c1012cf /admin/admin.el | |
| parent | 648de81b0b3be18e317d66c3bc09091038a06e96 (diff) | |
| download | emacs-428b3de2bfeaa445ca096a5cfabacda8253e8f0e.tar.gz emacs-428b3de2bfeaa445ca096a5cfabacda8253e8f0e.zip | |
* admin/admin.el (set-version): Also handle the NEWS file.
Diffstat (limited to 'admin/admin.el')
| -rw-r--r-- | admin/admin.el | 75 |
1 files changed, 68 insertions, 7 deletions
diff --git a/admin/admin.el b/admin/admin.el index 7923f0bb466..fe807ff96fe 100644 --- a/admin/admin.el +++ b/admin/admin.el | |||
| @@ -96,13 +96,74 @@ Root must be the root of an Emacs source tree." | |||
| 96 | (submatch (1+ (in "0-9.")))))) | 96 | (submatch (1+ (in "0-9.")))))) |
| 97 | ;; Major version only. | 97 | ;; Major version only. |
| 98 | (when (string-match "\\([0-9]\\{2,\\}\\)" version) | 98 | (when (string-match "\\([0-9]\\{2,\\}\\)" version) |
| 99 | (setq version (match-string 1 version)) | 99 | (let ((newmajor (match-string 1 version))) |
| 100 | (set-version-in-file root "src/msdos.c" version | 100 | (set-version-in-file root "src/msdos.c" newmajor |
| 101 | (rx (and "Vwindow_system_version" (1+ not-newline) | 101 | (rx (and "Vwindow_system_version" (1+ not-newline) |
| 102 | ?\( (submatch (1+ (in "0-9"))) ?\)))) | 102 | ?\( (submatch (1+ (in "0-9"))) ?\)))) |
| 103 | (set-version-in-file root "etc/refcards/ru-refcard.tex" version | 103 | (set-version-in-file root "etc/refcards/ru-refcard.tex" newmajor |
| 104 | "\\\\newcommand{\\\\versionemacs}\\[0\\]\ | 104 | "\\\\newcommand{\\\\versionemacs}\\[0\\]\ |
| 105 | {\\([0-9]\\{2,\\}\\)}.+%.+version of Emacs")) | 105 | {\\([0-9]\\{2,\\}\\)}.+%.+version of Emacs"))) |
| 106 | (let* ((oldversion | ||
| 107 | (with-temp-buffer | ||
| 108 | (insert-file-contents (expand-file-name "README" root)) | ||
| 109 | (if (re-search-forward "version \\([0-9.]*\\)" nil t) | ||
| 110 | (version-to-list (match-string 1))))) | ||
| 111 | (oldmajor (if oldversion (car oldversion))) | ||
| 112 | (newversion (version-to-list version)) | ||
| 113 | (newmajor (car newversion)) | ||
| 114 | (newshort (format "%s.%s" newmajor | ||
| 115 | (+ (cadr newversion) | ||
| 116 | (if (eq 2 (length newversion)) 0 1)))) | ||
| 117 | (majorbump (and oldversion (not (equal oldmajor newmajor)))) | ||
| 118 | (minorbump (and oldversion (not majorbump) | ||
| 119 | (not (equal (cadr oldversion) (cadr newversion))))) | ||
| 120 | (newsfile (expand-file-name "etc/NEWS" root)) | ||
| 121 | (oldnewsfile (expand-file-name (format "etc/NEWS.%s" oldmajor) root))) | ||
| 122 | (when (and majorbump | ||
| 123 | (not (file-exists-p oldnewsfile))) | ||
| 124 | (rename-file newsfile oldnewsfile) | ||
| 125 | (find-file oldnewsfile) ; to prompt you to commit it | ||
| 126 | (copy-file oldnewsfile newsfile) | ||
| 127 | (with-temp-buffer | ||
| 128 | (insert-file-contents newsfile) | ||
| 129 | (re-search-forward "is about changes in Emacs version \\([0-9]+\\)") | ||
| 130 | (replace-match (number-to-string newmajor) nil nil nil 1) | ||
| 131 | (re-search-forward "^See files \\(NEWS\\)") | ||
| 132 | (replace-match (format "NEWS.%s, NEWS" oldmajor) nil nil nil 1) | ||
| 133 | (let ((start (line-beginning-position))) | ||
| 134 | (search-forward "in older Emacs versions") | ||
| 135 | (or (equal start (line-beginning-position)) | ||
| 136 | (fill-region start (line-beginning-position 2)))) | ||
| 137 | (re-search-forward "^$") | ||
| 138 | (forward-line -1) | ||
| 139 | (let ((start (point))) | ||
| 140 | (goto-char (point-max)) | ||
| 141 | (re-search-backward "^$" nil nil 2) | ||
| 142 | (delete-region start (line-beginning-position 0))) | ||
| 143 | (write-region nil nil newsfile))) | ||
| 144 | (when (or majorbump minorbump) | ||
| 145 | (find-file newsfile) | ||
| 146 | (goto-char (point-min)) | ||
| 147 | (if (re-search-forward (format "^\\* .*in Emacs %s" newshort) nil t) | ||
| 148 | (progn | ||
| 149 | (kill-buffer) | ||
| 150 | (message "No need to update etc/NEWS")) | ||
| 151 | (goto-char (point-min)) | ||
| 152 | (re-search-forward "^$") | ||
| 153 | (forward-line -1) | ||
| 154 | (dolist (s '("Installation Changes" "Startup Changes" "Changes" | ||
| 155 | "Editing Changes" | ||
| 156 | "Changes in Specialized Modes and Packages" | ||
| 157 | "New Modes and Packages" | ||
| 158 | "Incompatible Lisp Changes" | ||
| 159 | "Lisp Changes")) | ||
| 160 | (insert (format "\n\n* %s in Emacs %s\n" s newshort))) | ||
| 161 | (insert (format "\n\n* Changes in Emacs %s on \ | ||
| 162 | Non-Free Operating Systems\n" newshort))) | ||
| 163 | ;; Because we skip "bump version" commits when merging between branches. | ||
| 164 | ;; Probably doesn't matter in practice, because NEWS changes | ||
| 165 | ;; will only happen on master anyway. | ||
| 166 | (message "Commit any NEWS changes separately"))) | ||
| 106 | (message "Setting version numbers...done")) | 167 | (message "Setting version numbers...done")) |
| 107 | 168 | ||
| 108 | ;; Note this makes some assumptions about form of short copyright. | 169 | ;; Note this makes some assumptions about form of short copyright. |