summaryrefslogtreecommitdiffstats
path: root/lisp/init-git.el
diff options
context:
space:
mode:
authorMartin Polden <martin.polden@gmail.com>2014-07-01 15:00:54 +0200
committerMartin Polden <martin.polden@gmail.com>2014-07-01 15:11:55 +0200
commit03969dea69150850d3a417650a5d0c7a6ea74476 (patch)
tree22612d30771550fe39774106200053cb8b04ee8f /lisp/init-git.el
parent5f6c67638acf51cba9665d441ee7bc92b4b2a277 (diff)
Stage single line in magit
Diffstat (limited to 'lisp/init-git.el')
-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."