On Sat, Nov 06, 2004 at 08:42:28PM +0000, Mikhael Goikhman wrote:
> On 06 Nov 2004 15:00:12 +0100, Rafal Bisingier wrote:
> > 
> > On Tue, Oct 26, 2004 at 01:33:11PM +0000, Mikhael Goikhman wrote:
> > > The first step (that you can do) is to handle the specified doubled chars
> > > as escaped char rather than meta-chars in conditions. And implement one
> > > filter "pattern" that quotes variables in order to be used in commands
> > > that require patterns. I.e. Next ($[w.name:pattern], !Iconified) ...
> > 
> > Ok, so I've done it. Conditional commands now understand doubled '*',
> > '?' and '|' as escaped chars.
> > I've made also $[w.name:pattern] filter.
> 
> Hmm, you didn't do what I meant. :)
> 
> I meant a filter that may be applied to any variable, i.e.
> 
>   $[w.iconname:pattern]
>   $[HOME:pattern]
> 
> This escapes all special chars like "*" to be suitable for conditions.

Well, look's like I haven't understood you indeed.
And even worse: to get what you've said, much bigger change than I thought is
needed... :-(

In the meantime I've found a problem with this double char escaping
algoritm. If we use '**' to get literal match for '*' and '*' to match
any string, then there is no posibility to match strings like:
'One*', 'Two*', 'Three*' with a wildcard pattern.
So I've thought that we should change escaping character to some
non-special one (eg. '\'), and use '\*' for literal '*' match, and of
course '\\' for '\'. I know this will add new special character, but I
don't see any other solution.

> > > If you are at it, you may implement other suggested filters, but please
> > > test this thoroufully if you do it.
> > 
> > I've tested it, and don't see any problems with it.
> 
> I didn't see the whole code, just the diff, but it seems that your
> $[w.name:pattern] is done incorrectly. IIRC, there should be 2 parts, one
> that estimates the resulting string length and one that generates the
> expanded string content. You should not really allocate the string space
> yourself.

The code for variable expanding is a little strange. There are 2
functions. One for simple variables (like n), and one expanding extended
variables (like w.name). First function calls second two times:
- first it only check output length, and allocates memmory for it
- at the second call it actually copy output to the allocated memory.
That's why I decided to use 'static char*' buffer.
Nevertheless it's not needed there, because we should do filtering in
another function. ;-)

> For the "pattern" filter you may double the string length as an
> estimation. But there is no support for filters yet, it should be added.
>
> Possible filters would be:
> 
>   $[VAR]             - expanded to: 'My %^&* window'
>   $[VAR:dquote]      - expanded to: "My %^&* window"
>   $[VAR:noquote]     - expanded to: My %^&* window
>   $[VAR:pattern]     - expanded to: 'My %^&** window'
>   $[VAR:menu]        - expanded to: 'My %%^&* window'

So now I see filter support have to be added first. ;-)

> > > > It'll be good to implement also the proposed syntax for selecting window
> > > > exclusivly by it's class, resource, icon name or title, but I'm not
> > > > sure if I have enough skill to do it.
> > > > And there's still a problem with backward compatibility of this new
> > > > syntax. Can we just leave existing syntax as is, and add only the new
> > > > options? I know it can break backward compatibility in some (I think
> > > > rare) cases when one want to select window named for ex: "Name" or
> > > > "Resource", but in this cases there will always be posibility to use the
> > > > new option AnyName.
> > > 
> > > I don't think that Name/IconName/Class/Resource/AnyName should be
> > > done before 2.6.
> > 
> > I suspected you'll say that. I don't think I can do anything to change
> > this, so maybe from the other side: what is needed to release 2.6? ;-)
> 
> Testing, testing and fixing bugs in the bug system and todo-2.6.

If using current fvwm can be treated as testing, then I do that every
day... ;-)
For fixing bugs - I'm afraid my programming skills are insufficient. :-(

> > I'd realy like to see this Name/IconName/Class/Resource/AnyName syntax.
> 
> I want to see it too. But I want to see 2.6 even stronger.

:-)

> I will support inclusion of the patch for these condition options if
> his authors also does something from todo-2.6.

I understand, and try to do something to speed up 2.6 release... ;-)

-- 
Rafal Bisingier

Attachment: pgpvAHxcFKMe7.pgp
Description: PGP signature

Reply via email to