##// END OF EJS Templates
mq.el: add mq-signoff, to sign off on a patch
Bryan O'Sullivan -
r4429:3b0f73ed default
parent child Browse files
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