;ELC   
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



(byte-code "\300\301\302\303\304\305\306\307\310\311\310\312&\210\313\314\315\316\317DD\320\321\322%\210\323\314\324\325#\210\313\326\315\316\327DD\330\321\331%\210\313\332\315\316\333DD\334\321\335%\210\313\336\315\316\337DD\340\321\341%\210\313\342\315\316\343DD\344\321\345%\210\313\346\315\316\347DD\350\321\351%\210\313\352\315\316\353DD\354\355\356\321\357&\210\313\360\315\316\361DD\362\355\363\321\357&\207" [custom-declare-group change-log nil "Change log maintenance." :group tools :link (custom-manual "(emacs)Change Log") :prefix "change-log-" "add-log-" custom-declare-variable change-log-default-name funcall function #[0 "\300\207" [nil] 1 #1=""] "Name of a change log file for \\[add-change-log-entry]." :type (choice (const :tag "default" nil) string) put safe-local-variable string-or-null-p change-log-mode-hook #[0 "\300\207" [nil] 1 #1#] "Normal hook run by `change-log-mode'." hook add-log-current-defun-function #[0 "\300\207" [nil] 1 #1#] "If non-nil, function to guess name of surrounding function.\nIt is called by `add-log-current-defun' with no argument, and\nshould return the function's name as a string, or nil if point is\noutside a function." (choice (const nil) function) add-log-full-name #[0 "\300\207" [nil] 1 #1#] "Full name of user, for inclusion in ChangeLog daily headers.\nThis defaults to the value returned by the function `user-full-name'." (choice (const :tag "Default" nil) string) add-log-mailing-address #[0 "\300\207" [nil] 1 #1#] "Email addresses of user, for inclusion in ChangeLog headers.\nThis defaults to the value of `user-mail-address'.  In addition to\nbeing a simple string, this value can also be a list.  All elements\nwill be recognized as referring to the same user; when creating a new\nChangeLog entry, one element will be chosen at random." (choice (const :tag "Default" nil) (string :tag "String") (repeat :tag "List of Strings" string)) add-log-time-format #[0 "\300\207" [add-log-iso8601-time-string] 1 #1#] "Function that defines the time format.\nFor example, `add-log-iso8601-time-string', which gives the\ndate in international ISO 8601 format,\nand `current-time-string' are two valid values." (radio (const :tag "International ISO 8601 format" add-log-iso8601-time-string) (const :tag "Old format, as returned by `current-time-string'" current-time-string) (function :tag "Other")) add-log-keep-changes-together #[0 "\300\207" [nil] 1 #1#] "If non-nil, normally keep day's log entries for one file together.\n\nLog entries for a given file made with \\[add-change-log-entry] or\n\\[add-change-log-entry-other-window] will only be added to others for that file made\ntoday if this variable is non-nil or that file comes first in today's\nentries.  Otherwise another entry for that file will be started.  An\noriginal log:\n\n	* foo (...): ...\n	* bar (...): change 1\n\nin the latter case, \\[add-change-log-entry-other-window] in a buffer visiting `bar', yields:\n\n	* bar (...): -!-\n	* foo (...): ...\n	* bar (...): change 1\n\nand in the former:\n\n	* foo (...): ...\n	* bar (...): change 1\n	(...): -!-\n\nThe NEW-ENTRY arg to `add-change-log-entry' can override the effect of\nthis variable." :version "20.3" boolean add-log-always-start-new-record #[0 "\300\207" [nil] 1 #1#] "If non-nil, `add-change-log-entry' will always start a new record." "22.1"] 12)
#@158 If non-nil, function to call to identify the full filename of a buffer.
This function is called with no argument.  The default is to
use `buffer-file-name'.
(defvar add-log-buffer-file-name-function 'buffer-file-name (#$ . 3427))
(byte-code "\300\301\302\303\304DD\305\306\307%\210\300\310\302\303\311DD\312\313\314\306\315&\210\300\316\302\303\317DD\320\313\314\306\321&\210\300\322\302\303\323DD\324\313\325\306\326&\210\327\330\331\332\313\314%\210\327\333\334\335\313\314%\210\327\336\337\340\313\314%\210\327\341\342\343\313\314%\210\327\344\345\346\313\314%\210\327\347\350\351\313\314%\210\327\352\353\354\313\314%\210\327\355\356\357\313\314%\210\360\361\362\355#\210\360\361\363\364\365!\206\211 \366#\207" [custom-declare-variable add-log-file-name-function funcall function #[0 "\300\207" [nil] 1 #1=""] "If non-nil, function to call to identify the filename for a ChangeLog entry.\nThis function is called with one argument, the value of variable\n`buffer-file-name' in that buffer.  If this is nil, the default is to\nuse the file's name relative to the directory of the change log file." :type (choice (const nil) function) change-log-version-info-enabled #[0 "\300\207" [nil] 1 #1#] "If non-nil, enable recording version numbers with the changes." :version "21.1" boolean change-log-version-number-regexp-list #[0 "\300\301D\207" ["^(def[^ 	\n]+[ 	]+[^ 	\n][ 	]\"\\([0-9]+\\.[0-9.]+\\)" "^;+ *Revision: +[^ 	\n]+[ 	]+\\([0-9]+\\.[0-9.]+\\)"] 2 #1#] "List of regexps to search for version number.\nThe version number must be in group 1.\nNote: The search is conducted only within 10%, at the beginning of the file." (repeat regexp) change-log-directory-files #[0 "\300\207" [(".bzr" ".git" ".hg" ".svn")] 1 #1#] "List of files that cause `find-change-log' to stop in containing directory.\nThis applies if no pre-existing ChangeLog is found.  If nil, then in such\na case simply use the directory containing the changed file." "26.1" (repeat file) custom-declare-face change-log-date ((t (:inherit font-lock-string-face))) "Face used to highlight dates in date lines." change-log-name ((t (:inherit font-lock-constant-face))) "Face for highlighting author names." change-log-email ((t (:inherit font-lock-variable-name-face))) "Face for highlighting author email addresses." change-log-file ((t (:inherit font-lock-function-name-face))) "Face for highlighting file names." change-log-list ((t (:inherit font-lock-keyword-face))) "Face for highlighting parenthesized lists of functions or variables." change-log-conditionals ((t (:inherit font-lock-variable-name-face))) "Face for highlighting conditionals of the form `[...]'." change-log-function ((t (:inherit font-lock-variable-name-face))) "Face for highlighting items of the form `<....>'." change-log-acknowledgment ((t (:inherit font-lock-comment-face))) "Face for highlighting acknowledgments." put change-log-acknowledgement face-alias obsolete-face purecopy "24.3" t] 8)
(defconst change-log-file-names-re "^\\( +\\|	\\)\\* \\([^ ,:([\n]+\\)")
(defconst change-log-start-entry-re "^\\sw.........[0-9:+ ]*")
#@57 Additional expressions to highlight in Change Log mode.
(defvar change-log-font-lock-keywords (byte-code "\301\302B\303BB\207" [change-log-file-names-re ("^[0-9-]+ +\\|^ \\{11,\\}\\|^	 \\{3,\\}\\|^\\(Sun\\|Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\) [A-Z][a-z][a-z] [0-9:+ ]+" (0 'change-log-date) ("\\([^<(]+?\\)[ 	]*[(<]\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)[>)]" nil nil (1 'change-log-name) (2 'change-log-email))) ((2 'change-log-file) ("\\=, \\([^ ,:([\n]+\\)" nil nil (1 'change-log-file)) ("\\= (\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" nil nil (1 'change-log-list)) ("\\=, *\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" nil nil (1 'change-log-list))) (("^\\( +\\|	\\)(\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" (2 'change-log-list) ("\\=, *\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" nil nil (1 'change-log-list))) ("\\[!?\\([^]\n]+\\)\\]\\(:\\| (\\)" (1 'change-log-conditionals)) ("<\\([^>\n]+\\)>\\(:\\| (\\)" (1 'change-log-function)) ("\\(^\\( +\\|	\\)\\|  \\)\\(Thanks to\\|Patch\\(es\\)? by\\|Report\\(ed by\\| from\\)\\|Suggest\\(ed by\\|ion from\\)\\)" 3 'change-log-acknowledgment))] 3) (#$ . 6517))
#@62 Return the file-name for the change under point.

(fn WHERE)
(defalias 'change-log-search-file-name #[257 "\212\211b\210\302\303!\210\304!\203 \305	\306\307#\210\310\311!\202T \304	!\203& \310\311!\202T \312\313\314	\315\260\306\307#\203K \303\224\203E \305	\306\307#\210\310\311!\202T \310\316!\202T \305	\306\307#\210\310\311!)\207" [change-log-start-entry-re change-log-file-names-re beginning-of-line 1 looking-at re-search-forward nil t match-string-no-properties 2 re-search-backward "\\(" "\\)\\|\\(" "\\)" 4] 7 (#$ . 7662)])
(defconst change-log-unindented-file-names-re "^[*] \\([^ ,:([\n]+\\)")
#@179 Read ChangeLog entries at point until END.
Move point to the end of entries that were read.  Return a list
in the same form as `diff-add-log-current-defuns'.

(fn &optional END)
(defalias 'change-log-read-entries #[256 "\301\203 `W\203# \302!\203# \303\225b\210\304\305!\306!BB\262\202 \211\237\207" [change-log-unindented-file-names-re nil looking-at 0 match-string-no-properties 1 change-log-read-defuns] 5 (#$ . 8278)])
#@169 Read ChangeLog formatted function names at point until END.
Move point to the end of names read and return the function names
as a list of strings.

(fn &optional END)
(defalias 'change-log-read-defuns #[256 "\301\302w\203* \203 `W\203* \303!\203* \304\225b\210\305\306\307!\310\311#\237\244\262\202 \312\301x\210\211\237\207" [change-log-tag-re nil ":\n[:blank:]" looking-at 0 split-string match-string-no-properties 1 ",[[:blank:]]*" t "\n[:blank:]"] 6 (#$ . 8716)])
#@144 Format and insert CHANGELOGS into current buffer.
CHANGELOGS is a list in the form returned by
`diff-add-log-current-defuns'.

(fn CHANGELOGS)
(defalias 'change-log-insert-entries #[257 "\211\300\211:\203G @\262\211A\262\242\262\301\261\210\204# \302c\210\202@ \303c\210\300:\203> @\262\304\305\261\210A\262\202( \266A\262\202 \300\207" [nil "* " ":\n" " " "(" "):\n"] 9 (#$ . 9200)])
#@44 Visit the file for the change under point.
(defalias 'change-log-find-file #[0 "\300`!\211\203 \301!\203 \302!\207\303\304\"\207" [change-log-search-file-name file-exists-p find-file message "No such file or directory: %s"] 4 (#$ . 9612) nil])
#@295 Search for a tag name within subexpression 1 of last match.
Optional argument FROM specifies a buffer position where the tag
name should be located.  Return value is a cons whose car is the
string representing the tag and whose cdr is the position where
the tag was found.

(fn &optional FROM)
(defalias 'change-log-search-tag-name-1 #[256 "\214\300\224\300\225}\210\211\203 \211b\210\301\302!\203 \300\224b\210\303 `)B\207" [1 looking-at "[(]?\\(?:\\(?:\\sw\\|\\s_\\)+\\(?:[ 	]+\\(\\sw\\|\\s_\\)+\\)\\)" find-tag-default] 3 (#$ . 9868)])
#@51 Regexp matching a tag name in change log entries.
(defconst change-log-tag-re "(\\(\\(?:\\sw\\|\\s_\\)+\\(?:[, 	]+\\(?:\\sw\\|\\s_\\)+\\)*\\))" (#$ . 10415))
#@246 Search for a tag name near `point'.
Optional argument AT non-nil means search near buffer position AT.
Return value is a cons whose car is the string representing
the tag and whose cdr is the position where the tag was found.

(fn &optional AT)
(defalias 'change-log-search-tag-name #[256 "\212\211\206 `\211\262b\210\214~\210\3031$ \212\304 \210\305!\205 \306!)0\202( \210\202+ \206\357 \3071C \212\310\311w\205> \305!\205> \306 )0\202G \210\202J \206\357 \3121q \212\313 \210\305	!\205l \314\225b\205l \315\316!\205l \305!\205l \306 )0\202u \210\202x \206\357 \3171\355 \212\311\210\320\n\311\321#\203\215 \314\224\202\216 e)\212\311\210\322\n\311\321#\203\240 \314\224\202\241 d)W\205\347 X\205\347 X\205\347 \214}\210\320\311\321#\203\321 \323\224\323\225}\210db\210\324 dB\202\346 \322\311\321#\205\346 \323\224\323\225}\210eb\210\324 eB)\266\2020\202\357 \210\311*\207" [change-log-tag-re change-log-file-names-re change-log-start-entry-re (error) backward-up-list looking-at change-log-search-tag-name-1 (error) " 	" nil (error) beginning-of-line 0 skip-syntax-forward " " (error) re-search-backward t re-search-forward 1 find-tag-default] 7 (#$ . 10580)])
(defvar change-log-find-head nil)
(defvar change-log-find-tail nil)
(defvar change-log-find-window nil)
#@429 Search for tag TAG in buffer BUFFER visiting file FILE.
REGEXP is a regular expression for TAG.  The remaining arguments
are optional: WINDOW denotes the window to display the results of
the search.  FIRST is a position in BUFFER denoting the first
match from previous searches for TAG.  LAST is the position in
BUFFER denoting the last match for TAG in the last search.

(fn TAG REGEXP FILE BUFFER &optional WINDOW FIRST LAST)
(defalias 'change-log-goto-source-1 #[1796 "rq\210\212\214~\210\211\203* \211b\210\301\210\3021 \303 0\210\202$ \210\211b\210\301\210\301\262\202- eb\210\301\204X \304\301\305#\203X \306 \262\211\203. \211\230\203. \307 \262\204. \262\202. \210*\211\204b \203\255 \310\206j \311!\211!r\312\313\"\216\314@\315\"\210\203\224 eW\204\211 dV\203\213 ~\210\316 \210b\210\202\242 \317\320	#\210\262b\210\321 E*\262\202\266 \317\322#\210\301)\207" [change-log-find-window nil (error) end-of-defun re-search-forward t add-log-current-defun line-beginning-position internal--before-with-selected-window display-buffer make-closure #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2] select-window norecord push-mark message "No more matches for tag `%s' in file `%s'" selected-window "Source location of tag `%s' not found in file `%s'"] 12 (#$ . 11874)])
#@233 Go to source location of "change log tag" near `point'.
A change log tag is a symbol within a parenthesized,
comma-separated list.  If no suitable tag can be found nearby,
try to visit the file for the change under `point' instead.
(defalias 'change-log-goto-source #[0 "p\300 \210\301p\"\207" [change-log-goto-source-internal next-error-found] 4 (#$ . 13206) nil])
(defalias 'change-log-goto-source-internal #[0 "\304=\203% 	\203% \3051 \306\307\310\n	\"\"0\202\" \210\311\312\n@\313\n8#\211\207\212`\314 \211@\2053 \315A!\211\2059 \313\224\315!\211\205B \313\224\203P \203P \316!\204b \203Z \316!\204b \317\320!\266\207\202\311 \203\240 \316!\203\240 \203\224 \203\224 \316!\203\224 W\203\207 \211X\204\224 X\203\240 \211W\203\240 \321\322!!\211\266\207\202\311 \323\324!\325Q\322!F\3261\277 \306\307\n\"\2110\266\207\202\311 \210\311\327#\266\207)\207" [last-command change-log-find-tail change-log-find-head change-log-find-window change-log-goto-source (error) apply change-log-goto-source-1 append format-message "Cannot find more matches for tag `%s' in file `%s'" 2 change-log-search-tag-name change-log-search-file-name file-exists-p error "Cannot find tag or file near `point'" display-buffer find-file-noselect "\\_<" regexp-quote "\\_>" (error) "Cannot find matches for tag `%s' in file `%s'"] 12])
#@144 Move to the Nth (default 1) next match in a ChangeLog buffer.
Compatibility function for \[next-error] invocations.

(fn &optional ARGP RESET)
(defalias 'change-log-next-error #[512 "\206 \302\303!\302W\211?\211\203 \304\202 \305\203 e\2021 \203' \306 \2021 \2030 \307 \2021 `b\210\211\310\311$\266\312 \210\313!\205R \310\314 \210	\205Q \315	!)\207" [change-log-file-names-re change-log-find-window 0 abs re-search-forward re-search-backward line-beginning-position line-end-position nil t beginning-of-line looking-at change-log-goto-source-internal select-window] 12 (#$ . 14563) "p"])
#@35 Keymap for Change Log major mode.
(defvar change-log-mode-map (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\307#\210\301\310\311#\210\207" [make-sparse-keymap define-key [3 16] add-log-edit-prev-comment [3 14] add-log-edit-next-comment [3 6] change-log-find-file [3 3] change-log-goto-source] 5) (#$ . 15174))
#@33 Menu for Change Log major mode.
(defvar change-log-mode-menu nil (#$ . 15508))
(byte-code "\301\302\303\304$\210\305\306\307\"\207" [change-log-mode-map easy-menu-do-define change-log-mode-menu "Menu for Change Log major mode." ("ChangeLog" ["Previous Log-Edit Comment" add-log-edit-prev-comment :help "Cycle backward through Log-Edit mode comment history"] ["Next Log-Edit Comment" add-log-edit-next-comment :help "Cycle forward through Log-Edit mode comment history"] "---" ["Find File" change-log-find-file :help "Visit the file for the change under point"] ["Go To Source" change-log-goto-source :help "Go to source location of ChangeLog tag near point"]) defvaralias change-log-time-zone-rule add-log-time-zone-rule] 5)
#@181 Time zone rule used for calculating change log time stamps.
If nil, use local time.  If t, use Universal Time.
If a string, interpret as the ZONE argument of `format-time-string'.
(defvar add-log-time-zone-rule nil (#$ . 16241))
(put 'add-log-time-zone-rule 'safe-local-variable #[257 "\300!\206 \211;\207" [booleanp] 3 "\n\n(fn X)"])
#@28 

(fn &optional TIME ZONE)
(defalias 'add-log-iso8601-time-zone #[512 "\300\301#\207" [format-time-string "%:::z"] 6 (#$ . 16584)])
(make-obsolete 'add-log-iso8601-time-zone nil "26.1")
(defvar add-log-iso8601-with-time-zone nil)
#@28 

(fn &optional TIME ZONE)
(defalias 'add-log-iso8601-time-string #[512 "\301\203	 \302\202\n \303#\207" [add-log-iso8601-with-time-zone format-time-string "%Y-%m-%d %:::z" "%Y-%m-%d"] 6 (#$ . 16822)])
#@63 Return (system-dependent) default name for a change log file.
(defalias 'change-log-name #[0 "\206 \301\207" [change-log-default-name "ChangeLog"] 1 (#$ . 17033)])
#@114 Cycle backward through Log-Edit mode comment history.
With a numeric prefix ARG, go back ARG comments.

(fn ARG)
(defalias 'add-log-edit-prev-comment #[257 "\214`\301>\203 \302 \202 `}\210\303\304!\205@ \304!\210\305ed\"\210eb\210\214~\210n)\2042 `\306\307w\210`|\210\310e!\210db\210`\306\307x\210`|)\207" [last-command (add-log-edit-prev-comment add-log-edit-next-comment) mark fboundp log-edit-previous-comment indent-region " 	\n" nil set-mark] 4 (#$ . 17206) "*p"])
#@113 Cycle forward through Log-Edit mode comment history.
With a numeric prefix ARG, go back ARG comments.

(fn ARG)
(defalias 'add-log-edit-next-comment #[257 "\300[!\207" [add-log-edit-prev-comment] 3 (#$ . 17687) "*p"])
#@31 Prompt for a change log name.
(defalias 'prompt-for-change-log-name #[0 "\300 \301\302\303\304\"\305#!\306!\307\230\203 \301\306!\"\207\310!\203* \301\306!\311!\"\207\207" [change-log-name expand-file-name read-file-name format-prompt "Log file" nil file-name-nondirectory "" file-directory-p file-name-as-directory] 6 (#$ . 17912)])
#@174 Return version number of current buffer's file.
This is the value returned by `vc-working-revision' or, if that is
nil, by matching `change-log-version-number-regexp-list'.
(defalias 'change-log-version-number-search #[0 "\302 \211\303V\205 `\304\245\\\203 \305!\206@ \214~\210	\306\203= \212eb\210\307\211A\262\242\310#\2039 \311\312!\262\306\262)\202 \262)\207" [buffer-file-name change-log-version-number-regexp-list buffer-size 8000 10 vc-working-revision nil re-search-forward t match-string 1] 8 (#$ . 18262)])
#@1036 Find a change log file for \[add-change-log-entry] and return the name.

Optional arg FILE-NAME specifies the file to use.
If FILE-NAME is nil, use the value of `change-log-default-name'.
If `change-log-default-name' is nil, behave as though it were "ChangeLog"
(or whatever we use on this operating system).

If `change-log-default-name' contains a leading directory component, then
simply find it in the current directory.  Otherwise, search in the current
directory and its successive parents for a file so named.  Stop at the first
such file that exists (or has a buffer visiting it), or the first directory
that contains any of `change-log-directory-files'.  If no match is found,
use the current directory.  To override the choice of this function,
simply create an empty ChangeLog file first by hand in the desired place.

Once a file is found, `change-log-default-name' is set locally in the
current buffer to the complete file name.
Optional arg BUFFER-FILE overrides `buffer-file-name'.

(fn &optional FILE-NAME BUFFER-FILE)
(defalias 'find-change-log #[512 "r\303\304!\205 \3051 \306 0\202 \210\307@\310!\203 \211\202 p\262q\210\204} \2052 \311!\2052 \211\262\204} \211\204@ 	\203L \311\312\206G 	!!\206M \n\262\313!\203\\ \314\315 \"\262\312!\262\314!\262\316\315 !\317\320\321\"\"\211\203{ \314\"\262\266\322\300!\210)\207" [change-log-default-name buffer-file-name default-directory derived-mode-p diff-mode (error) diff-find-source-location nil buffer-live-p file-name-directory file-chase-links file-directory-p expand-file-name change-log-name file-name-nondirectory locate-dominating-file make-closure #[257 "\302\300\"\303!\206 \304!\262\206/ 	\205/ 	\305\304\302@\"!\211\262\204- A\211\262\204 \262\207" [V0 change-log-directory-files expand-file-name get-file-buffer file-exists-p nil] 7 "\n\n(fn DIR)"] make-local-variable] 8 (#$ . 18800)])
#@96 Compute file-name of BUFFER-FILE to be used in entries in LOG-FILE.

(fn BUFFER-FILE LOG-FILE)
(defalias 'add-log-file-name #[514 "?\206 \230?\205N \203 !\207\301!\302\"\303\304\"\204( \211\266\202\202A \302\305!\305!\"\211GGW\203< \211\202= \262\266\202\262\306!\203M \307!\207\207" [add-log-file-name-function file-name-directory file-relative-name string-match "\\`\\.\\./" file-truename backup-file-name-p file-name-sans-versions] 8 (#$ . 20711)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\312\301\313\314#\207" [custom-declare-variable add-log-dont-create-changelog-file funcall function #[0 "\300\207" [t] 1 ""] "If non-nil, don't create ChangeLog files for log entries.\nIf a ChangeLog file does not already exist, a non-nil value\nmeans to put log entries in a suitably named buffer." :type boolean :version "27.1" put safe-local-variable booleanp] 8)
#@180 Compute a suitable name for a non-file visiting ChangeLog buffer.
CHANGELOG-FILE-NAME is the file name of the actual ChangeLog file
if it were to exist.

(fn CHANGELOG-FILE-NAME)
(defalias 'add-log--pseudo-changelog-buffer-name #[257 "\300\301\302\303!!\"\207" [format "*changes to %s*" abbreviate-file-name file-name-directory] 6 (#$ . 21618)])
#@103 Return non-nil if BUFFER holds a change log for CHANGELOG-FILE-NAME.

(fn CHANGELOG-FILE-NAME BUFFER)
(defalias 'add-log--changelog-buffer-p #[514 "r\211q\210\203 \232\202 \301!\302 \232)\207" [buffer-file-name add-log--pseudo-changelog-buffer-name buffer-name] 4 (#$ . 21972)])
#@127 Find a ChangeLog buffer for CHANGELOG-FILE-NAME.
Respect `add-log-use-pseudo-changelog', which see.

(fn CHANGELOG-FILE-NAME)
(defalias 'add-log-find-changelog-buffer #[257 "\301!\204\n \204 \302!\207\303\304!!\207" [add-log-dont-create-changelog-file file-exists-p find-file-noselect get-buffer-create add-log--pseudo-changelog-buffer-name] 4 (#$ . 22264)])
#@1560 Find ChangeLog buffer, add an entry for today and an item for this file.
Optional arg WHOAMI (interactive prefix) non-nil means prompt for
user name and email (stored in `add-log-full-name'
and `add-log-mailing-address').

Second arg CHANGELOG-FILE-NAME is the file name of the change log.
If nil, use the value of `change-log-default-name'.  If the file
thus named exists, it is used for the new entry.  If it doesn't
exist, it is created, unless `add-log-dont-create-changelog-file' is t,
in which case a suitably named buffer that doesn't visit any file
is used for keeping entries pertaining to CHANGELOG-FILE-NAME's
directory.

Third arg OTHER-WINDOW non-nil means visit in other window.

Fourth arg NEW-ENTRY non-nil means always create a new entry at the front;
never append to an existing entry.  Option `add-log-keep-changes-together'
otherwise affects whether a new entry is created.

Fifth arg PUT-NEW-ENTRY-ON-NEW-LINE non-nil means that if a new
entry is created, put it on a new line by itself, do not put it
after a comma on an existing line.

Option `add-log-always-start-new-record' non-nil means always create a
new record, even when the last record was made on the same date and by
the same person.

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.

Today's date is calculated according to `add-log-time-zone-rule' if
non-nil, otherwise in local time.

(fn &optional WHOAMI CHANGELOG-FILE-NAME OTHER-WINDOW NEW-ENTRY PUT-NEW-ENTRY-ON-NEW-LINE)
(defalias 'add-change-log-entry #[1280 "\306 \205 \307 	 \211\205 \310!\310\311	\"!\312\"\n\232\204J \313\314 \"\2031 \314 q\210\202J \204; \315 \203D \316\317!!\210\202J \320\317!!\210\321\322!\204S \322 \210\323 \210eb\210\206_ \324 C\f\206e \f\203x \325\326\242\"\240\210\325\327\"\262\330\331!\203\206 \332\333!\210\334\335w\210\336\337\340\":\203\224 \202\226 C\"@\204\320 \335\211\203\301 \211@\330\341!!\203\272 \212\342y\210\330\343!)\204\272 \344\262A\266\202\202\236 \262\262\203\320 \342y\266\202\364 \211\205\327 \345!A\203\341 B\202\342 \334A\203\354 B\202\355 \334\261\210\346y\266\212\330\347!\203\334\335w\210\202C\203\350 \210\202\351 \210`)\352\353\344#\203%\203\333c\266\202\334\204\207\335D\352\341\354P!\355P\344#)\203\207\352\356\335\344#\203K\357\224b\210\202Qdb\210\334c\210m\204d\330\360!\203d`\361\362!|\210\202QA\203nB\202o\334A\203yB\202z\334\261\210\363y\210\364 \266\202\334\330\365!\203\223\342y\210\202\207m\204\246\330\360!\203\246`\361\362!|\210\202\223A\203\260B\202\261\334A\203\273B\202\274\334A\203\306B\202\307\334\261\210\363y\210Ej\210\354c\210\203\333c\210\210\204\371\212\366\342!\210\330\367!)?\205\221\370c\210\205\221\371\261\207\323 \210\212\366\342!\210\330\372!)\204\371c\210\373 \374\375!\210\376\335x\210\204a\330\376!\203a\212\377\342!\210`)\211`{\232\2034\211`|\210Fi	G\\\201G \\V\262\203a\201H \335x\210`|\210`Sf\201I =\204|\201H c\210\202|\204t\330\376!\203t`T\201J  |\210\211b\210\201K c\210\211\335\211\223\266\201L \261\210\205\221\371\261\207" [change-log-version-info-enabled add-log-buffer-file-name-function buffer-file-name add-log-full-name add-log-mailing-address user-mail-address add-log-current-defun change-log-version-number-search expand-file-name find-change-log add-log-file-name add-log--changelog-buffer-p window-buffer window-dedicated-p switch-to-buffer-other-window add-log-find-changelog-buffer switch-to-buffer derived-mode-p change-log-mode undo-boundary user-full-name read-string "Full name: " "Mailing address: " looking-at "Copyright" search-forward "\n\n" "\n" nil mapcar make-closure #[257 "	\303\n\"\304\300\242\305\306\260\207" [V0 add-log-time-format add-log-time-zone-rule nil "  " "  <" ">"] 7 "\n\n(fn ADDR)"] regexp-quote 1 "[ 	]+.*<.*>$" t seq-random-elt -1 "\n*[^\n* 	]" forward-page forward-paragraph re-search-forward "^\\s *\\* *$" "* " "\\(\\s \\|[(),:]\\)" "^\\s *$\\|^\\s \\*" 0 "^\\s *$" line-beginning-position 2 -2 indent-relative-first-indent-point "\\sW" beginning-of-line "\\s *\\(\\* *\\)?$" ": " 32 "\\s *$" point-marker skip-syntax-backward " " "):" backward-sexp add-log-always-start-new-record use-hard-newlines hard-newline add-log-keep-changes-together case-fold-search left-margin fill-column 4 ", " 40 line-end-position "(" "): "] 20 (#$ . 22636) (byte-code "\301 D\207" [current-prefix-arg prompt-for-change-log-name] 2)])
#@199 Find change log file in other window and add entry and item.
This is just like `add-change-log-entry' except that it displays
the change log file in another window.

(fn &optional WHOAMI FILE-NAME)
(defalias 'add-change-log-entry-other-window #[512 "\300\301#\207" [add-change-log-entry t] 6 (#$ . 27182) (byte-code "\205 \301 D\207" [current-prefix-arg prompt-for-change-log-name] 2)])
(defvar change-log-indent-text 0)
(defalias 'change-log-fill-parenthesized-list #[0 "\212\300\210\301\302x\210`Sf\303=\205e `eTV\205e \3041c \212\305\306!\210\302f\307=\301\302x\210\205M n\206M \310\302x\300U?\205M \301\302x\205M \311\302x\306U\205M \301\302x\205M n)\205_ \312\306!\210\313c\210\314\302w\210\315\316!0\202e \210\302)\207" [0 " 	" nil 44 (error) up-list -1 40 "^ 	\n*" "*" delete-char ")" " 	\n" insert-before-markers "("] 3])
(defalias 'change-log-indent #[0 "\301 \210\212\302 \210\303\304w\210\305\306!\203 \307\310\311\312!\"\203 \313\202- \305\314!\203+ \315 \\\202- \315 )\212\316!\210`)\211`V\205= \211b\207" [change-log-indent-text change-log-fill-parenthesized-list beginning-of-line " 	" nil looking-at "\\(.*\\)  [^ \n].*[^ \n]  <.*>\\(?: +(.*)\\)? *$" string-match "[[:digit:]][[:digit:]]" match-string 1 0 "[^*(]" current-left-margin indent-line-to] 4])
#@47 Syntax table used while in `change-log-mode'.
(defvar change-log-mode-syntax-table (byte-code "\300 \301\302\303#\210\301\304\303#\210\207" [make-syntax-table modify-syntax-entry 96 "'   " 39] 5) (#$ . 28468))
(defvar change-log-mode-hook nil)
(byte-code "\300\301N\204\f \302\300\301\303#\210\304\305!\204 \302\305\306\307#\210\300\207" [change-log-mode-hook variable-documentation put "Hook run after entering Change Log mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp change-log-mode-map definition-name change-log-mode] 4)
(defvar change-log-mode-map (make-sparse-keymap))
(byte-code "\301\302N\204 \303\301\302\304\305!#\210\306\307!\204 \303\307\310\311#\210\312\313 !\210\307\302N\204- \303\307\302\304\314!#\210\306\300!\204B \303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P \303\300\302\304\320!#\210\303\311\321\322#\207" [change-log-mode-abbrev-table change-log-mode-map variable-documentation put purecopy "Keymap for `change-log-mode'." boundp change-log-mode-syntax-table definition-name change-log-mode (lambda (#1=#:def-tmp-var) (defvar change-log-mode-syntax-table #1#)) make-syntax-table "Syntax table for `change-log-mode'." (lambda (#1#) (defvar change-log-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `change-log-mode'." derived-mode-parent text-mode] 5)
#@370 Major mode for editing change logs; like Indented Text mode.
Prevents numeric backups and sets `left-margin' to 8 and `fill-column' to 74.
New log entries are usually made with \[add-change-log-entry] or \[add-change-log-entry-other-window].
Each entry behaves as a paragraph, and the entries for one day as a page.
Runs `change-log-mode-hook'.

\{change-log-mode-map}
(defalias 'change-log-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203 \314\311\313\310\313N#\210\315!\204' \316\317 \"\210\320\f!\211\2035 \211\321 =\203; \322\f\323 \"\210\210\324\325\"\204R ==\204R \326\325=C#\210\327!\210\330\f!\210=\331>\332?\307@\331A\307B\306\333!\210\334\306\335!\210\336\306\337!\210\307\340\341\342\336\307$\210\306\343!\210\344#\306\345!\210\336%\306\346!\210\307&\306\347!\210\350'\306\351!\210')\306\352!\210\353*\306\354!\210\355,\306\356!\210\357.\306\360!\210\3610\306\362!\210\3632\306\364!\210\3654\306\366!\210\3676\306\370!\210\3718\372C)\373\374!\207" [delay-mode-hooks major-mode mode-name change-log-mode-map change-log-mode-syntax-table change-log-mode-abbrev-table make-local-variable t text-mode change-log-mode "Change Log" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table 8 74 fill-forward-paragraph-function change-log-fill-forward-paragraph comment-start nil fill-indent-according-to-mode add-hook fill-nobreak-predicate #[0 "\300\301\302 \"\207" [looking-back "^\\s *\\*\\s *" line-beginning-position] 3] indent-line-function change-log-indent tab-always-indent copyright-at-end-flag paragraph-start "\\s *$\\|\f\\|^\\<" paragraph-separate page-delimiter "^\\<\\|^\f" version-control never smerge-resolve-function change-log-resolve-conflict adaptive-fill-regexp "\\s *" font-lock-defaults (change-log-font-lock-keywords t nil nil backward-paragraph) multi-isearch-next-buffer-function change-log-next-buffer beginning-of-defun-function change-log-beginning-of-defun end-of-defun-function change-log-end-of-defun change-log-next-error run-mode-hooks change-log-mode-hook local-abbrev-table left-margin fill-column indent-tabs-mode tab-width show-trailing-whitespace next-error-function] 5 (#$ . 29885) nil])
#@312 Return the next buffer in the series of ChangeLog file buffers.
This function is used for multiple buffers isearch.
A sequence of buffers is formed by ChangeLog files with decreasing
numeric file name suffixes in the directory of the initial ChangeLog
file were isearch was started.

(fn &optional BUFFER WRAP)
(defalias 'change-log-next-buffer #[512 "\301 \302\303!\205 C\304\305\306P!\307\310\"\"\"\203  \211\202# \311!\203, \211@\2026 \312\313!!\235A@\203@ \211\204@ p\207\303!\203J \314!\207p\207" [isearch-forward change-log-name append file-exists-p sort file-expand-wildcards "[-.][0-9]*" make-closure #[514 "\3011 \302\300G\303O\300G\303O\"0\207\210\303\207" [V0 (error) version< nil] 7 "\n\n(fn A B)"] reverse file-name-nondirectory buffer-file-name find-file-noselect] 10 (#$ . 32231)])
#@85 Cut paragraphs so filling preserves open parentheses at beginning of lines.

(fn N)
(defalias 'change-log-fill-forward-paragraph #[257 "\301P\302!)\207" [paragraph-start "\\|\\s *\\(?:\\s(\\|\\*\\)" forward-paragraph] 3 (#$ . 33052)])
(byte-code "\300\301\302\303\304DD\305\306\307%\207" [custom-declare-variable add-log-current-defun-header-regexp funcall function #[0 "\300\207" ["^\\([[:upper:]][[:upper:]_ ]*[[:upper:]_]\\|[-_[:alnum:]]*[[:alpha:]][-_[:alnum:]]*\\)[ 	]*[:=]"] 1 ""] "Heuristic regexp used by `add-log-current-defun' for unknown major modes.\nThe regexp's first submatch is placed in the ChangeLog entry, in\nparentheses." :type regexp] 6)
#@458 Return name of function definition point is in, or nil.

Understands C, Lisp, LaTeX ("functions" are chapters, sections, ...),
Texinfo (@node titles) and Perl.

Other modes are handled by a heuristic that looks in the 10K before
point for uppercase headings starting in the first column or
identifiers followed by `:' or `='.  See variables
`add-log-current-defun-header-regexp' and
`add-log-current-defun-function'.

Has a preference of looking backwards.
(defalias 'add-log-current-defun #[0 "\3031> \212\203  \202; \304\211\304\210\305\n`\306Z\307#\2058 \310\311!\206( \310\312!\262\313\314\"\2037 \310\311\"\262\211)\266\202)0\207\210\304\207" [add-log-current-defun-function case-fold-search add-log-current-defun-header-regexp (error) nil re-search-backward 10000 t match-string-no-properties 1 0 string-match "\\([^ 	\n\f].*[^ 	\n\f]\\)"] 6 (#$ . 33722)])
#@12 

(fn END)
(defalias 'change-log-get-method-definition-1 #[257 "\301\302!Q\303\225b\207" [change-log-get-method-definition-md match-string 1 0] 4 (#$ . 34603)])
#@64 For Objective C, return the method name if we are in a method.
(defalias 'change-log-get-method-definition #[0 "\301\212\302\303\304\305#\203 \306\307!\210)\212\310\311\304\305#\2051 \306\312!\210\313\314!\204. \313\315!\210\306\312!\210\202 \316P*\207" [change-log-get-method-definition-md "[" re-search-backward "^@implementation\\s-*\\([A-Za-z_]*\\)" nil t change-log-get-method-definition-1 " " re-search-forward "^\\([-+]\\)[ 	\n\f]*\\(([^)]*)\\)?\\s-*" "" looking-at "[{;]" "\\([A-Za-z_]*:?\\)\\s-*\\(([^)]*)\\)?[A-Za-z_]*[ 	\n\f]*" "]"] 4 (#$ . 34773)])
(autoload 'timezone-make-date-sortable "timezone")
#@110 Return date of log entry in a consistent form for sorting.
Point is assumed to be at the start of the entry.
(defalias 'change-log-sortable-date-at #[0 "\301!\203. \302\303!\211\205- \304\305\"\203\" \306\307\"\306\310\"\306\311\"Q\207\3121+ \313!0\207\210\314\207\315\316!\207" [change-log-start-entry-re looking-at match-string-no-properties 0 string-match "\\(....\\)-\\(..\\)-\\(..\\)\\s-+" match-string 1 2 3 (error) timezone-make-date-sortable nil error "Bad date"] 6 (#$ . 35398)])
#@51 Function to be used in `smerge-resolve-function'.
(defalias 'change-log-resolve-conflict #[0 "\212\214\300\224\300\225}\210\301\224\301\225\302\224\302\225\303\304!\303\305!\306\307#\216prq\210\310 \210\311#\210)rq\210\310 \210\311#\210\312!\210)db\210e`\311!\210|\262)\266\206*\207" [0 1 3 generate-new-buffer " *changelog-resolve-1*" " *changelog-resolve-2*" make-closure #[0 "\302\300!\210\302\301!\207" [V0 V1 kill-buffer] 2] change-log-mode insert-buffer-substring change-log-merge] 11 (#$ . 35899)])
#@353 Merge the contents of change log file OTHER-LOG with this buffer.
Both must be found in Change Log mode (since the merging depends on
the appropriate motion commands).  OTHER-LOG can be either a file name
or a buffer.

Entries are inserted in chronological order.  Both the current and
old-style time formats for entries are supported.

(fn OTHER-LOG)
(defalias 'change-log-merge #[257 "\302\303!\204\n \304\305!\210\306!\203 \211\202 \307!p\310\211\211\212eb\210q\210eb\210\302\303!\2041 \304\311\"\210m?\205\241 \312 \262`\262\313 \210`\262rq\210m\204X \312 \231\203X \313 \210\202G m\204e \314#\210\202\235 o\204\220 `Sf\315U\203\205 `SeX\204\220 `S\206~ `Sf\315U\204\220 \203\215 	\202\216 \316c\210rq\210db\210)\314\"\210)\2021 )\207" [use-hard-newlines hard-newline derived-mode-p change-log-mode error "Not in Change Log mode" bufferp find-file-noselect nil "%s not found in Change Log mode" change-log-sortable-date-at forward-page insert-buffer-substring 10 "\n"] 10 (#$ . 36429) "*fLog file name to merge: "])
(defalias 'change-log-beginning-of-defun #[0 "\301\302\303#\207" [change-log-start-entry-re re-search-backward nil move] 4])
(defalias 'change-log-end-of-defun #[0 "\212\301\302\303#)\204 \304\302\303#\210\305y\210\306!\203  \307\225b\210\305y\210\304\302\310#\205. \307\224b\210\311y\207" [change-log-start-entry-re re-search-backward nil t re-search-forward 1 looking-at 0 move -1] 4])
(provide 'add-log)
