summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/init-git.el18
1 files changed, 17 insertions, 1 deletions
diff --git a/lisp/init-git.el b/lisp/init-git.el
index 68be561..ab9384a 100644
--- a/lisp/init-git.el
+++ b/lisp/init-git.el
@@ -25,13 +25,29 @@
(magit-visit-item other-window)
(select-window current-window)))
+(defun magit-stage-line-at-point ()
+ "Stage the current line or region."
+ (interactive)
+ (if (use-region-p)
+ (magit-stage-item)
+ (let ((current-line (line-number-at-pos)))
+ (save-excursion
+ (beginning-of-line)
+ (set-mark (line-end-position))
+ (magit-stage-item))
+ (goto-char (point-min))
+ (forward-line (1- current-line)))))
+
(add-hook 'magit-status-mode-hook
(lambda ()
;; make C-o and o behave as in dired
(define-key magit-status-mode-map (kbd "C-o")
'magit-visit-item-noselect)
(define-key magit-status-mode-map (kbd "o")
- 'magit-visit-item)))
+ 'magit-visit-item)
+ ;; stage single line with C-c 1
+ (define-key magit-status-mode-map (kbd "C-c 1")
+ 'magit-stage-line-at-point)))
(defun git-root ()
"Find the git repository root of the visiting file."