# Support different CotEditor versions in AppleScript

This page lists the previous specific changes on AppleScript support in CotEditor.

## Terminology change on CotEditor 5.0.7

### Improve `write to console` command

Add `title` and `timestamp` options to the `write to console` command, so that the script name and timestamp can be omitted when writing to the console programmatically.

## Terminology change on CotEditor 5.0.0

### Change character range unit to grapheme cluster based

Change the character unit, used in `selection` or `jump` for instance, from UTF-16 based to the Unicode grapheme cluster-based. This is to follow the specification change in AppleScript 2.0 introduced in Mac OS X 10.5.

## Terminology change on CotEditor 4.4.0

### Deprecate `length`

The `length` property for the ‘document’ object was deprecated.

For backward compatibility, CotEditor 4.4.0 still accepts using this property; however, it can be removed someday in the future without announcement.

### Delete backward compatibility of `path`

The `path` property, which was deprecated in CotEditor 2.0.0 but stealthily kept for backward compatibility, is completely deleted in this version.

## Terminology change on CotEditor 4.1.0

### Jump

A new command `jump` was added to the ‘document’ object.

### Support encodings with BOM

A new property `has BOM` was added to the ‘document’ object.

A new option `BOM` was added to the `convert` command.

## Terminology change on CotEditor 4.0.7

### Encoding `convert` / `reinterpret`

Now `convert` and `reinterpret` commands accept the encoding also in the IANA charset name.

## Terminology change on CotEditor 3.9.7

### Smart quotes

The following new commands were added to the ‘selection’ object.

- `smarten quotes`
- `straighten quotes`
- `smarten dashes`

## Terminology change on CotEditor 3.5.0

### Editor’s opacity

`view opacity` property was deprecated on CotEditor 3.5.0.

Note that there is no backward compatibility with this change.

## Terminology change on CotEditor 3.1.2

### Auto tab expansion

A new property `expands tab` was added to the ‘document’ object.

## Terminology change on CotEditor 2.6.0

### Line spacing property

`line spacing` property was deprecated on CotEditor 2.6.0.

Note that there is no backward compatibility with this change.

## Terminology change on CotEditor 2.5.3

### Unicode normalization

A new value `Modified NFC` was added to the `normalize unicode` command.

## Terminology change on CotEditor 2.3.0

### Selected line editing

The following new commands were added to the ‘selection’ object.

- `move line up`
- `move line down`
- `sort lines`
- `reverse lines`
- `delete duplicate line`

## Terminology change on CotEditor 2.2.2

### Unicode normalization

A new value `Modified NFD` was added to the `normalize unicode` command.

## Terminology change on CotEditor 2.2.0

### Unicode normalization

A new value `NFCK Casefold` was added to the `normalize unicode` command.

## Terminology change on CotEditor 2.1.0

### Tab width

A new property `tab width` was added to the ‘document’ object.

## Terminology change on CotEditor 2.0.1

### Comment handling

New commands `comment out` and `uncomment` were added to the ‘selection’ object.

## Terminology change on CotEditor 2.0.0

### Unicode normalization

The command `unicode normalization` on CotEditor 1.x was renamed on 2.0 to `normalize unicode`. The function and parameters are the same as before.

Note that there is no backward compatibility with this change.

### Discontinuation of `path` property

The `path` property of ‘document’ object is discontinued on the modern AppleScript’s Standard Suite for a long time. Since CotEditor adopted it on version 2.0, this property is also deprecated on CotEditor. Use new `file` property instead. While `path` property returns a text object, `file` property returns a file object.

For backward compatibility, CotEditor 2.0 added a hidden `path` property to ‘document’ object uniquely; however, do not use it if you create new scripts and we also recommend migrating your previous scripts to use `file` property. Because this `path` property can be removed someday in the future without announcement.

### Update of internal code for `range` property

The internal code for `range` property of the text selection object to identify itself has been changed on CotEditor 2.0. The key for the range property is still `range`, so you don’t need to care about this if you write a new script. However, compiled AppleScripts (.scpt) which were written previously might need some updates for this change.

#### How to fix:

Open your .scpt files on AppleScript Editor (or Script Editor), the words that were `range` previously might be changed to `«class prng»` or something like that. Overwrite them with `range` again. And save them.
This issue doesn’t occur with plain-text AppleScript (.applescript).

## Terminology change on CotEditor 1.5.0

### Window transparency

According to the changing of the mechanism to make the window transparent on CotEditor 1.5, the terms about window opacity for AppleScript were also changed. The document’s properties till on version 1.4:

- `transparency`: The transparency of Window or TextView. (real, from ‘0.2’ to ‘1.0’)
- `alpha only textView`: Whether the transparency setting affects only the TextView or not. (boolean)

were deprecated, and the new window’s property:

- `view opacity`: The opacity of the view. (real, from ‘0.2’ to ‘1.0’)

was added instead.

Because the previous term “transparency” was incorrectly used until version 1.4, the property name was renamed from “transparency” to “opacity” but the value to set is not changed. Namely, 1.0 means fully opaque on both properties.

Note that there is no backward compatibility with this change.

### Selection object directly under the application

In version 0.6, the initial release of CotEditor, if you didn’t specify the ‘selection’ object, the frontmost window’s contents are selected. But it actually didn’t work correctly and therefore deprecated. This method was kept valid however to maintain backward compatibility.

On CotEditor 1.5, it is formally removed. Specify the target like below, when you get the ‘selection’ object.

example 1.

    tell application "CotEditor"
    	contents of selection of front document
    end tell

example 2.

    tell application "CotEditor"
    	tell document 1
    		contents of selection
    	end tell
    end tell

## See also

- Script CotEditor with AppleScript