Returns at the end of the file
Page 1 of 1

Author:  matt_wiseman [ 2008-04-18 09:21:39 ]
Post subject:  Returns at the end of the file

Most documents I work with end up in InDesign. By default, most documents I get have a return as the last character of the file. Is there a way to delete this?

Don't say the backspace key... I mean like in a macro...

Find: \n <---- followed by an end of file character
Replace: end of file character.

Thanks. That last return often makes a text block problematic in InDesign. I'd like to include deleting it in a macro.

Author:  martin [ 2008-04-18 13:33:39 ]
Post subject: 

The special PowerFind Pro anchor for "end of document" is "\Z", but that will actually match the end of other text areas as well, eg: table cells. I'd use this macro myself:
Require Application Version "3.1"

$doc =
$text = $doc.text
If $text.length > 0
    # check for newline character at end of main body
    $lastIndex = $text.length - 1
    $lastChar = $text.characterAtIndex($lastIndex)
    If $lastChar == 10
        # delete just the final character
        $lastCharRange =$lastIndex, 1)

I almost forgot to say, this macro requires version 1.1, which is now in public beta.

Author:  Kino [ 2010-09-20 06:26:56 ]
Post subject:  Re: Returns at the end of the file

Since NWP 1.3, a single command can do the job.
Find and Replace '\n+\z', '', 'E', '-am'
which replaces the return(s) at the document end (\n+\z) with nothing in the main body (-am).

What is inconvenient with it is that the caret will move to the document end when Find and Replace has worked successfully. The following macro get the caret back to the original position by executing Previous Selection when and only when Find and Replace has actually removed the return(s).
Require Pro Version 1.3
if Find and Replace '\n+\z', '', 'E', '-am'
   Menu ':Edit:Select:Previous Selection'

Edit: Modified the code so that multiple returns will be removed.

Edit: It seems that Previous Selection does not always work as expected. Perhaps I misunderstand how it works, though.

Edit: Then, the following is better.
Require Pro Version 1.3
$doc =
$doc.text.findAndReplace '\n+\z', '', 'E', '-am'

Edit: Alternatively, you can use something like this (assuming you are not using setMark: usually).
Require Pro Version 1.3
Send Selector 'setMark:'
if Find and Replace '\n+\z', '', 'E', '-am'
   Send Selector 'selectToMark:'
   Select Start

There’s more than a way to do it . . .

Page 1 of 1 All times are UTC - 8 hours
Powered by phpBB® Forum Software © phpBB Group