unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: [Emacs-diffs] trunk r116999: Provide function for asking vc about project root
       [not found] <E1Wc15p-0001h2-Rk@vcs.savannah.gnu.org>
@ 2014-04-21 14:43 ` Stefan Monnier
  2014-04-21 17:26   ` Daniel Colascione
  0 siblings, 1 reply; 5+ messages in thread
From: Stefan Monnier @ 2014-04-21 14:43 UTC (permalink / raw)
  To: Daniel Colascione; +Cc: emacs-devel

> +        (condition-case err
> +            (vc-call-backend backend 'root default-directory)
> +          (vc-not-supported
> +           (unless (eq (cadr err) 'root)
> +             (signal (car err) (cdr err)))
> +           nil)))))

Why do we need this gymnastics?


        Stefan



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Emacs-diffs] trunk r116999: Provide function for asking vc about project root
  2014-04-21 14:43 ` [Emacs-diffs] trunk r116999: Provide function for asking vc about project root Stefan Monnier
@ 2014-04-21 17:26   ` Daniel Colascione
  2014-04-21 21:51     ` Stefan Monnier
  0 siblings, 1 reply; 5+ messages in thread
From: Daniel Colascione @ 2014-04-21 17:26 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 415 bytes --]

On 04/21/2014 07:43 AM, Stefan Monnier wrote:
>> +        (condition-case err
>> +            (vc-call-backend backend 'root default-directory)
>> +          (vc-not-supported
>> +           (unless (eq (cadr err) 'root)
>> +             (signal (car err) (cdr err)))
>> +           nil)))))
> 
> Why do we need this gymnastics?

So that we don't accidentally suppress errors we *don't* expect to get.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 884 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Emacs-diffs] trunk r116999: Provide function for asking vc about project root
  2014-04-21 17:26   ` Daniel Colascione
@ 2014-04-21 21:51     ` Stefan Monnier
  2014-04-21 21:55       ` Daniel Colascione
  0 siblings, 1 reply; 5+ messages in thread
From: Stefan Monnier @ 2014-04-21 21:51 UTC (permalink / raw)
  To: Daniel Colascione; +Cc: emacs-devel

>>> +        (condition-case err
>>> +            (vc-call-backend backend 'root default-directory)
>>> +          (vc-not-supported
>>> +           (unless (eq (cadr err) 'root)
>>> +             (signal (car err) (cdr err)))
>>> +           nil)))))
>> Why do we need this gymnastics?
> So that we don't accidentally suppress errors we *don't* expect to get.

No: I see the hypothetical reason, but I was wondering about
a practical reason.  IOW, I think this is overkill.  Note that the cost
is not only in code complexity but catching&re-raising signals also
defeats the backtraces in debug-on-error, which can be a pain.

I even wonder if we should allow `root' to fail.  E.g. RCS/CVS could
just walk up the directories until there's no RCS/CVS subdir.


        Stefan



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Emacs-diffs] trunk r116999: Provide function for asking vc about project root
  2014-04-21 21:51     ` Stefan Monnier
@ 2014-04-21 21:55       ` Daniel Colascione
  2014-04-22  1:44         ` Stefan Monnier
  0 siblings, 1 reply; 5+ messages in thread
From: Daniel Colascione @ 2014-04-21 21:55 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1251 bytes --]

On 04/21/2014 02:51 PM, Stefan Monnier wrote:
>>>> +        (condition-case err
>>>> +            (vc-call-backend backend 'root default-directory)
>>>> +          (vc-not-supported
>>>> +           (unless (eq (cadr err) 'root)
>>>> +             (signal (car err) (cdr err)))
>>>> +           nil)))))
>>> Why do we need this gymnastics?
>> So that we don't accidentally suppress errors we *don't* expect to get.
> 
> No: I see the hypothetical reason, but I was wondering about
> a practical reason.  IOW, I think this is overkill.  Note that the cost
> is not only in code complexity but catching&re-raising signals also
> defeats the backtraces in debug-on-error, which can be a pain.

We're not catching all errors --- just vc-not-supported --- and it
amounts to an assertion that nothing else went horribly wrong, because
we re-raise only in cases where we'd otherwise swallow the error, and an
error with a truncated stack is at least better than nothing at all.

> I even wonder if we should allow `root' to fail.  E.g. RCS/CVS could
> just walk up the directories until there's no RCS/CVS subdir.

Works for me. Backends could also just have their root functions
explicitly return nil if they can't figure it out.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 884 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Emacs-diffs] trunk r116999: Provide function for asking vc about project root
  2014-04-21 21:55       ` Daniel Colascione
@ 2014-04-22  1:44         ` Stefan Monnier
  0 siblings, 0 replies; 5+ messages in thread
From: Stefan Monnier @ 2014-04-22  1:44 UTC (permalink / raw)
  To: Daniel Colascione; +Cc: emacs-devel

>> I even wonder if we should allow `root' to fail.  E.g. RCS/CVS could
>> just walk up the directories until there's no RCS/CVS subdir.
> Works for me. Backends could also just have their root functions
> explicitly return nil if they can't figure it out.

Exactly.  So we shouldn't catch errors at all in vc-root-dir.


        Stefan



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-04-22  1:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <E1Wc15p-0001h2-Rk@vcs.savannah.gnu.org>
2014-04-21 14:43 ` [Emacs-diffs] trunk r116999: Provide function for asking vc about project root Stefan Monnier
2014-04-21 17:26   ` Daniel Colascione
2014-04-21 21:51     ` Stefan Monnier
2014-04-21 21:55       ` Daniel Colascione
2014-04-22  1:44         ` Stefan Monnier

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).