* lisp/vc/log-edit.el (log-edit-add-new-comment): Rename to
`log-edit-remember-comment', make argument optional. Adjust all
callers.
(log-edit-mode): Add `log-edit-remember-comment' to
`kill-buffer-hook' locally.
(log-edit-kill-buffer): Don't remember comment explicitly since
the buffer is killed anyway.
* lisp/vc/log-edit.el (log-edit-set-header): Extract from
`log-edit-toggle-header'.
(log-edit-extract-headers): Separate the summary, when extracted
from header, from the rest of the message with an empty line.
* lisp/vc/vc-git.el (vc-git-log-edit-toggle-amend): Move the summary
line, if present, to the Summary header.
* lisp/vc/log-edit.el (log-edit-kill-buffer): Move the use of
`save-selected-window' to `log-edit-hide-buf'. This makes
`log-edit-show-files' idempotent.
(log-edit-show-files): Mark the new window as dedicated.
* lisp/vc/log-edit.el (log-edit-mode-map): Add binding for
`log-edit-kill-biffer'.
(log-edit-hide-buf): Add a FIXME comment.
(log-edit-add-new-comment): New function, extracted from
`log-edit-done'.
(log-edit-done, log-edit-add-to-changelog): Use it.
(log-edit-kill-buffer): New command.
* .dir-locals.el: (log-edit-move): Add the "Author: " header.
* lisp/vc/log-edit.el (log-edit-mode-map): Add binding for
`log-edit-beginning-of-line'.
(log-edit-setup-add-author): New user option.
(log-edit-beginning-of-line): New command.
(log-edit): Move major mode call above the contents setup so that
the local variable values are already applied.
(log-edit): Only insert "Author: " when
`log-edit-setup-add-author' is non-nil.
(log-edit): When SETUP is non-nil, position point after ": "
instead of point-min.
* lisp/vc/log-edit.el (log-edit-font-lock-keywords): Allow hyphens in
header names.
(log-edit-toggle-header): New function.
(log-edit-extract-headers): Accept function values in HEADERS alist.
* lisp/vc/vc-git.el (vc-git-log-edit-toggle-signoff): New function.
(vc-git-log-edit-toggle-amend): New function.
(vc-git-log-edit-toggle-signoff): New function.
(vc-git-log-edit-mode): New major mode.
(vc-git-log-edit-mode-map): Keymap for it.
(vc-git-checkin): Handle "Amend" and "Sign-Off" headers.
Also, fix the copyright header for lisp/emacs-lisp/gv.el.
* lisp/vc/log-edit.el (log-edit-require-final-newline)
(log-edit-changelog-full-paragraphs): Default to t.
* lisp/vc/log-edit.el (log-edit-vc-backend): New variable.
(log-edit): Doc fix.
* lisp/vc/log-view.el (log-view-vc-fileset, log-view-vc-backend): Doc fix.
* lisp/vc/vc-dispatcher.el (vc-log-edit): New args. Use PARAMS
argument of log-edit to set up all local variables.
(vc-start-logentry): New optional arg specifying VC backend.
* lisp/vc/vc.el (vc-checkin): Use it.
(vc-deduce-fileset): Handle Log Edit buffers.
(vc-diff): Make first argument optional too.
(log-edit-font-lock-gnu-style)
(log-edit-font-lock-gnu-keywords): New vars.
(log-edit-font-lock-keywords): New fun.
(log-edit-mode): Don't fold case in font-lock.
(log-edit-font-lock-keywords): Do not assume case-folding.
* .dir-locals.el (log-edit-mode): Enable gnu-style checks.
* lisp/vc/log-edit.el (log-edit-empty-buffer-p): New function.
(log-edit-insert-cvs-template, log-edit-insert-cvs-rcstemplate):
Use log-edit-empty-buffer-p.
(log-edit-author): New dynamic var.
(log-edit-changelog-ours-p, log-edit-insert-changelog-entries): Use it
to return the author if different from committer.
(log-edit-insert-changelog): Use them to add Author: and Fixes headers.