[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#41736: 28.0.50; project.el - support global patterns for project-ign
From: |
Dmitry Gutov |
Subject: |
bug#41736: 28.0.50; project.el - support global patterns for project-ignores |
Date: |
Sat, 6 Jun 2020 14:08:41 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 |
On 06.06.2020 12:45, Theodor Thornhill wrote:
Hello,
In https://debbugs.gnu.org/cgi/bugreport.cgi?bug=41572 there is talk about supporting a "plain
project", and when joining that chat I realised that the "best" current
implementation is the VC backend. However, this backend does not easily include other patterns to
ignore.
For example we might want to ignore "node_modules", "elm-stuff" etc.
These can be added pretty easily to 'project-vc-ignores' via:
1. Major mode support: "(setq-local project-vc-ignores '("foo" "bar"))"
I'm not sure major modes are the place to do this: after all, the user
can call project-find-files while visiting a file in some other mode
(say, README.md). The view of the list of project files should remain
consistent.
2. User init.el "(add-to-list project-vc-ignores "foo")"
However, there are some drawbacks.
Method 1:
- We rely on major mode to implement this
- When using "project-switch-project", then press "f - find-file" the ignore is
not recognized yet since it relies on the major mode.
Indeed.
- It does not work when a project uses several modes
And I think it's the common case.
Method 2:
- Needs user to add this to own init file.
- Pollutes the defcustom globally
Is there a way to set these patters such that we still can use the fast VC
backend, but not have these drawbacks?
How about .dir-locals.el?
project--value-in-dir takes particular care to read these files.
It seems like an easy solution could be to add a "defcustom
project-ignore-patterns" that the project-vc backend picks up. This could be set by
both future major modes and as user customization.
This also either pollutes user's init.el or remains major mode specific,
right?