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.