|
|
1.1 root 1: ;; Change log maintenance commands for Emacs
2: ;; Copyright (C) 1985 Richard M. Stallman.
3:
4: ;; This file is part of GNU Emacs.
5:
6: ;; GNU Emacs is distributed in the hope that it will be useful,
7: ;; but WITHOUT ANY WARRANTY. No author or distributor
8: ;; accepts responsibility to anyone for the consequences of using it
9: ;; or for whether it serves any particular purpose or works at all,
10: ;; unless he says so in writing. Refer to the GNU Emacs General Public
11: ;; License for full details.
12:
13: ;; Everyone is granted permission to copy, modify and redistribute
14: ;; GNU Emacs, but only under the conditions described in the
15: ;; GNU Emacs General Public License. A copy of this license is
16: ;; supposed to have been given to you along with GNU Emacs so you
17: ;; can know your rights and responsibilities. It should be in a
18: ;; file named COPYING. Among other things, the copyright notice
19: ;; and this notice must be preserved on all copies.
20:
21:
22: ;; >> Potential lossage if two people edit change log at same time.
23: ;; >> Maybe should lock file and unlock when written out.
24:
25: (defun add-change-log-entry (&optional whoami)
26: "Find change log file and add an entry for today.
27: With ARG, prompt for name and site of person."
28: (interactive "P")
29: (let* ((full-name (if whoami
30: (read-input "Full name: " (user-full-name))
31: (user-full-name)))
32: ;; Note that some sites have room and phone number fields in
33: ;; full name which look silly when inserted. Rather than do
34: ;; anything about that here, let user give prefix argument so that
35: ;; s/he can edit the full name field in prompter if s/he wants.
36: (login-name (if whoami
37: (read-input "Login name: " (user-login-name))
38: (user-login-name)))
39: (site-name (if whoami
40: (read-input "Site name: " (system-name))
41: (system-name))))
42: (find-file (expand-file-name
43: (read-file-name "Log file (default ChangeLog): "
44: nil "ChangeLog")))
45: (or (eq major-mode 'indented-text-mode)
46: (progn
47: (indented-text-mode)
48: (setq left-margin 8)
49: (setq fill-column 74)))
50: (auto-fill-mode 1)
51: (goto-char (point-min))
52: (if (not (and (looking-at (substring (current-time-string) 0 10))
53: (save-excursion (re-search-forward "(.* at")
54: (skip-chars-backward "^(")
55: (looking-at login-name))))
56: (progn (insert (current-time-string)
57: " " full-name
58: " (" login-name
59: " at " site-name ")\n\n")))
60: (goto-char (point-min))
61: (forward-line 1)
62: (while (looking-at "\\sW")
63: (forward-line 1))
64: (delete-region (point)
65: (progn
66: (skip-chars-backward "\n")
67: (point)))
68: (open-line 3)
69: (forward-line 2)
70: (indent-to left-margin)
71: (insert "* ")))
72:
73:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.