A simple macro to convert case

Get help using and writing Nisus Writer Pro macros.
Post Reply
lawrencegoodman
Posts: 30
Joined: 2007-07-30 12:06:49

A simple macro to convert case

Post by lawrencegoodman » 2007-07-30 12:09:26

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.

User avatar
martin
Official Nisus Person
Posts: 4290
Joined: 2002-07-11 17:14:10
Location: San Diego, CA
Contact:

Post by martin » 2007-07-30 14:02:54

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

lawrencegoodman
Posts: 30
Joined: 2007-07-30 12:06:49

Post by lawrencegoodman » 2007-07-31 05:55:51

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.

User avatar
Matze
Posts: 156
Joined: 2004-12-14 07:54:49
Location: Düsseldorf Germany
Contact:

Post by Matze » 2007-11-09 08:21:39

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*

lawrencegoodman
Posts: 30
Joined: 2007-07-30 12:06:49

Post by lawrencegoodman » 2007-11-12 11:49:12

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

User avatar
martin
Official Nisus Person
Posts: 4290
Joined: 2002-07-11 17:14:10
Location: San Diego, CA
Contact:

Post by martin » 2007-11-12 14:10:16

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.

Post Reply