Subject: bug#32090: 26.1; connection-local-variables do not match as described

From: Michael Albinus <[email-masked]>
Date: Mon, 09 Jul 2018 16:15:51 +0200

Christopher Cooper <[email-masked]> writes:

Hi Christopher,

>> That means, the Tramp implementation requires :application to be 'tramp
>> or nil, *and* it requires setting of :protocol, :user and :machine in
>> your criteria, which match the respective remote file name.
>
> This makes sense, except that I'm still confused on why :application
> can be nil but :protocol, :user, and :machine cannot be.
>
> I think ultimately, it comes down to a confusion over what "optional"
> means. I took it to mean: "It this property is provided, it will be
> checked when matching. If not, we don't care about the value of this
> property." And, as I stated earlier, I don't understand how the
> sentence "If CRITERIA is 'nil', it always applies." is try in any
> sense of those words. If the feature is working as intended, those are
> the worst offenders as far as confusing documentation.

Well, I've slept over this last night, and I've convinced myself that
you are right. Every property shall be optional, not only :application.
As documented.

So I've committed a patch to the emacs-26 branch. Maybe you have a
chance to check this out; otherwise the patch is accessible here:
<http://git.savannah.gnu.org/cgit/emacs.git/patch/?id=917158f8c91121572f38d641096e171540d0bac2>

> Once again, I appreciate this feature and your explanation here. I
> hope this is helpful in clarifying the documentation.

If you want see some more examples for intended use, see file
test/lisp/files-x-tests.el. Note, that I have adapted it as well for the
patch.

> Christopher

Best regards, Michael.