diff options
author | Alexandre Julliard <julliard@winehq.org> | 2008-11-01 20:14:10 +0100 |
---|---|---|
committer | Alexandre Julliard <julliard@winehq.org> | 2008-11-23 11:54:41 +0100 |
commit | c4e8b72f228b20d3ed6cfba0586364ea8ca431af (patch) | |
tree | f7a7cea3f925436cb9106f9e5a8ffef7617605d8 /contrib | |
parent | b0a53e9e56d0a501aebc99d3614be413e91613f6 (diff) | |
download | git-c4e8b72f228b20d3ed6cfba0586364ea8ca431af.tar.gz git-c4e8b72f228b20d3ed6cfba0586364ea8ca431af.tar.xz |
git.el: Add possibility to mark files directly in git-update-status-files.
This avoids the need to go through the list twice, which helps
performance on large file lists.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/emacs/git.el | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/contrib/emacs/git.el b/contrib/emacs/git.el index 6119c31d0..9e9101b17 100644 --- a/contrib/emacs/git.el +++ b/contrib/emacs/git.el @@ -752,7 +752,7 @@ Return the list of files that haven't been handled." (concat "--exclude-per-directory=" git-per-dir-ignore-file) (append options (mapcar (lambda (f) (concat "--exclude-from=" f)) exclude-files))))) -(defun git-update-status-files (&optional files) +(defun git-update-status-files (&optional files mark-files) "Update the status of FILES from the index." (unless git-status (error "Not in git-status buffer.")) ;; set the needs-update flag on existing files @@ -777,12 +777,12 @@ Return the list of files that haven't been handled." (when remaining-files (setq remaining-files (git-run-ls-files-cached git-status remaining-files 'uptodate))) (git-set-filenames-state git-status remaining-files nil) + (when mark-files (git-mark-files git-status files)) (git-refresh-files) (git-refresh-ewoc-hf git-status))) (defun git-mark-files (status files) "Mark all the specified FILES, and unmark the others." - (setq files (sort files #'string-lessp)) (let ((file (and files (pop files))) (node (ewoc-nth status 0))) (while node @@ -1371,9 +1371,7 @@ amended version of it." (git-call-process-display-error "reset" "--soft" "HEAD^") (and (git-update-ref "ORIG_HEAD" commit) (git-update-ref "HEAD" nil commit))) - (git-update-status-files (copy-sequence files)) - (git-mark-files git-status files) - (git-refresh-files) + (git-update-status-files files t) (git-setup-commit-buffer commit) (git-commit-file)))) |