---
id: plastic
title: Plastic SCM
sidebar_label: Plastic SCM
---

## What

Display Plastic SCM information when in a plastic repository. Also works for subfolders.
For maximum compatibility, make sure your `cm` executable is up-to-date
(when branch or status information is incorrect for example).

## Sample Configuration

```json
{
  "type": "plastic",
  "style": "powerline",
  "powerline_symbol": "\uE0B0",
  "foreground": "#193549",
  "background": "#ffeb3b",
  "background_templates": [
    "{{ if .MergePending }}#006060{{ end }}",
    "{{ if .Changed }}#FF9248{{ end }}",
    "{{ if and .Changed .Behind }}#ff4500{{ end }}",
    "{{ if .Behind }}#B388FF{{ end }}"
  ],
  "template": "{{ .Selector }}{{ if .Status.Changed }} \uF044 {{ end }}{{ .Status.String }}",
  "properties": {
    "fetch_status": true,
    "branch_max_length": 25,
    "truncate_symbol": "\u2026"
  }
}
```

## Plastic SCM Icon

If you want to use the icon of Plastic SCM in the segment, then please help me push the icon in this [issue][fa-issue]
by leaving a like!
![icon](https://www.plasticscm.com/images/icon-logo-plasticscm.svg)

## Properties

### Fetching information

As doing multiple `cm` calls can slow down the prompt experience, we do not fetch information by default.
You can set the following property to `true` to enable fetching additional information (and populate the template).

|`fetch_status`|`boolean`|fetch the local changes - defaults to `false`|

### Icons

#### Branch

| Name                | Type     | Description                                                                                  |
| ------------------- | -------- | -------------------------------------------------------------------------------------------- |
| `branch_icon`       | `string` | the icon to use in front of the git branch name - defaults to `\uE0A0 `                      |
| `full_branch_path`  | `bool`   | display the full branch path: `_/main/fix-001_` instead of `_fix-001_` - defaults to `true`  |
| `branch_max_length` | `int`    | the max length for the displayed branch name where `0` implies full length - defaults to `0` |
| `truncate_symbol`   | `string` | the icon to display when a branch name is truncated - defaults to empty                      |

#### Selector

| Name          | Type     | Description                                                                           |
| ------------- | -------- | ------------------------------------------------------------------------------------- |
| `commit_icon` | `string` | icon/text to display before the commit context (detached HEAD) - defaults to `\uF417` |
| `tag_icon`    | `string` | icon/text to display before the tag context - defaults to `\uF412`                    |

## Template ([info][templates])

:::note default template

```template
{{ .Selector }}
```

:::

### Properties

| Name            | Type            | Description                                                                                                                                                       |
| --------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `.Selector`     | `string`        | the current selector context (branch/changeset/label)                                                                                                             |
| `.Behind`       | `bool`          | the current workspace is behind and changes are incoming                                                                                                          |
| `.Status`       | `PlasticStatus` | changes in the workspace (see below)                                                                                                                              |
| `.MergePending` | `bool`          | if a merge is pending and needs to be commited (known issue: when no file is left after a _Change/Delete conflict_ merge, the `MergePending` property is not set) |

### PlasticStatus

| Name        | Type      | Description                                  |
| ----------- | --------- | -------------------------------------------- |
| `.Unmerged` | `int`     | number of unmerged changes                   |
| `.Deleted`  | `int`     | number of deleted changes                    |
| `.Added`    | `int`     | number of added changes                      |
| `.Modified` | `int`     | number of modified changes                   |
| `.Moved`    | `int`     | number of moved changes                      |
| `.Changed`  | `boolean` | if the status contains changes or not        |
| `.String`   | `string`  | a string representation of the changes above |

Local changes use the following syntax:

| Icon | Description |
| ---- | ----------- |
| `+`  | added       |
| `~`  | modified    |
| `-`  | deleted     |
| `v`  | moved       |
| `x`  | unmerged    |

[templates]: /docs/configuration/templates
[fa-issue]: https://github.com/FortAwesome/Font-Awesome/issues/18504