letf and setf are okay as work-arounds, I suppose.
The package I use these for is http://github.com/nex3/perspective-el/blob/master/perspective.el. Each frame keeps track of a separate set of workspaces, as well as various other useful variables (the current workspace, previous workspace, etc.).
> But frame-parameters have to be manually managed with frame-parameter, no?Sounds obvious, doesn't it?
No, it really doesn't seem particularly annoying:
> Even ignoring compatibility for user-facing configuration, it seems really
> annoying to have to call frame-parameter and set-frame-parameter all the
> time, especially if you're trying to simulate `let'.
(require 'cl)
(letf (((frame-parameter <foo>) 'newvalue)) <blabla>)
the same holds for symbol properties, process properties, window
parameters, terminal parameters, ...
BTW, since frame-parameters have been very rarely used and you seem to
> Are there at least any plans for a nicer API for working with what used to
> be frame-local variables?
use them "extensively", I'm curious: what do you use them for
(i.e. what kind of data do you keep there, and why do you need to
let-(re)bind it)?
Stefan