Page 1 of 1
A simple macro to convert case
Posted: 2007-07-30 12:09:26
by lawrencegoodman
Forgive me if this is in the manual, but I cannot figure out how to do it.
I want to create a macro that consists of two steps:
1) the character to the right of the cursor is selected
2) that character's case is made lowercase.
It's nice not to have to select the character every time I want to change case.
Thanks very much.
Posted: 2007-07-30 14:02:54
by martin
This macro should do the trick:
Code: Select all
$selLoc = Selection Location
$selLen = Selection Length
$docLen = Selected Storage Length
# make sure there is a character to the right of the caret
Begin Perl
if( $selLoc + $selLen < $docLen + 1 ) {
$selLoc += $selLen;
$selLen = 1;
}
else {
$selLoc += $selLen;
$selLen = 0;
}
End
# make the desired character lowercase
Set Selection $selLoc, $selLen
Edit:Convert:To lowercase
Posted: 2007-07-31 05:55:51
by lawrencegoodman
Yes, this works, though it's a bit sluggish.
I have a question though: why does Nisus make macros so tough? Most word processors give you the option to record keystrokes and create macros that way. I know writing them by hand gives you more complexity, but why not also let newbies like myself with little programming experience, do it the simple way as well?
This is a great word processor, but if I buy it, it means committing to learning the macro language and probably also perl. I just don't have the time.
Thanks.
Posted: 2007-11-09 08:21:39
by Matze
lawrencegoodman wrote:Yes, this works, though it's a bit sluggish.
I have a question though: why does Nisus make macros so tough? Most word processors give you the option to record keystrokes and create macros that way. I know writing them by hand gives you more complexity, but why not also let newbies like myself with little programming experience, do it the simple way as well?
This is a great word processor, but if I buy it, it means committing to learning the macro language and probably also perl. I just don't have the time.
Thanks.
Do you remember Nisus Writer 6.5 macros? *sigh*
Posted: 2007-11-12 11:49:12
by lawrencegoodman
This doesn't check to see if there is a character to the right, but it runs a lot quicker:
$selLoc = Selection Location
$selLen = Selection Length
Select Start
$selLen = 1
Set Selection $selLoc, $selLen
Edit:Convert:To lowercase
Select End
Posted: 2007-11-12 14:10:16
by martin
This runs as quickly and still checks to make sure there is a character to the right:
Code: Select all
$selLoc = Selection Location
$selLen = Selection Length
$docLen = Selected Storage Length
# make sure there is a character to the right of the caret
$selLoc += $selLen
If $selLoc <= $docLen
$selLen = 1
Else
$selLen = 0
End
# make the desired character lowercase
Set Selection $selLoc, $selLen
Edit:Convert:To lowercase
The reason the first macro takes longer is because of the Perl block, which are expensive to use, independent of how much actual work a particular block does.