annotate lisp/add-log.el @ 1016:817b0ce337d7

* window.c (Fset_window_configuration): Removed #if 0'd code which assumes that minibuf_window is on the same frame as the window configuration. Removed special case for windows whose prevs point to themselves. * window.c (Fset_window_configuration): Rename the argument from ARG to CONFIGURATION, so it matches the docstring. The make-docfile program cares. * window.c [MULTI_FRAME] (syms_of_window): Don't staticpro minibuf_window; the frame list will take care of it. * window.c (window_loop): This used to keep track of the first window processed and wait until we came back around to it. Sadly, this doesn't work if that window gets deleted. So instead, use Fprevious_window to find the last window to process, and loop until we've done that one. * window.c [not MULTI_FRAME] (init_window_once): Don't forget to set the `mini_p' flag on the new minibuffer window to t. * window.c (Fwindow_at): Don't check the type of the frame argument. * window.c [not MULTI_FRAME] (window_loop): Set frame to zero, instead of trying to decode it. * window.c (init_window_once): Initialize minibuf_window before FRAME_ROOT_WINDOW, so the latter actually points to something.
author Jim Blandy <jimb@redhat.com>
date Wed, 19 Aug 1992 06:40:02 +0000
parents d8d503897aa5
children 5cc1bd18edf7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1 ;;; add-log.el --- change log maintenance commands for Emacs
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
3 ;; Copyright (C) 1985, 86, 87, 88, 89, 90, 91, 1992
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
4 ;; Free Software Foundation, Inc.
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
5
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
6 ;; This file is part of GNU Emacs.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
7
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
8 ;; GNU Emacs is free software; you can redistribute it and/or modify
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
9 ;; it under the terms of the GNU General Public License as published by
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 678
diff changeset
10 ;; the Free Software Foundation; either version 2, or (at your option)
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11 ;; any later version.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
13 ;; GNU Emacs is distributed in the hope that it will be useful,
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16 ;; GNU General Public License for more details.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; You should have received a copy of the GNU General Public License
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; along with GNU Emacs; see the file COPYING. If not, write to
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 678
diff changeset
22 ;;; Code:
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
23
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
24 ;;;###autoload
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
25 (defvar change-log-default-name nil
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
26 "*Name of a change log file for \\[add-change-log-entry].")
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
27
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
28 (defun change-log-name ()
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
29 (or change-log-default-name
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
30 (if (eq system-type 'vax-vms) "$CHANGE_LOG$.TXT" "ChangeLog")))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
31
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
32 (defun prompt-for-change-log-name ()
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
33 "Prompt for a change log name."
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
34 (let ((default (change-log-name)))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
35 (expand-file-name
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
36 (read-file-name (format "Log file (default %s): " default)
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
37 nil default))))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
38
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
39 ;;;###autoload
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
40 (defun add-change-log-entry (&optional whoami file-name other-window)
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
41 "Find change log file and add an entry for today.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
42 Optional arg (interactive prefix) non-nil means prompt for user name and site.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
43 Second arg is file name of change log. If nil, uses `change-log-default-name'.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
44 Third arg OTHER-WINDOW non-nil means visit in other window."
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
45 (interactive (list current-prefix-arg
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
46 (prompt-for-change-log-name)))
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
47 (let* ((full-name (if whoami
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
48 (read-input "Full name: " (user-full-name))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
49 (user-full-name)))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
50 ;; Note that some sites have room and phone number fields in
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
51 ;; full name which look silly when inserted. Rather than do
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
52 ;; anything about that here, let user give prefix argument so that
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53 ;; s/he can edit the full name field in prompter if s/he wants.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
54 (login-name (if whoami
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
55 (read-input "Login name: " (user-login-name))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
56 (user-login-name)))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
57 (site-name (if whoami
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
58 (read-input "Site name: " (system-name))
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
59 (system-name)))
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
60 (defun (add-log-current-defun))
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
61 entry entry-position empty-entry)
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
62 (or file-name
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
63 (setq file-name (or change-log-default-name
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
64 default-directory)))
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
65 (setq file-name (if (file-directory-p file-name)
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
66 (expand-file-name (change-log-name) file-name)
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
67 (expand-file-name file-name)))
912
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
68 ;; Chase links before visiting the file.
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
69 ;; This makes it easier to use a single change log file
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
70 ;; for several related directories.
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
71 (setq file-name (or (file-symlink-p file-name) file-name))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
72 (set (make-local-variable 'change-log-default-name) file-name)
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
73 (if buffer-file-name
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
74 (setq entry (if (string-match
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
75 (concat "^" (regexp-quote (file-name-directory
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
76 file-name)))
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
77 buffer-file-name)
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
78 (substring buffer-file-name (match-end 0))
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
79 (file-name-nondirectory buffer-file-name))))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
80 ;; Never want to add a change log entry for the ChangeLog file itself.
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
81 (if (equal entry "ChangeLog")
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
82 (setq entry nil
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
83 defun nil))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
84 (if (and other-window (not (equal file-name buffer-file-name)))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
85 (find-file-other-window file-name)
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
86 (find-file file-name))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
87 (undo-boundary)
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
88 (goto-char (point-min))
951
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
89 (or (looking-at (concat (substring (current-time-string) 0 10)
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
90 ".* " full-name " (" login-name "@"))
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
91 (insert (current-time-string)
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
92 " " full-name
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
93 " (" login-name
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
94 "@" site-name ")\n\n"))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
95 (goto-char (point-min))
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
96 (setq empty-entry
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
97 (and (search-forward "\n\t* \n" nil t)
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
98 (1- (point))))
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
99 (if (and entry
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
100 (not empty-entry))
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
101 ;; Look for today's entry for the same file.
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
102 ;; If there is an empty entry (just a `*'), take the hint and
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
103 ;; use it. This is so that C-x a from the ChangeLog buffer
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
104 ;; itself can be used to force the next entry to be added at
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
105 ;; the beginning, even if there are today's entries for the
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
106 ;; same file (but perhaps different revisions).
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
107 (let ((entry-boundary (save-excursion
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
108 (and (re-search-forward "\n[A-Z]" nil t)
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
109 (point)))))
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
110 (setq entry-position (save-excursion
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
111 (and (re-search-forward
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
112 (concat
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
113 (regexp-quote (concat "* " entry))
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
114 ;; don't accept `foo.bar' when
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
115 ;; looking for `foo':
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
116 "[ \n\t,:]")
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
117 entry-boundary
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
118 t)
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
119 (1- (match-end 0)))))))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
120 ;; Now insert the new line for this entry.
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
121 (cond (entry-position
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
122 ;; Move to the existing entry for the same file.
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
123 (goto-char entry-position)
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
124 (re-search-forward "^\\s *$")
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
125 (beginning-of-line)
912
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
126 (while (and (not (eobp)) (looking-at "^\\s *$"))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
127 (delete-region (point) (save-excursion (forward-line 1) (point))))
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
128 (insert "\n\n")
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
129 (forward-line -2)
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
130 (indent-relative-maybe))
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
131 (empty-entry
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
132 ;; Put this file name into the existing empty entry.
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
133 (goto-char empty-entry)
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
134 (if entry
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
135 (insert entry)))
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
136 (t
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
137 ;; Make a new entry.
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
138 (forward-line 1)
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
139 (while (looking-at "\\sW")
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
140 (forward-line 1))
912
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
141 (while (and (not (eobp)) (looking-at "^\\s *$"))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
142 (delete-region (point) (save-excursion (forward-line 1) (point))))
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
143 (insert "\n\n\n")
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
144 (forward-line -2)
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
145 (indent-to left-margin)
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
146 (insert "* " (or entry ""))))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
147 ;; Now insert the function name, if we have one.
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
148 ;; Point is at the entry for this file,
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
149 ;; either at the end of the line or at the first blank line.
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
150 (if defun
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
151 (progn
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
152 ;; Make it easy to get rid of the function name.
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
153 (undo-boundary)
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
154 (insert (if (save-excursion
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
155 (beginning-of-line 1)
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
156 (looking-at "\\s *$"))
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
157 ""
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
158 " ")
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
159 "(" defun "): "))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
160 ;; No function name, so put in a colon unless we have just a star.
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
161 (if (not (save-excursion
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
162 (beginning-of-line 1)
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
163 (looking-at "\\s *\\(\\*\\s *\\)?$")))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
164 (insert ": ")))))
661
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
165
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
166 ;;;###autoload
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
167 (define-key ctl-x-4-map "a" 'add-change-log-entry-other-window)
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
168
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
169 ;;;###autoload
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
170 (defun add-change-log-entry-other-window (&optional whoami file-name)
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
171 "Find change log file in other window and add an entry for today.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
172 First arg (interactive prefix) non-nil means prompt for user name and site.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
173 Second arg is file name of change log.
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
174 Interactively, with a prefix argument, the file name is prompted for."
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
175 (interactive (if current-prefix-arg
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
176 (list current-prefix-arg
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
177 (prompt-for-change-log-name))))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
178 (add-change-log-entry whoami file-name t))
36fbc3f71803 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
179
980
b62886fbf2a7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 953
diff changeset
180 ;;;###autoload
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
181 (defun change-log-mode ()
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
182 "Major mode for editting change logs; like Indented Text Mode.
912
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
183 Prevents numeric backups and sets `left-margin' to 8 and `fill-column' to 74.
951
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
184 New log entries are usually made with \\[add-change-log-entry] or \\[add-change-log-entry-other-window].
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
185 Each entry behaves as a paragraph, and the entries for one day as a page.
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
186 Runs `change-log-mode-hook'."
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
187 (interactive)
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
188 (kill-all-local-variables)
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
189 (indented-text-mode)
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
190 (setq major-mode 'change-log-mode)
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
191 (setq mode-name "Change Log")
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 678
diff changeset
192 (setq left-margin 8)
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 678
diff changeset
193 (setq fill-column 74)
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
194 ;; Let each entry behave as one paragraph:
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
195 (set (make-local-variable 'paragraph-start) "^\\s *$\\|^^L")
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
196 (set (make-local-variable 'paragraph-separate) "^\\s *$\\|^^L\\|^\\sw")
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
197 ;; Let all entries for one day behave as one page.
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
198 ;; Note that a page boundary is also a paragraph boundary.
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
199 ;; Unfortunately the date line of a page actually belongs to
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
200 ;; the next day, but I don't see how to avoid that since
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
201 ;; page moving cmds go to the end of the match, and Emacs
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
202 ;; regexps don't have a context feature.
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
203 (set (make-local-variable 'page-delimiter) "^[A-Z][a-z][a-z] .*\n\\|^ ")
678
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
204 (set (make-local-variable 'version-control) 'never)
8cff3b3bd089 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 666
diff changeset
205 (set (make-local-variable 'adaptive-fill-regexp) "\\s *")
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
206 (run-hooks 'change-log-mode-hook))
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
207
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
208 (defvar add-log-current-defun-header-regexp
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
209 "^\\([A-Z][A-Z_ ]+\\|[a-z_---A-Z]+\\)[ \t]*[:=]"
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
210 "*Heuristic regexp used by `add-log-current-defun' for unknown major modes.")
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
211
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
212 (defun add-log-current-defun ()
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
213 "Return name of function definition point is in, or nil.
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
214
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
215 Understands Lisp, LaTeX (\"functions\" are chapters, sections, ...),
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
216 Texinfo (@node titles), and C.
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
217
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
218 Other modes are handled by a heuristic that looks in the 10K before
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
219 point for uppercase headings starting in the first column or
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
220 identifiers followed by `:' or `=', see variable
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
221 `add-log-current-defun-header-regexp'.
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
222
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
223 Has a preference of looking backwards."
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
224 (save-excursion
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
225 (let ((location (point)))
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
226 (cond ((memq major-mode '(emacs-lisp-mode lisp-mode scheme-mode))
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
227 ;; If we are now precisely a the beginning of a defun,
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
228 ;; make sure beginning-of-defun finds that one
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
229 ;; rather than the previous one.
912
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
230 (or (eobp) (forward-char 1))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
231 (beginning-of-defun)
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
232 ;; Make sure we are really inside the defun found, not after it.
912
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
233 (if (and (progn (end-of-defun)
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
234 (< location (point)))
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
235 (progn (forward-sexp -1)
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
236 (>= location (point))))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
237 (progn
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
238 (forward-word 1)
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
239 (skip-chars-forward " ")
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
240 (buffer-substring (point)
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
241 (progn (forward-sexp 1) (point))))))
951
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
242 ((and (memq major-mode '(c-mode 'c++-mode))
912
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
243 (save-excursion (beginning-of-line)
947
c45ba80a9da9 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 913
diff changeset
244 ;; Use eq instead of = here to avoid
c45ba80a9da9 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 913
diff changeset
245 ;; error when at bob and char-after
c45ba80a9da9 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 913
diff changeset
246 ;; returns nil.
c45ba80a9da9 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 913
diff changeset
247 (while (eq (char-after (- (point) 2)) ?\\)
912
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
248 (forward-line -1))
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
249 (looking-at "[ \t]*#[ \t]*define[ \t]")))
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
250 ;; Handle a C macro definition.
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
251 (beginning-of-line)
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
252 (while (= (char-after (- (point) 2)) ?\\)
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
253 (forward-line -1))
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
254 (search-forward "define")
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
255 (skip-chars-forward " \t")
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
256 (buffer-substring (point)
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
257 (progn (forward-sexp 1) (point))))
951
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
258 ((memq major-mode '(c-mode 'c++-mode))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
259 ;; See if we are in the beginning part of a function,
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
260 ;; before the open brace. If so, advance forward.
951
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
261 (while (not (looking-at "{\\|\\(\\s *$\\)"))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
262 (forward-line 1))
951
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
263 (or (eobp)
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
264 (forward-char 1))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
265 (beginning-of-defun)
912
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
266 (if (progn (end-of-defun)
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
267 (< location (point)))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
268 (progn
912
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
269 (backward-sexp 1)
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
270 (let (beg tem)
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
271
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
272 (forward-line -1)
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
273 ;; Skip back over typedefs of arglist.
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
274 (while (and (not (bobp))
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
275 (looking-at "[ \t\n]"))
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
276 (forward-line -1))
951
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
277 ;; See if this is using the DEFUN macro used in Emacs,
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
278 ;; or the DEFUN macro used by the C library.
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
279 (if (and (looking-at "DEFUN\\b")
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
280 (>= location (point)))
912
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
281 (progn
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
282 (down-list 1)
951
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
283 (if (= (char-after (point)) ?\")
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
284 (progn
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
285 (forward-sexp 1)
c23539669808 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 947
diff changeset
286 (skip-chars-forward " ,")))
912
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
287 (buffer-substring (point)
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
288 (progn (forward-sexp 1) (point))))
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
289 ;; Ordinary C function syntax.
1c37c99856de *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
290 (setq beg (point))
953
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
291 (if (condition-case nil
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
292 ;; Protect against "Unbalanced parens" error.
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
293 (progn
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
294 (down-list 1) ; into arglist
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
295 (backward-up-list 1)
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
296 (skip-chars-backward " \t")
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
297 t)
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
298 (error nil))
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
299 ;; Verify initial pos was after
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
300 ;; real start of function.
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
301 (if (and (save-excursion
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
302 (goto-char beg)
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
303 ;; For this purpose, include the line
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
304 ;; that has the decl keywords. This
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
305 ;; may also include some of the
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
306 ;; comments before the function.
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
307 (while (and (not (bobp))
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
308 (save-excursion
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
309 (forward-line -1)
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
310 (looking-at "[^\n\f]")))
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
311 (forward-line -1))
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
312 (>= location (point)))
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
313 ;; Consistency check: going down and up
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
314 ;; shouldn't take us back before BEG.
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
315 (> (point) beg))
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
316 (buffer-substring (point)
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
317 (progn (backward-sexp 1)
7c035a87c691 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 951
diff changeset
318 (point))))))))))
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
319 ((memq major-mode
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
320 '(TeX-mode plain-TeX-mode LaTeX-mode;; tex-mode.el
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
321 plain-tex-mode latex-mode;; cmutex.el
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
322 ))
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
323 (if (re-search-backward
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
324 "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)" nil t)
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
325 (progn
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
326 (goto-char (match-beginning 0))
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
327 (buffer-substring (1+ (point));; without initial backslash
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
328 (progn
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
329 (end-of-line)
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
330 (point))))))
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
331 ((eq major-mode 'texinfo-mode)
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
332 (if (re-search-backward "^@node[ \t]+\\([^,]+\\)," nil t)
666
7fa6b835da67 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 661
diff changeset
333 (buffer-substring (match-beginning 1)
837
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
334 (match-end 1))))
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
335 (t
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
336 ;; If all else fails, try heuristics
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
337 (let (case-fold-search)
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
338 (if (re-search-backward add-log-current-defun-header-regexp
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
339 (- (point) 10000)
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
340 t)
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
341 (buffer-substring (match-beginning 1)
a8aef92e0025 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 811
diff changeset
342 (match-end 1)))))))))
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 678
diff changeset
343
999
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 980
diff changeset
344
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 980
diff changeset
345
980
b62886fbf2a7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 953
diff changeset
346 (provide 'add-log)
b62886fbf2a7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 953
diff changeset
347
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 678
diff changeset
348 ;;; add-log.el ends here