Subject: Re: bug#17361: Tramp does not save history across sessions.

From: Stefan Monnier <[email-masked]>
Date: Tue, 29 Apr 2014 18:08:21 -0400

>> The only default that's backward compatible would be :override, which
>> basically defeats the purpose.
> In practice, your proposal means to throw away `set-process-sentinel'
> (and `set-process-filter').

[ Of course, only on the surface, since these are the low-level accessors
  used by add-function.  ]

> Since the default functions are already enabled, in most cases one
> shall use `add-function' instead.

There is a real problem with the default filter/sentinel, indeed.
Basically, add-function is a mechanism that allows combining functions
onto a "single function spot", so it provides the tool we need.

But another problem remains: for historical reasons (and for
convenience), the default filters/sentinels don't "do nothing".  So in
many cases packages want to *replace* the default rather than extend it.
`set-process-filter' works well for those, until another package comes
along which needs to interact with it.  Saying "use add-function"
doesn't really solve this problem, because we'll just replace

  (set-process-filter PROC FUN)
with
  (add-function :override (process-filter PROC) FUN)

which, just like set-process-filter, will override not just the default
filter but other filters added via add-function as well.

I haven't thought about how to really solve this problem.  I'm open
to suggestions.

> (I don't oppose completely, I just want that we understand and agree
> such a change.)

I don't have a good answer yet, sorry.

        Stefan