* bug#41736: 28.0.50; project.el - support global patterns for project-ignores
@ 2020-06-06 9:45 Theodor Thornhill
2020-06-06 9:53 ` Basil L. Contovounesios
2020-06-06 11:08 ` Dmitry Gutov
0 siblings, 2 replies; 4+ messages in thread
From: Theodor Thornhill @ 2020-06-06 9:45 UTC (permalink / raw)
To: 41736
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"))"
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.
- It does not work when a project uses several modes
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?
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.
FWIW, method 2 seems to work perfectly, yet seems like kind of a hack.
Theo
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#41736: 28.0.50; project.el - support global patterns for project-ignores
2020-06-06 9:45 bug#41736: 28.0.50; project.el - support global patterns for project-ignores Theodor Thornhill
@ 2020-06-06 9:53 ` Basil L. Contovounesios
2020-06-06 10:10 ` Theodor Thornhill
2020-06-06 11:08 ` Dmitry Gutov
1 sibling, 1 reply; 4+ messages in thread
From: Basil L. Contovounesios @ 2020-06-06 9:53 UTC (permalink / raw)
To: Theodor Thornhill; +Cc: 41736
Theodor Thornhill <theo@thornhill.no> writes:
> 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.
Note that defcustoms are generally a user-level preference and should
therefore generally not be modified by major modes or other Lisp.
--
Basil
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#41736: 28.0.50; project.el - support global patterns for project-ignores
2020-06-06 9:53 ` Basil L. Contovounesios
@ 2020-06-06 10:10 ` Theodor Thornhill
0 siblings, 0 replies; 4+ messages in thread
From: Theodor Thornhill @ 2020-06-06 10:10 UTC (permalink / raw)
To: Basil L. Contovounesios; +Cc: 41736
[-- Attachment #1: Type: text/plain, Size: 886 bytes --]
On Sat, Jun 6, 2020 at 11:53, Basil L. Contovounesios <contovob@tcd.ie> wrote:
> Note that defcustoms are generally a user-level preference and should
> therefore generally not be modified by major modes or other Lisp.
> Yeah, absolutely. Unclear wording from my end.
What I mean is:
We seem to want the vc backend no matter what. However - if I open dired in root and execute “project-find-files” all the stuff I want ignored is not. I get the fast backend, but may search a million obfuscated minified files.
I think what I want is to be able to say:
1. Use the vc backed “major-mode” project
2. Use the vc backed “major-modes” project
Not sure how this would be implemented most clearly, but maybe the “project-vc-ignores” defcustom in init.el is the magic wand here?
If so - this bug report could be reduced to “add documentation to clarify this” :)
Theo
[-- Attachment #2: Type: text/html, Size: 1351 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#41736: 28.0.50; project.el - support global patterns for project-ignores
2020-06-06 9:45 bug#41736: 28.0.50; project.el - support global patterns for project-ignores Theodor Thornhill
2020-06-06 9:53 ` Basil L. Contovounesios
@ 2020-06-06 11:08 ` Dmitry Gutov
1 sibling, 0 replies; 4+ messages in thread
From: Dmitry Gutov @ 2020-06-06 11:08 UTC (permalink / raw)
To: Theodor Thornhill, 41736
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?
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-06-06 11:08 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-06 9:45 bug#41736: 28.0.50; project.el - support global patterns for project-ignores Theodor Thornhill
2020-06-06 9:53 ` Basil L. Contovounesios
2020-06-06 10:10 ` Theodor Thornhill
2020-06-06 11:08 ` Dmitry Gutov
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.