Commit 0f457a37 authored by Dmitry Gutov's avatar Dmitry Gutov
Browse files

Support the new log-edit behavior in vc-git-log-edit-toggle-amend

* 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.
parent 2595af33
2013-12-02 Dmitry Gutov <dgutov@yandex.ru>
* 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.
* vc/vc-git.el (vc-git-log-edit-toggle-amend): Move the summary
line, if present, to the Summary header.
2013-12-02 Stefan Monnier <monnier@iro.umontreal.ca>
* epa-file.el (epa-file-insert-file-contents): Ensure we insert text
......
......@@ -944,10 +944,14 @@ Rename relative filenames in the ChangeLog entry as FILES."
(defun log-edit-toggle-header (header value)
"Toggle a boolean-type header in the current buffer.
If the value of HEADER is VALUE, clear it. Otherwise, add the
header if it's not present and set it to VALUE. Then make sure
there is an empty line after the headers. Return t if toggled
on, otherwise nil."
See `log-edit-set-header' for details."
(log-edit-set-header header value t))
(defun log-edit-set-header (header value &optional toggle)
"Set the value of HEADER to VALUE in the current buffer.
If TOGGLE is non-nil, and the value of HEADER already is VALUE,
clear it. Make sure there is an empty line after the headers.
Return t if toggled on (or TOGGLE is nil), otherwise nil."
(let ((val t)
(line (concat header ": " value "\n")))
(save-excursion
......@@ -958,7 +962,7 @@ on, otherwise nil."
(if (re-search-forward (concat "^" header ":"
log-edit-header-contents-regexp)
nil t)
(if (setq val (not (string= (match-string 1) value)))
(if (setq val (not (and toggle (string= (match-string 1) value))))
(replace-match line t t)
(replace-match "" t t nil 1))
(insert line)))
......@@ -1006,7 +1010,7 @@ line of MSG."
(goto-char (point-min))
(when (looking-at "\\([ \t]*\n\\)+")
(delete-region (match-beginning 0) (match-end 0)))
(if summary (insert summary "\n"))
(if summary (insert summary "\n\n"))
(cons (buffer-string) res))))
(provide 'log-edit)
......
......@@ -641,7 +641,17 @@ If toggling on, also insert its message into the buffer."
(insert (with-output-to-string
(vc-git-command
standard-output 1 nil
"log" "--max-count=1" "--pretty=format:%B" "HEAD")))))
"log" "--max-count=1" "--pretty=format:%B" "HEAD")))
(save-excursion
(rfc822-goto-eoh)
(forward-line 1)
(let ((pt (point)))
(and (zerop (forward-line 1))
(looking-at "\n\\|\\'")
(let ((summary (buffer-substring-no-properties pt (1- (point)))))
(skip-chars-forward " \n")
(delete-region pt (point))
(log-edit-set-header "Summary" summary)))))))
(defvar vc-git-log-edit-mode-map
(let ((map (make-sparse-keymap "Git-Log-Edit")))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment