branch: elpa/magit
commit be79ca2fbd722668438466c449383251913b59a7
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>
magit--gitignore: Take care of staging and/or refreshing
---
lisp/magit-gitignore.el | 27 ++++++++++++---------------
1 file changed, 12 insertions(+), 15 deletions(-)
diff --git a/lisp/magit-gitignore.el b/lisp/magit-gitignore.el
index 942f3b1a55..141b2abc0c 100644
--- a/lisp/magit-gitignore.el
+++ b/lisp/magit-gitignore.el
@@ -55,9 +55,7 @@ Since this file is tracked, it is shared with other clones of
the
repository. Also stage the file."
:description "shared at toplevel (.gitignore)"
(interactive (list (magit-gitignore-read-pattern)))
- (magit-with-toplevel
- (magit--gitignore rule ".gitignore")
- (magit-run-git "add" ".gitignore")))
+ (magit--gitignore rule (expand-file-name ".gitignore" (magit-toplevel)) t))
;;;###autoload(autoload 'magit-gitignore-in-subdir "magit-gitignore" nil t)
(transient-define-suffix magit-gitignore-in-subdir (rule directory)
@@ -69,10 +67,7 @@ Also stage the file."
:description "shared in subdirectory (path/to/.gitignore)"
(interactive (list (magit-gitignore-read-pattern)
(read-directory-name "Limit rule to files in: ")))
- (magit-with-toplevel
- (let ((file (expand-file-name ".gitignore" directory)))
- (magit--gitignore rule file)
- (magit-run-git "add" (magit-convert-filename-for-git file)))))
+ (magit--gitignore rule (expand-file-name ".gitignore" directory) t))
;;;###autoload(autoload 'magit-gitignore-in-gitdir "magit-gitignore" nil t)
(transient-define-suffix magit-gitignore-in-gitdir (rule)
@@ -80,8 +75,7 @@ Also stage the file."
Rules in that file only affects this clone of the repository."
:description "privately (.git/info/exclude)"
(interactive (list (magit-gitignore-read-pattern)))
- (magit--gitignore rule (expand-file-name "info/exclude" (magit-gitdir)))
- (magit-refresh))
+ (magit--gitignore rule (expand-file-name "info/exclude" (magit-gitdir))))
;;;###autoload(autoload 'magit-gitignore-on-system "magit-gitignore" nil t)
(transient-define-suffix magit-gitignore-on-system (rule)
@@ -92,12 +86,11 @@ Rules that are defined in that file affect all local
repositories."
(or (magit-get "core.excludesfile")
"core.excludesfile is not set"))
(interactive (list (magit-gitignore-read-pattern)))
- (magit--gitignore rule
- (or (magit-get "core.excludesFile")
- (error "Variable `core.excludesFile' isn't set")))
- (magit-refresh))
+ (if-let ((file (magit-get "core.excludesFile")))
+ (magit--gitignore rule file)
+ (error "Variable `core.excludesFile' isn't set")))
-(defun magit--gitignore (rule file)
+(defun magit--gitignore (rule file &optional stage)
(when$ (file-name-directory file)
(make-directory $ t))
(with-temp-buffer
@@ -108,7 +101,11 @@ Rules that are defined in that file affect all local
repositories."
(insert "\n"))
(insert (replace-regexp-in-string "\\(\\\\*\\)" "\\1\\1" rule))
(insert "\n")
- (write-region nil nil file)))
+ (write-region nil nil file))
+ (if stage
+ (magit-with-toplevel
+ (magit-run-git "add" (magit-convert-filename-for-git file)))
+ (magit-refresh)))
(defun magit-gitignore-read-pattern ()
(let* ((default (magit-current-file))