> On Jan 29, 2025, at 9:50 AM, Michael Albinus <michael.albi...@gmx.de> wrote:
> 
> 
>> One thing that is unclear to me: do the `connection-local' settings
>> have any effect without a matching `connection-properties'?
> 
> No. Both is needed.

In fact I find that once the connection-local profile/variables are set, future 
connections proceed as async, with "-t -t".  When the final piece 
(connection-properties) is installed, the "-t -t" is dropped.  So while both 
may be needed, the first connection-local set seem to alter the connection 
details, inhibiting the interactive shell version.

>> Also, why
>> is it `tramp-direct-async-process' in one place and just
>> "direct-async" in the other?
> 
> History. People tend to modify the rather complex structure of
> tramp-methods in their config, which is error prone. That's why I have
> added the possibility to overwrite tramp-methods arguments by connection
> properties.
> 
> tramp-methods arguments are alwys symbols, starting with
> 'tramp-'. Connection properties are always strings, w/o a leading
> "tramp-". So this is the result. This mapping is explained in the Tramp 
> manual.

I did eventually find this in the manual, but far away from where I looked (in 
fact I used consult-info).  It would be very helpful if the docstring for 
tamp-connection-properties method that some properties are mapped in this way. 


>>        BTW, I'd prefer to enable direct-async _only_ for the
>>        processes my
>>        package creates, not for _all_ SSH processes, leaving that to
>>        the
>>        user.  
>> 
>>    How do *your* processes differ from user processes? Is there
>>    something
>>    special in the remote file name, or so?
>> 
>> Do you mean the file name of the remote process executable itself?
> 
> No, I mean the "remote" part of a remote file name, like
> "/ssh:host". The name of a remote process executable isn't checked.

Oh right.  That's of course how make-process knows to make a remote process.

>> Yes, this is distinct and I know it in advance (usually "python[3]" or
>> "ipython").  Would the idea be to update the regex in
>> `tramp-connection-properties' to target only these executable names?
> 
> No. I have no idea yet how to fulfill your request.
> 
> Perhaps you can use the macro setq-connection-local in order to wrap
> your calls to direct asyn processes, setting connection-local variable
> tramp-direct-async-process temporarily only. To be investigated.

I was thinking of changing the :application in the profile selection criteria 
from 'tramp to something unique to my package.  Unfortunately again here the 
docs don't seem to give much guidance.  The closest I found is the docstring of 
connection-local-criteria-alist, which mentions:

Property names might be ‘:application’, ‘:protocol’, ‘:user’ and ‘:machine’.  
The property value of
‘:application’ is a symbol, all other property values are strings.

which gives no hint as to how the connection/application details are set up.  
I'm imagining I could just locally set, in my process buffers, the variable 
connection-local-default-application to a unique name that matches my 
connection profile.  Does that sound possible?

>> It seems there must be some combination of settings that gives binary
>> data ✓; signals ✓.
> 
> Well, it looks like we must think about rewriting signal handling for
> direct async processes. One idea is to send the respective control
> character directly. The posting on SX gives useful information, indeed.

Yes, my other message describes some progress I made.  I actually think if 
TRAMP can get the PID from a direct-async process, this should work well 
(modulo the interrupt issue I mention there). 

Thanks for your work on TRAMP!

JD

Reply via email to