Show More
@@ -41,6 +41,11 b'' | |||||
41 | :type 'sexp |
|
41 | :type 'sexp | |
42 | :group 'mercurial) |
|
42 | :group 'mercurial) | |
43 |
|
43 | |||
|
44 | (defcustom mq-signoff-address nil | |||
|
45 | "Address with which to sign off on a patch." | |||
|
46 | :type 'string | |||
|
47 | :group 'mercurial) | |||
|
48 | ||||
44 |
|
49 | |||
45 | ;;; Internal variables. |
|
50 | ;;; Internal variables. | |
46 |
|
51 | |||
@@ -72,6 +77,7 b'' | |||||
72 | (define-key mq-global-map "e" 'mq-refresh-edit) |
|
77 | (define-key mq-global-map "e" 'mq-refresh-edit) | |
73 | (define-key mq-global-map "i" 'mq-new) |
|
78 | (define-key mq-global-map "i" 'mq-new) | |
74 | (define-key mq-global-map "n" 'mq-next) |
|
79 | (define-key mq-global-map "n" 'mq-next) | |
|
80 | (define-key mq-global-map "o" 'mq-signoff) | |||
75 | (define-key mq-global-map "p" 'mq-previous) |
|
81 | (define-key mq-global-map "p" 'mq-previous) | |
76 | (define-key mq-global-map "s" 'mq-edit-series) |
|
82 | (define-key mq-global-map "s" 'mq-edit-series) | |
77 | (define-key mq-global-map "t" 'mq-top) |
|
83 | (define-key mq-global-map "t" 'mq-top) | |
@@ -84,6 +90,7 b'' | |||||
84 | (defvar mq-edit-mode-map (make-sparse-keymap)) |
|
90 | (defvar mq-edit-mode-map (make-sparse-keymap)) | |
85 | (define-key mq-edit-mode-map "\C-c\C-c" 'mq-edit-finish) |
|
91 | (define-key mq-edit-mode-map "\C-c\C-c" 'mq-edit-finish) | |
86 | (define-key mq-edit-mode-map "\C-c\C-k" 'mq-edit-kill) |
|
92 | (define-key mq-edit-mode-map "\C-c\C-k" 'mq-edit-kill) | |
|
93 | (define-key mq-edit-mode-map "\C-c\C-s" 'mq-signoff) | |||
87 |
|
94 | |||
88 |
|
95 | |||
89 | ;;; Helper functions. |
|
96 | ;;; Helper functions. | |
@@ -366,6 +373,34 b' With a prefix argument, display a git-co' | |||||
366 | (diff-mode) |
|
373 | (diff-mode) | |
367 | (font-lock-fontify-buffer))) |
|
374 | (font-lock-fontify-buffer))) | |
368 |
|
375 | |||
|
376 | (defun mq-signoff () | |||
|
377 | "Sign off on the current patch, in the style used by the Linux kernel. | |||
|
378 | If the variable mq-signoff-address is non-nil, it will be used, otherwise | |||
|
379 | the value of the ui.username item from your hgrc will be used." | |||
|
380 | (interactive) | |||
|
381 | (let ((was-editing (eq major-mode 'mq-edit-mode)) | |||
|
382 | signed) | |||
|
383 | (unless was-editing | |||
|
384 | (mq-refresh-edit)) | |||
|
385 | (save-excursion | |||
|
386 | (let* ((user (or mq-signoff-address | |||
|
387 | (hg-run0 "debugconfig" "ui.username"))) | |||
|
388 | (signoff (concat "Signed-off-by: " user))) | |||
|
389 | (if (search-forward signoff nil t) | |||
|
390 | (message "You have already signed off on this patch.") | |||
|
391 | (goto-char (point-max)) | |||
|
392 | (let ((case-fold-search t)) | |||
|
393 | (if (re-search-backward "^Signed-off-by: " nil t) | |||
|
394 | (forward-line 1) | |||
|
395 | (insert "\n"))) | |||
|
396 | (insert signoff) | |||
|
397 | (message "%s" signoff) | |||
|
398 | (setq signed t)))) | |||
|
399 | (unless was-editing | |||
|
400 | (if signed | |||
|
401 | (mq-edit-finish) | |||
|
402 | (mq-edit-kill))))) | |||
|
403 | ||||
369 |
|
404 | |||
370 | (provide 'mq) |
|
405 | (provide 'mq) | |
371 |
|
406 |
General Comments 0
You need to be logged in to leave comments.
Login now