]> code.delx.au - gnu-emacs/blobdiff - lisp/add-log.el
Use __sparc__ rather than sparc.
[gnu-emacs] / lisp / add-log.el
index 27da19ee602fbcd8eeb3e1527509a24e6b1ee5ef..1ac7d879b9e8bdce9ddb8e16f90800aff86516b1 100644 (file)
@@ -1,7 +1,7 @@
 ;;; add-log.el --- change log maintenance commands for Emacs
 
 ;;; add-log.el --- change log maintenance commands for Emacs
 
-;; Copyright (C) 1985, 1986, 1988, 1993, 1994, 1997, 1998, 2000, 2003,
-;;   2004, 2005 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1988, 1993, 1994, 1997, 1998, 2000, 2001,
+;;   2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: tools
 
 ;; Maintainer: FSF
 ;; Keywords: tools
@@ -10,7 +10,7 @@
 
 ;; GNU Emacs is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
 
 ;; GNU Emacs is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
 ;; any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
@@ -45,6 +45,7 @@
   :type '(choice (const :tag "default" nil)
                 string)
   :group 'change-log)
   :type '(choice (const :tag "default" nil)
                 string)
   :group 'change-log)
+(put 'change-log-default-name 'safe-local-variable 'string-or-null-p)
 
 (defcustom change-log-mode-hook nil
   "Normal hook run by `change-log-mode'."
 
 (defcustom change-log-mode-hook nil
   "Normal hook run by `change-log-mode'."
@@ -70,7 +71,7 @@ This defaults to the value returned by the function `user-full-name'."
 
 ;;;###autoload
 (defcustom add-log-mailing-address nil
 
 ;;;###autoload
 (defcustom add-log-mailing-address nil
-  "*Email addresses of user, for inclusion in ChangeLog headers.
+  "Email addresses of user, for inclusion in ChangeLog headers.
 This defaults to the value of `user-mail-address'.  In addition to
 being a simple string, this value can also be a list.  All elements
 will be recognized as referring to the same user; when creating a new
 This defaults to the value of `user-mail-address'.  In addition to
 being a simple string, this value can also be a list.  All elements
 will be recognized as referring to the same user; when creating a new
@@ -81,7 +82,7 @@ ChangeLog entry, one element will be chosen at random."
   :group 'change-log)
 
 (defcustom add-log-time-format 'add-log-iso8601-time-string
   :group 'change-log)
 
 (defcustom add-log-time-format 'add-log-iso8601-time-string
-  "*Function that defines the time format.
+  "Function that defines the time format.
 For example, `add-log-iso8601-time-string', which gives the
 date in international ISO 8601 format,
 and `current-time-string' are two valid values."
 For example, `add-log-iso8601-time-string', which gives the
 date in international ISO 8601 format,
 and `current-time-string' are two valid values."
@@ -93,7 +94,7 @@ and `current-time-string' are two valid values."
   :group 'change-log)
 
 (defcustom add-log-keep-changes-together nil
   :group 'change-log)
 
 (defcustom add-log-keep-changes-together nil
-  "*If non-nil, normally keep day's log entries for one file together.
+  "If non-nil, normally keep day's log entries for one file together.
 
 Log entries for a given file made with \\[add-change-log-entry] or
 \\[add-change-log-entry-other-window] will only be added to others \
 
 Log entries for a given file made with \\[add-change-log-entry] or
 \\[add-change-log-entry-other-window] will only be added to others \
@@ -125,20 +126,20 @@ this variable."
   :group 'change-log)
 
 (defcustom add-log-always-start-new-record nil
   :group 'change-log)
 
 (defcustom add-log-always-start-new-record nil
-  "*If non-nil, `add-change-log-entry' will always start a new record."
+  "If non-nil, `add-change-log-entry' will always start a new record."
   :version "22.1"
   :type 'boolean
   :group 'change-log)
 
 (defcustom add-log-buffer-file-name-function nil
   :version "22.1"
   :type 'boolean
   :group 'change-log)
 
 (defcustom add-log-buffer-file-name-function nil
-  "*If non-nil, function to call to identify the full filename of a buffer.
+  "If non-nil, function to call to identify the full filename of a buffer.
 This function is called with no argument.  If this is nil, the default is to
 use `buffer-file-name'."
   :type '(choice (const nil) function)
   :group 'change-log)
 
 (defcustom add-log-file-name-function nil
 This function is called with no argument.  If this is nil, the default is to
 use `buffer-file-name'."
   :type '(choice (const nil) function)
   :group 'change-log)
 
 (defcustom add-log-file-name-function nil
-  "*If non-nil, function to call to identify the filename for a ChangeLog entry.
+  "If non-nil, function to call to identify the filename for a ChangeLog entry.
 This function is called with one argument, the value of variable
 `buffer-file-name' in that buffer.  If this is nil, the default is to
 use the file's name relative to the directory of the change log file."
 This function is called with one argument, the value of variable
 `buffer-file-name' in that buffer.  If this is nil, the default is to
 use the file's name relative to the directory of the change log file."
@@ -284,12 +285,18 @@ Note: The search is conducted only within 10%, at the beginning of the file."
     map)
   "Keymap for Change Log major mode.")
 
     map)
   "Keymap for Change Log major mode.")
 
-(defvar change-log-time-zone-rule nil
+;; It used to be called change-log-time-zone-rule but really should be
+;; called add-log-time-zone-rule since it's only used from add-log-* code.
+(defvaralias 'change-log-time-zone-rule 'add-log-time-zone-rule)
+(defvar add-log-time-zone-rule nil
   "Time zone used for calculating change log time stamps.
 It takes the same format as the TZ argument of `set-time-zone-rule'.
   "Time zone used for calculating change log time stamps.
 It takes the same format as the TZ argument of `set-time-zone-rule'.
-If nil, use local time.")
+If nil, use local time.
+If t, use universal time.")
+(put 'add-log-time-zone-rule 'safe-local-variable
+     '(lambda (x) (or (booleanp x) (stringp x))))
 
 
-(defun add-log-iso8601-time-zone (time)
+(defun add-log-iso8601-time-zone (&optional time)
   (let* ((utc-offset (or (car (current-time-zone time)) 0))
         (sign (if (< utc-offset 0) ?- ?+))
         (sec (abs utc-offset))
   (let* ((utc-offset (or (car (current-time-zone time)) 0))
         (sign (if (< utc-offset 0) ?- ?+))
         (sec (abs utc-offset))
@@ -302,18 +309,14 @@ If nil, use local time.")
                  (t "%c%02d"))
            sign hh mm ss)))
 
                  (t "%c%02d"))
            sign hh mm ss)))
 
+(defvar add-log-iso8601-with-time-zone nil)
+
 (defun add-log-iso8601-time-string ()
 (defun add-log-iso8601-time-string ()
-  (if change-log-time-zone-rule
-      (let ((tz (getenv "TZ"))
-           (now (current-time)))
-       (unwind-protect
-           (progn
-             (set-time-zone-rule change-log-time-zone-rule)
-             (concat
-              (format-time-string "%Y-%m-%d " now)
-              (add-log-iso8601-time-zone now)))
-         (set-time-zone-rule tz)))
-    (format-time-string "%Y-%m-%d")))
+  (let ((time (format-time-string "%Y-%m-%d"
+                                  nil (eq t add-log-time-zone-rule))))
+    (if add-log-iso8601-with-time-zone
+        (concat time " " (add-log-iso8601-time-zone))
+      time)))
 
 (defun change-log-name ()
   "Return (system-dependent) default name for a change log file."
 
 (defun change-log-name ()
   "Return (system-dependent) default name for a change log file."
@@ -492,7 +495,7 @@ The change log file can start with a copyright notice and a copying
 permission notice.  The first blank line indicates the end of these
 notices.
 
 permission notice.  The first blank line indicates the end of these
 notices.
 
-Today's date is calculated according to `change-log-time-zone-rule' if
+Today's date is calculated according to `add-log-time-zone-rule' if
 non-nil, otherwise in local time."
   (interactive (list current-prefix-arg
                     (prompt-for-change-log-name)))
 non-nil, otherwise in local time."
   (interactive (list current-prefix-arg
                     (prompt-for-change-log-name)))
@@ -506,19 +509,19 @@ non-nil, otherwise in local time."
         (file-name (expand-file-name (find-change-log file-name buffer-file)))
         ;; Set ITEM to the file name to use in the new item.
         (item (add-log-file-name buffer-file file-name))
         (file-name (expand-file-name (find-change-log file-name buffer-file)))
         ;; Set ITEM to the file name to use in the new item.
         (item (add-log-file-name buffer-file file-name))
-        bound
-        (full-name (or add-log-full-name (user-full-name)))
-        (mailing-address (or add-log-mailing-address user-mail-address)))
+        bound full-name mailing-address)
 
     (if whoami
        (progn
 
     (if whoami
        (progn
-         (setq full-name (read-string "Full name: " full-name))
+         (setq full-name (read-string "Full name: "
+                                      (or add-log-full-name (user-full-name))))
          ;; Note that some sites have room and phone number fields in
          ;; full name which look silly when inserted.  Rather than do
          ;; anything about that here, let user give prefix argument so that
          ;; s/he can edit the full name field in prompter if s/he wants.
          (setq mailing-address
          ;; Note that some sites have room and phone number fields in
          ;; full name which look silly when inserted.  Rather than do
          ;; anything about that here, let user give prefix argument so that
          ;; s/he can edit the full name field in prompter if s/he wants.
          (setq mailing-address
-               (read-string "Mailing address: " mailing-address))))
+               (read-string "Mailing address: "
+                            (or add-log-mailing-address user-mail-address)))))
 
     (unless (equal file-name buffer-file-name)
       (if (or other-window (window-dedicated-p (selected-window)))
 
     (unless (equal file-name buffer-file-name)
       (if (or other-window (window-dedicated-p (selected-window)))
@@ -529,6 +532,11 @@ non-nil, otherwise in local time."
     (undo-boundary)
     (goto-char (point-min))
 
     (undo-boundary)
     (goto-char (point-min))
 
+    (or full-name
+       (setq full-name (or add-log-full-name (user-full-name))))
+    (or mailing-address
+        (setq mailing-address (or add-log-mailing-address user-mail-address)))
+
     ;; If file starts with a copyright and permission notice, skip them.
     ;; Assume they end at first blank line.
     (when (looking-at "Copyright")
     ;; If file starts with a copyright and permission notice, skip them.
     ;; Assume they end at first blank line.
     (when (looking-at "Copyright")
@@ -536,13 +544,22 @@ non-nil, otherwise in local time."
       (skip-chars-forward "\n"))
 
     ;; Advance into first entry if it is usable; else make new one.
       (skip-chars-forward "\n"))
 
     ;; Advance into first entry if it is usable; else make new one.
-    (let ((new-entries (mapcar (lambda (addr)
-                                (concat (funcall add-log-time-format)
-                                        "  " full-name
-                                        "  <" addr ">"))
-                              (if (consp mailing-address)
-                                  mailing-address
-                                (list mailing-address)))))
+    (let ((new-entries
+           (mapcar (lambda (addr)
+                     (concat
+                      (if (stringp add-log-time-zone-rule)
+                          (let ((tz (getenv "TZ")))
+                            (unwind-protect
+                                (progn
+                                  (set-time-zone-rule add-log-time-zone-rule)
+                                  (funcall add-log-time-format))
+                              (set-time-zone-rule tz)))
+                        (funcall add-log-time-format))
+                      "  " full-name
+                      "  <" addr ">"))
+                   (if (consp mailing-address)
+                       mailing-address
+                     (list mailing-address)))))
       (if (and (not add-log-always-start-new-record)
                (let ((hit nil))
                 (dolist (entry new-entries hit)
       (if (and (not add-log-always-start-new-record)
                (let ((hit nil))
                 (dolist (entry new-entries hit)
@@ -551,7 +568,8 @@ non-nil, otherwise in local time."
          (forward-line 1)
        (insert (nth (random (length new-entries))
                     new-entries)
          (forward-line 1)
        (insert (nth (random (length new-entries))
                     new-entries)
-               "\n\n")
+               (if use-hard-newlines hard-newline "\n")
+               (if use-hard-newlines hard-newline "\n"))
        (forward-line -1)))
 
     ;; Determine where we should stop searching for a usable
        (forward-line -1)))
 
     ;; Determine where we should stop searching for a usable
@@ -584,7 +602,8 @@ non-nil, otherwise in local time."
           ;; Delete excess empty lines; make just 2.
           (while (and (not (eobp)) (looking-at "^\\s *$"))
             (delete-region (point) (line-beginning-position 2)))
           ;; Delete excess empty lines; make just 2.
           (while (and (not (eobp)) (looking-at "^\\s *$"))
             (delete-region (point) (line-beginning-position 2)))
-          (insert-char ?\n 2)
+          (insert (if use-hard-newlines hard-newline "\n")
+                  (if use-hard-newlines hard-newline "\n"))
           (forward-line -2)
           (indent-relative-maybe))
          (t
           (forward-line -2)
           (indent-relative-maybe))
          (t
@@ -593,7 +612,9 @@ non-nil, otherwise in local time."
             (forward-line 1))
           (while (and (not (eobp)) (looking-at "^\\s *$"))
             (delete-region (point) (line-beginning-position 2)))
             (forward-line 1))
           (while (and (not (eobp)) (looking-at "^\\s *$"))
             (delete-region (point) (line-beginning-position 2)))
-          (insert-char ?\n 3)
+          (insert (if use-hard-newlines hard-newline "\n")
+                  (if use-hard-newlines hard-newline "\n")
+                  (if use-hard-newlines hard-newline "\n"))
           (forward-line -2)
           (indent-to left-margin)
           (insert "* ")
           (forward-line -2)
           (indent-to left-margin)
           (insert "* ")
@@ -644,23 +665,22 @@ the change log file in another window."
                   (list current-prefix-arg
                         (prompt-for-change-log-name))))
   (add-change-log-entry whoami file-name t))
                   (list current-prefix-arg
                         (prompt-for-change-log-name))))
   (add-change-log-entry whoami file-name t))
-;;;###autoload (define-key ctl-x-4-map "a" 'add-change-log-entry-other-window)
 
 
-(defvar add-log-indent-text 0)
+(defvar change-log-indent-text 0)
 
 
-(defun add-log-indent ()
+(defun change-log-indent ()
   (let* ((indent
          (save-excursion
            (beginning-of-line)
            (skip-chars-forward " \t")
            (cond
   (let* ((indent
          (save-excursion
            (beginning-of-line)
            (skip-chars-forward " \t")
            (cond
-            ((and (looking-at "\\(.*\\)  [^ \n].*[^ \n]  <.*>$")
+            ((and (looking-at "\\(.*\\)  [^ \n].*[^ \n]  <.*>\\(?: +(.*)\\)? *$")
                   ;; Matching the output of add-log-time-format is difficult,
                   ;; but I'll get it has at least two adjacent digits.
                   (string-match "[[:digit:]][[:digit:]]" (match-string 1)))
              0)
             ((looking-at "[^*(]")
                   ;; Matching the output of add-log-time-format is difficult,
                   ;; but I'll get it has at least two adjacent digits.
                   (string-match "[[:digit:]][[:digit:]]" (match-string 1)))
              0)
             ((looking-at "[^*(]")
-             (+ (current-left-margin) add-log-indent-text))
+             (+ (current-left-margin) change-log-indent-text))
             (t (current-left-margin)))))
         (pos (save-excursion (indent-line-to indent) (point))))
     (if (> pos (point)) (goto-char pos))))
             (t (current-left-margin)))))
         (pos (save-excursion (indent-line-to indent) (point))))
     (if (> pos (point)) (goto-char pos))))
@@ -682,7 +702,7 @@ Runs `change-log-mode-hook'.
        tab-width 8)
   (set (make-local-variable 'fill-paragraph-function)
        'change-log-fill-paragraph)
        tab-width 8)
   (set (make-local-variable 'fill-paragraph-function)
        'change-log-fill-paragraph)
-  (set (make-local-variable 'indent-line-function) 'add-log-indent)
+  (set (make-local-variable 'indent-line-function) 'change-log-indent)
   (set (make-local-variable 'tab-always-indent) nil)
   ;; We really do want "^" in paragraph-start below: it is only the
   ;; lines that begin at column 0 (despite the left-margin of 8) that
   (set (make-local-variable 'tab-always-indent) nil)
   ;; We really do want "^" in paragraph-start below: it is only the
   ;; lines that begin at column 0 (despite the left-margin of 8) that
@@ -716,23 +736,23 @@ Prefix arg means justify as well."
 \f
 (defcustom add-log-current-defun-header-regexp
   "^\\([[:upper:]][[:upper:]_ ]*[[:upper:]_]\\|[-_[:alpha:]]+\\)[ \t]*[:=]"
 \f
 (defcustom add-log-current-defun-header-regexp
   "^\\([[:upper:]][[:upper:]_ ]*[[:upper:]_]\\|[-_[:alpha:]]+\\)[ \t]*[:=]"
-  "*Heuristic regexp used by `add-log-current-defun' for unknown major modes."
+  "Heuristic regexp used by `add-log-current-defun' for unknown major modes."
   :type 'regexp
   :group 'change-log)
 
 ;;;###autoload
 (defvar add-log-lisp-like-modes
   :type 'regexp
   :group 'change-log)
 
 ;;;###autoload
 (defvar add-log-lisp-like-modes
-    '(emacs-lisp-mode lisp-mode scheme-mode dsssl-mode lisp-interaction-mode)
+  '(emacs-lisp-mode lisp-mode scheme-mode dsssl-mode lisp-interaction-mode)
   "*Modes that look like Lisp to `add-log-current-defun'.")
 
 ;;;###autoload
 (defvar add-log-c-like-modes
   "*Modes that look like Lisp to `add-log-current-defun'.")
 
 ;;;###autoload
 (defvar add-log-c-like-modes
-    '(c-mode c++-mode c++-c-mode objc-mode)
+  '(c-mode c++-mode c++-c-mode objc-mode)
   "*Modes that look like C to `add-log-current-defun'.")
 
 ;;;###autoload
 (defvar add-log-tex-like-modes
   "*Modes that look like C to `add-log-current-defun'.")
 
 ;;;###autoload
 (defvar add-log-tex-like-modes
-    '(TeX-mode plain-TeX-mode LaTeX-mode plain-tex-mode latex-mode)
+  '(TeX-mode plain-TeX-mode LaTeX-mode plain-tex-mode latex-mode)
   "*Modes that look like TeX to `add-log-current-defun'.")
 
 ;;;###autoload
   "*Modes that look like TeX to `add-log-current-defun'.")
 
 ;;;###autoload
@@ -778,150 +798,9 @@ Has a preference of looking backwards."
                   (buffer-substring-no-properties (point)
                                                   (progn (forward-sexp 1)
                                                          (point)))))
                   (buffer-substring-no-properties (point)
                                                   (progn (forward-sexp 1)
                                                          (point)))))
-               ((and (memq major-mode add-log-c-like-modes)
-                     (save-excursion
-                       (beginning-of-line)
-                       ;; Use eq instead of = here to avoid
-                       ;; error when at bob and char-after
-                       ;; returns nil.
-                       (while (eq (char-after (- (point) 2)) ?\\)
-                         (forward-line -1))
-                       (looking-at "[ \t]*#[ \t]*define[ \t]")))
-                ;; Handle a C macro definition.
-                (beginning-of-line)
-                (while (eq (char-after (- (point) 2)) ?\\) ;not =; note above
-                  (forward-line -1))
-                (search-forward "define")
-                (skip-chars-forward " \t")
-                (buffer-substring-no-properties (point)
-                                                (progn (forward-sexp 1)
-                                                       (point))))
                ((memq major-mode add-log-c-like-modes)
                ((memq major-mode add-log-c-like-modes)
-                (beginning-of-line)
-                ;; See if we are in the beginning part of a function,
-                ;; before the open brace.  If so, advance forward.
-                (while (not (looking-at "{\\|\\(\\s *$\\)"))
-                  (forward-line 1))
-                (or (eobp)
-                    (forward-char 1))
-                (let (maybe-beg)
-                  ;; Try to find the containing defun.
-                  (beginning-of-defun)
-                  (end-of-defun)
-                  ;; If the defun we found ends before the desired position,
-                  ;; see if there's a DEFUN construct
-                  ;; between that end and the desired position.
-                  (when (save-excursion
-                          (and (> location (point))
-                               (re-search-forward "^DEFUN"
-                                                  (save-excursion
-                                                    (goto-char location)
-                                                    (line-end-position))
-                                                  t)
-                               (re-search-forward "^{" nil t)
-                               (setq maybe-beg (point))))
-                    ;; If so, go to the end of that instead.
-                    (goto-char maybe-beg)
-                    (end-of-defun)))
-                ;; If the desired position is within the defun we found,
-                ;; find the function name.
-                (when (< location (point))
-                  (backward-sexp 1)
-                  (let (beg tem)
-
-                    (forward-line -1)
-                    ;; Skip back over typedefs of arglist.
-                    (while (and (not (bobp))
-                                (looking-at "[ \t\n]"))
-                      (forward-line -1))
-                    ;; See if this is using the DEFUN macro used in Emacs,
-                    ;; or the DEFUN macro used by the C library:
-                    (if (condition-case nil
-                            (and (save-excursion
-                                   (end-of-line)
-                                   (while (= (preceding-char) ?\\)
-                                     (end-of-line 2))
-                                   (backward-sexp 1)
-                                   (beginning-of-line)
-                                   (setq tem (point))
-                                   (looking-at "DEFUN\\b"))
-                                 (>= location tem))
-                          (error nil))
-                         ;; DEFUN ("file-name-directory", Ffile_name_directory, Sfile_name_directory, ...) ==> Ffile_name_directory
-                         ;; DEFUN(POSIX::STREAM-LOCK, stream lockp &key BLOCK SHARED START LENGTH) ==> POSIX::STREAM-LOCK
-                        (progn
-                          (goto-char tem)
-                          (down-list 1)
-                          (when (= (char-after (point)) ?\")
-                             (forward-sexp 1)
-                             (search-forward ","))
-                           (skip-syntax-forward " ")
-                          (buffer-substring-no-properties
-                           (point)
-                           (progn (search-forward ",")
-                                   (forward-char -1)
-                                   (skip-syntax-backward " ")
-                                  (point))))
-                      (if (looking-at "^[+-]")
-                          (change-log-get-method-definition)
-                        ;; Ordinary C function syntax.
-                        (setq beg (point))
-                        (if (and
-                             ;; Protect against "Unbalanced parens" error.
-                             (condition-case nil
-                                 (progn
-                                   (down-list 1) ; into arglist
-                                   (backward-up-list 1)
-                                   (skip-chars-backward " \t")
-                                   t)
-                               (error nil))
-                             ;; Verify initial pos was after
-                             ;; real start of function.
-                             (save-excursion
-                               (goto-char beg)
-                               ;; For this purpose, include the line
-                               ;; that has the decl keywords.  This
-                               ;; may also include some of the
-                               ;; comments before the function.
-                               (while (and (not (bobp))
-                                           (save-excursion
-                                             (forward-line -1)
-                                             (looking-at "[^\n\f]")))
-                                 (forward-line -1))
-                               (>= location (point)))
-                             ;; Consistency check: going down and up
-                             ;; shouldn't take us back before BEG.
-                             (> (point) beg))
-                            (let (end middle)
-                              ;; Don't include any final whitespace
-                              ;; in the name we use.
-                              (skip-chars-backward " \t\n")
-                              (setq end (point))
-                              (backward-sexp 1)
-                              ;; Now find the right beginning of the name.
-                              ;; Include certain keywords if they
-                              ;; precede the name.
-                              (setq middle (point))
-                              (forward-word -1)
-                              ;; Ignore these subparts of a class decl
-                              ;; and move back to the class name itself.
-                              (while (looking-at "public \\|private ")
-                                (skip-chars-backward " \t:")
-                                (setq end (point))
-                                (backward-sexp 1)
-                                (setq middle (point))
-                                (forward-word -1))
-                              (and (bolp)
-                                   (looking-at
-                                    "enum \\|struct \\|union \\|class ")
-                                   (setq middle (point)))
-                              (goto-char end)
-                              (when (eq (preceding-char) ?=)
-                                (forward-char -1)
-                                (skip-chars-backward " \t")
-                                (setq end (point)))
-                              (buffer-substring-no-properties
-                               middle end))))))))
+                (or (c-cpp-define-name)
+                    (c-defun-name)))
                ((memq major-mode add-log-tex-like-modes)
                 (if (re-search-backward
                      "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)"
                ((memq major-mode add-log-tex-like-modes)
                 (if (re-search-backward
                      "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)"
@@ -1061,36 +940,13 @@ old-style time formats for entries are supported."
                        (and (= ?\n (char-before))
                             (or (<= (1- (point)) (point-min))
                                 (= ?\n (char-before (1- (point)))))))
                        (and (= ?\n (char-before))
                             (or (<= (1- (point)) (point-min))
                                 (= ?\n (char-before (1- (point)))))))
-             (insert "\n"))
+             (insert (if use-hard-newlines hard-newline "\n")))
            ;; Move to the end of it to terminate outer loop.
            (with-current-buffer other-buf
              (goto-char (point-max)))
            (insert-buffer-substring other-buf start)))))))
 
            ;; Move to the end of it to terminate outer loop.
            (with-current-buffer other-buf
              (goto-char (point-max)))
            (insert-buffer-substring other-buf start)))))))
 
-;;;###autoload
-(defun change-log-redate ()
-  "Fix any old-style date entries in the current log file to default format."
-  (interactive)
-  (require 'timezone)
-  (save-excursion
-    (goto-char (point-min))
-    (while (re-search-forward "^\\sw.........[0-9:+ ]*" nil t)
-      (unless (= 12 (- (match-end 0) (match-beginning 0)))
-       (let* ((date (save-match-data
-                      (timezone-fix-time (match-string 0) nil nil)))
-              (zone (if (consp (aref date 6))
-                        (nth 1 (aref date 6)))))
-         (replace-match (format-time-string
-                         "%Y-%m-%d  "
-                         (encode-time (aref date 5)
-                                      (aref date 4)
-                                      (aref date 3)
-                                      (aref date 2)
-                                      (aref date 1)
-                                      (aref date 0)
-                                      zone))))))))
-
 (provide 'add-log)
 
 (provide 'add-log)
 
-;;; arch-tag: 81eee6fc-088f-4372-a37f-80ad9620e762
+;; arch-tag: 81eee6fc-088f-4372-a37f-80ad9620e762
 ;;; add-log.el ends here
 ;;; add-log.el ends here