Hello Kino,
Thank you very much for your reply.
On Jan 2, 2011, at 2:23 AM, Kino wrote:
>> can I understand that they are somehow equivalent of "SetSelect
>> (x, y)" in Classic Nisus Writer macro...?
>
> I have a vague feeling that your very long acquaintance with NW
> Classic macro -- much longer than mine -- tends to mislead you. NWP
> macro has nothing to do with NW Classic macro although you may
> believe to see something common, accidentally.
Well, I mentioned this (possible...) "equivalence" only as an
analogy, just because it seems to me easier to understand the NWP
macro language by analogy with the Classic Nisus Writer macro
language. But I understand that in fact they are very different in
nature.
To return to the my question about "SetSelect"..., the macro below
will show you what I wanted to know:
### begin macro ###
$doc = Document.active
$paraStarts = $doc.text.findAll '^', 'E', '-am'
$sels = Array.new
foreach $start in $paraStarts
if $start.text.documentContentType == 'body'
$sel = TextSelection.new $start.text, $start.range
$sels.appendValue $sel
end
end
$tab = Cast to String "\t"
foreach $i, $start in reversed $sels
$num = $i + 1 # $i: index number
$num &= $tab
# $doc.setSelection($start)
# Type Text $num
# exit
$start.text.insertAtIndex $start.location, $num
# exit
end
### end macro ###
If I use
$doc.setSelection($start)
Type Text $num
instead of
$start.text.insertAtIndex $start.location, $num
I think this would be very close to the Classic Nisus Writer Macro
which would be:
Find All "^." "gAa-S"
s -> push (Starts)
ct = NumFound
loop:
Clipboard = ct + NumToChar (9)
the_start = s -> pop
SetSelect (the_start, the_start)
MacroPaste
if (s -> size == 0) Exit
ct = ct - 1
GoTo loop
(As my machine still allows the Classic environment, I could test
this macro, and it works...).
In Classic Nisus macro language, it was the line
s -> push (Starts)
which seemed (to me...) strange, difficult to understand, almost a
magic. But otherwise, it was rather easy to understand, because, I
think, all was done, so to speak, in the screen: we could always
follow the location of the insertion point (or selection), and
verify, if we wanted, where it was. We could control the location of
the insertion point with "SetSelect (x, y)", and know what would be
inserted with "MacroPaste"...
What is difficult in the new NWP macro language (for me) is that this
pattern of thinking is no longer (really) valid. I understand that
$start.text.insertAtIndex $start.location, $num
does the same thing as
$doc.setSelection($start)
Type Text $num
but even if we stopped the macro just before
"$start.text.insertAtIndex $start.location, $num", we don't see where
the insertion point is... But this is certainly the reason why the
new NWP macro is much faster than the Classic NW macro (because it
does not "move" the insertion point).
But now, I seem to begin to understand a little better how the new
macro works.
Anyway, I will have to work much longer to begin to be a little
familiarized with it.
Best regard,
Nobumi Iyanaga
Tokyo,
Japan
|