If there is a core.excludesfile option specified, let the emacs git mode take exclude patterns from that file, since that's what the docs say, and what everyone else is already doing. Signed-off-by: Karl Hasselström <kha@xxxxxxxxxxx> --- The patch works, but the code is anything but pretty. I need help from someone who actually knows elisp! (Apologies if this patch reaches the list twice; the first copy I sent was seemingly lost, so I tried another route.) contrib/emacs/git.el | 19 ++++++++++++++++--- 1 files changed, 16 insertions(+), 3 deletions(-) diff --git a/contrib/emacs/git.el b/contrib/emacs/git.el index 53dd703..357e6d2 100644 --- a/contrib/emacs/git.el +++ b/contrib/emacs/git.el @@ -589,6 +589,13 @@ Return the list of files that haven't been handled." (when node (push (ewoc-data node) unmerged-files)))) (git-set-files-state unmerged-files 'unmerged)))) +(defun git-core-excludesfile () + "The file core.excludesfile, or nil if it isn't specified." + (let ((fn (git-config "core.excludesfile"))) + (if (and fn (file-readable-p fn)) + fn + nil))) + (defun git-update-status-files (files &optional default-state) "Update the status of FILES from the index." (unless git-status (error "Not in git-status buffer.")) @@ -600,9 +607,15 @@ Return the list of files that haven't been handled." (git-run-ls-unmerged status files) (when (and (or (not files) remaining-files) (file-readable-p ".git/info/exclude")) - (setq remaining-files (git-run-ls-files status remaining-files - 'unknown "-o" "--exclude-from=.git/info/exclude" - (concat "--exclude-per-directory=" git-per-dir-ignore-file)))) + (let ((ce (git-core-excludesfile))) + (if ce + (setq remaining-files (git-run-ls-files status remaining-files + 'unknown "-o" "--exclude-from=.git/info/exclude" + (concat "--exclude-per-directory=" git-per-dir-ignore-file) + (concat "--exclude-from=" ce))) + (setq remaining-files (git-run-ls-files status remaining-files + 'unknown "-o" "--exclude-from=.git/info/exclude" + (concat "--exclude-per-directory=" git-per-dir-ignore-file)))))) ; mark remaining files with the default state (or remove them if nil) (when remaining-files (if default-state - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html