aboutsummaryrefslogtreecommitdiffstats
path: root/admin/admin.el
diff options
context:
space:
mode:
authorGlenn Morris2016-01-07 20:16:31 -0500
committerGlenn Morris2016-01-07 20:16:31 -0500
commit428b3de2bfeaa445ca096a5cfabacda8253e8f0e (patch)
tree8d939b40d52fa057181f5393ea1205818c1012cf /admin/admin.el
parent648de81b0b3be18e317d66c3bc09091038a06e96 (diff)
downloademacs-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.el75
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 \
162Non-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.