Apply the initial log-edit tweaks discussed at emacs-devel

* .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.
This commit is contained in:
Dmitry Gutov 2013-12-01 06:13:50 +02:00
parent 2e6710c396
commit 52789f7fb3
4 changed files with 47 additions and 6 deletions

View file

@ -32,6 +32,7 @@
(require 'add-log) ; for all the ChangeLog goodies
(require 'pcvs-util)
(require 'ring)
(require 'message)
;;;;
;;;; Global Variables
@ -55,6 +56,7 @@
("\C-c\C-a" . log-edit-insert-changelog)
("\C-c\C-d" . log-edit-show-diff)
("\C-c\C-f" . log-edit-show-files)
("\C-a" . log-edit-beginning-of-line)
("\M-n" . log-edit-next-comment)
("\M-p" . log-edit-previous-comment)
("\M-r" . log-edit-comment-search-backward)
@ -116,6 +118,13 @@ If SETUP is 'force, this variable has no effect."
:group 'log-edit
:type 'boolean)
(defcustom log-edit-setup-add-author nil
"Non-nil means `log-edit' should add the `Author:' header when
its SETUP argument is non-nil."
:group 'log-edit
:type 'boolean
:safe 'booleanp)
(defcustom log-edit-hook '(log-edit-insert-cvs-template
log-edit-show-files
log-edit-insert-changelog)
@ -427,13 +436,15 @@ done. Otherwise, it uses the current buffer."
(if buffer (pop-to-buffer buffer))
(when (and log-edit-setup-invert (not (eq setup 'force)))
(setq setup (not setup)))
(when setup
(erase-buffer)
(insert "Summary: \nAuthor: ")
(save-excursion (insert "\n\n")))
(if mode
(funcall mode)
(log-edit-mode))
(when setup
(erase-buffer)
(insert "Summary: ")
(when log-edit-setup-add-author
(insert "\nAuthor: "))
(insert "\n\n"))
(set (make-local-variable 'log-edit-callback) callback)
(if (listp params)
(dolist (crt params)
@ -445,7 +456,10 @@ done. Otherwise, it uses the current buffer."
(if buffer (set (make-local-variable 'log-edit-parent-buffer) parent))
(set (make-local-variable 'log-edit-initial-files) (log-edit-files))
(when setup (run-hooks 'log-edit-hook))
(goto-char (point-min)) (push-mark (point-max))
(if setup
(message-position-point)
(goto-char (point-min)))
(push-mark (point-max))
(message "%s" (substitute-command-keys
"Press \\[log-edit-done] when you are done editing."))))
@ -574,6 +588,15 @@ If you want to abort the commit, simply delete the buffer."
(shrink-window-if-larger-than-buffer)
(selected-window)))))
(defun log-edit-beginning-of-line (&optional n)
"Move point to beginning of header value or to beginning of line.
It works the same as `message-beginning-of-line', but it uses a
different header separator appropriate for `log-edit-mode'."
(interactive "p")
(let ((mail-header-separator ""))
(message-beginning-of-line n)))
(defun log-edit-empty-buffer-p ()
"Return non-nil if the buffer is \"empty\"."
(or (= (point-min) (point-max))