Mercurial > emacs
annotate admin/admin.el @ 67086:7ae3d744378e
(Custom-reset-standard): Make it handle Custom group
buffers correctly. (It used to throw an error in such buffers.)
Make it ask for confirmation in group buffers and other Custom
buffers containing more than one customization item.
author | Luc Teirlinck <teirllm@auburn.edu> |
---|---|
date | Tue, 22 Nov 2005 23:28:28 +0000 |
parents | ffd4e3fb1637 |
children | 726551ae0c3e aa89c814f853 |
rev | line source |
---|---|
40063 | 1 ;;; admin.el --- utilities for Emacs administration |
2 | |
61547
1926d92f781e
(add-release-logs): Fix require call.
Lute Kamstra <lute@gnu.org>
parents:
52401
diff
changeset
|
3 ;; Copyright (C) 2001, 2005 Free Software Foundation, Inc. |
40063 | 4 |
5 ;; This file is part of GNU Emacs. | |
6 | |
7 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
8 ;; it under the terms of the GNU General Public License as published by | |
9 ;; the Free Software Foundation; either version 2, or (at your option) | |
10 ;; any later version. | |
11 | |
12 ;; GNU Emacs is distributed in the hope that it will be useful, | |
13 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 ;; GNU General Public License for more details. | |
16 | |
17 ;; You should have received a copy of the GNU General Public License | |
18 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
64079 | 19 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
20 ;; Boston, MA 02110-1301, USA. | |
40063 | 21 |
22 ;;; Commentary: | |
23 | |
61547
1926d92f781e
(add-release-logs): Fix require call.
Lute Kamstra <lute@gnu.org>
parents:
52401
diff
changeset
|
24 ;; add-release-logs Add ``Version X released'' change log entries. |
1926d92f781e
(add-release-logs): Fix require call.
Lute Kamstra <lute@gnu.org>
parents:
52401
diff
changeset
|
25 ;; set-version Change Emacs version number in source tree. |
40063 | 26 |
27 ;;; Code: | |
28 | |
29 (defun process-lines (program &rest args) | |
30 "Execute PROGRAM with ARGS, returning its output as a list of lines. | |
31 Signal an error if the program returns with a non-zero exit status." | |
32 (with-temp-buffer | |
33 (let ((status (apply 'call-process program nil (current-buffer) nil args))) | |
34 (unless (eq status 0) | |
35 (error "%s exited with status %s" program status)) | |
36 (goto-char (point-min)) | |
37 (let (lines) | |
38 (while (not (eobp)) | |
39 (setq lines (cons (buffer-substring-no-properties | |
40 (line-beginning-position) | |
41 (line-end-position)) | |
42 lines)) | |
43 (forward-line 1)) | |
44 (nreverse lines))))) | |
45 | |
46 (defun add-release-logs (root version) | |
47 "Add \"Version VERSION released.\" change log entries in ROOT. | |
48 Root must be the root of an Emacs source tree." | |
49 (interactive "DEmacs root directory: \nNVersion number: ") | |
49298
bb7bf9ff7c97
(add-release-logs): Expand the directory name before calling find(1).
Francesco Potortì <pot@gnu.org>
parents:
40161
diff
changeset
|
50 (setq root (expand-file-name root)) |
40063 | 51 (unless (file-exists-p (expand-file-name "src/emacs.c" root)) |
52 (error "%s doesn't seem to be the root of an Emacs source tree" root)) | |
61547
1926d92f781e
(add-release-logs): Fix require call.
Lute Kamstra <lute@gnu.org>
parents:
52401
diff
changeset
|
53 (require 'add-log) |
40063 | 54 (let* ((logs (process-lines "find" root "-name" "ChangeLog")) |
55 (entry (format "%s %s <%s>\n\n\t* Version %s released.\n\n" | |
49298
bb7bf9ff7c97
(add-release-logs): Expand the directory name before calling find(1).
Francesco Potortì <pot@gnu.org>
parents:
40161
diff
changeset
|
56 (funcall add-log-time-format) |
bb7bf9ff7c97
(add-release-logs): Expand the directory name before calling find(1).
Francesco Potortì <pot@gnu.org>
parents:
40161
diff
changeset
|
57 (or add-log-full-name (user-full-name)) |
bb7bf9ff7c97
(add-release-logs): Expand the directory name before calling find(1).
Francesco Potortì <pot@gnu.org>
parents:
40161
diff
changeset
|
58 (or add-log-mailing-address user-mail-address) |
bb7bf9ff7c97
(add-release-logs): Expand the directory name before calling find(1).
Francesco Potortì <pot@gnu.org>
parents:
40161
diff
changeset
|
59 version))) |
40063 | 60 (dolist (log logs) |
40084
1f20d08b9da5
(add-release-logs): Put the log entry in lispref, too.
Gerd Moellmann <gerd@gnu.org>
parents:
40063
diff
changeset
|
61 (unless (string-match "/gnus/" log) |
40063 | 62 (find-file log) |
63 (goto-char (point-min)) | |
64 (insert entry))))) | |
65 | |
66 (defun set-version-in-file (root file version rx) | |
67 (find-file (expand-file-name file root)) | |
68 (goto-char (point-min)) | |
69 (unless (re-search-forward rx nil t) | |
70 (error "Version not found in %s" file)) | |
71 (replace-match (format "%s" version) nil nil nil 1)) | |
72 | |
73 (defun set-version (root version) | |
74 "Set Emacs version to VERSION in relevant files under ROOT. | |
75 Root must be the root of an Emacs source tree." | |
40161
795c8ca09f8b
(set-version): Use `s' interactive spec for
Gerd Moellmann <gerd@gnu.org>
parents:
40084
diff
changeset
|
76 (interactive "DEmacs root directory: \nsVersion number: ") |
40063 | 77 (unless (file-exists-p (expand-file-name "src/emacs.c" root)) |
78 (error "%s doesn't seem to be the root of an Emacs source tree" root)) | |
79 (set-version-in-file root "lisp/version.el" version | |
80 (rx (and "emacs-version" (0+ space) | |
81 ?\" (submatch (1+ (not (in ?\")))) ?\"))) | |
82 (set-version-in-file root "README" version | |
83 (rx (and "version" (1+ space) | |
84 (submatch (1+ (in "0-9.")))))) | |
85 (set-version-in-file root "man/emacs.texi" version | |
86 (rx (and "EMACSVER" (1+ space) | |
63217
3ef574f6b152
(set-version): Set version in lisp manual too.
Lute Kamstra <lute@gnu.org>
parents:
61547
diff
changeset
|
87 (submatch (1+ (in "0-9.")))))) |
3ef574f6b152
(set-version): Set version in lisp manual too.
Lute Kamstra <lute@gnu.org>
parents:
61547
diff
changeset
|
88 (set-version-in-file root "lispref/elisp.texi" version |
3ef574f6b152
(set-version): Set version in lisp manual too.
Lute Kamstra <lute@gnu.org>
parents:
61547
diff
changeset
|
89 (rx (and "EMACSVER" (1+ space) |
65774
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
90 (submatch (1+ (in "0-9.")))))) |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
91 ;; nt/emacs.rc also contains the version number, but in an awkward |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
92 ;; format. It must contain four components, separated by commas, and |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
93 ;; in two places those commas are followed by space, in two other |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
94 ;; places they are not. |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
95 (let* ((version-components (append (split-string version "\\.") |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
96 '("0" "0"))) |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
97 (comma-version |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
98 (concat (car version-components) "," |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
99 (cadr version-components) "," |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
100 (cadr (cdr version-components)) "," |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
101 (cadr (cdr (cdr version-components))))) |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
102 (comma-space-version |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
103 (concat (car version-components) ", " |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
104 (cadr version-components) ", " |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
105 (cadr (cdr version-components)) ", " |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
106 (cadr (cdr (cdr version-components)))))) |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
107 (set-version-in-file root "nt/emacs.rc" comma-version |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
108 (rx (and "FILEVERSION" (1+ space) |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
109 (submatch (1+ (in "0-9,")))))) |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
110 (set-version-in-file root "nt/emacs.rc" comma-version |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
111 (rx (and "PRODUCTVERSION" (1+ space) |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
112 (submatch (1+ (in "0-9,")))))) |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
113 (set-version-in-file root "nt/emacs.rc" comma-space-version |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
114 (rx (and "\"FileVersion\"" (0+ space) ?, (0+ space) |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
115 ?\" (submatch (1+ (in "0-9, "))) "\\0\""))) |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
116 (set-version-in-file root "nt/emacs.rc" comma-space-version |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
117 (rx (and "\"ProductVersion\"" (0+ space) ?, |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
118 (0+ space) ?\" (submatch (1+ (in "0-9, "))) |
ffd4e3fb1637
(set-version): Set version numbers in nt/emacs.rc.
Jason Rumney <jasonr@gnu.org>
parents:
64079
diff
changeset
|
119 "\\0\""))))) |
49298
bb7bf9ff7c97
(add-release-logs): Expand the directory name before calling find(1).
Francesco Potortì <pot@gnu.org>
parents:
40161
diff
changeset
|
120 |
52401 | 121 ;;; arch-tag: 4ea83636-2293-408b-884e-ad64f22a3bf5 |
40063 | 122 ;; admin.el ends here. |