> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ton.org/llms.txt
> Use this file to discover all available pages before exploring further.

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.ton.org/feedback

```json
{
  "path": "/contract-dev/ide/jetbrains",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# TON plugin for IDEs from JetBrains

export const Image = ({src, darkSrc, alt = '', darkAlt, href, target, height = 342, width = 608, noZoom = false, center = false}) => {
  const isSVG = src.match(/\.svg(?:[#?].*?)?$/i) !== null;
  const shouldInvert = isSVG && !darkSrc;
  const shouldCreateLink = href !== undefined;
  const minPx = 9;
  const maxPx = 608;
  const expectedPx = `a number or a string with a number that is greater than ${minPx - 1} and less than or equal to ${maxPx}`;
  const createInvalidPropCallout = (title, received, expected) => {
    return <Danger>
        <span className="font-bold">
          Invalid <code>{title.toString()}</code> passed!
        </span>
        <br />
        <span className="font-bold">Received: </span>
        {received.toString()}
        <br />
        <span className="font-bold">Expected: </span>
        {expected.toString()}
        {}
      </Danger>;
  };
  const checkValidDimensionValue = value => {
    switch (typeof value) {
      case "string":
      case "number":
        const num = Number(value);
        return Number.isSafeInteger(num) && num >= minPx && num <= maxPx;
      default:
        return false;
    }
  };
  let callouts = [];
  if (height && !checkValidDimensionValue(height)) {
    callouts.push(createInvalidPropCallout("height", height, expectedPx));
  }
  if (width && !checkValidDimensionValue(width)) {
    callouts.push(createInvalidPropCallout("width", width, expectedPx));
  }
  if (callouts.length !== 0) {
    return callouts;
  }
  const heightPx = Number(height);
  const widthPx = Number(width);
  const shouldCenter = center === "true" || center === true ? true : false;
  const shouldNotZoom = noZoom === "true" || noZoom === true ? true : false;
  const images = <>
      <img className="block dark:hidden" src={src} alt={alt} {...height && ({
    height: heightPx
  })} {...width && ({
    width: widthPx
  })} {...(shouldCreateLink || shouldInvert || shouldNotZoom) && ({
    noZoom: "true"
  })} />
      <img className={`hidden dark:block ${shouldInvert ? "invert" : ""}`} src={darkSrc ?? src} alt={darkAlt ?? alt} {...height && ({
    height: heightPx
  })} {...width && ({
    width: widthPx
  })} {...(shouldCreateLink || shouldInvert || shouldNotZoom) && ({
    noZoom: "true"
  })} />
    </>;
  if (shouldCreateLink) {
    if (shouldCenter) {
      return <div style={{
        display: "flex",
        justifyContent: "center"
      }}>
          <a href={href} target={target ?? "_self"}>
            {images}
          </a>
        </div>;
    }
    return <a href={href} target={target ?? "_self"}>
        {images}
      </a>;
  }
  if (shouldCenter) {
    return <div style={{
      display: "flex",
      justifyContent: "center"
    }}>{images}</div>;
  }
  return images;
};

TON plugin for IntelliJ IDEA (Ultimate and Community), WebStorm, CLion, GoLand, PyCharm, RustRover, and all other JetBrains IDEs.

<Columns cols={3}>
  <Card title="Installation" icon="floppy-disk" horizontal="true" href="#installation" />

  <Card title="Features" icon="sparkles" horizontal="true" href="#features-and-language-support" />

  <Card title="Community" icon="user-group" horizontal="true" href="#community" />
</Columns>

## Installation

### From marketplace

1. In the IDE, open <kbd><Icon icon="gear" size={16} /> Settings</kbd><br />
   Skip this step if you do not have open projects and are in the Start menu
2. Go to <kbd>Plugins</kbd>
3. Select the <kbd>Marketplace</kbd> tab (default)
4. Search for `TON`
5. Select the official plugin from TON Core and click <kbd>Install</kbd>

The plugin would be fetched and installed in your current JetBrains IDE. You might need to restart it for changes to take effect.

Here is how the plugin installation page may look in the start menu of WebStorm, before pressing the <kbd>Install</kbd> button:

<Image src="/resources/images/intellij-ton/install-from-settings.png" darkSrc="/resources/images/intellij-ton/install-from-settings-dark.png" alt="Screenshot of the plugin installation" />

Alternatively, you can press <kbd>Get</kbd> on the [plugin homepage in the JetBrains Marketplace](https://plugins.jetbrains.com/plugin/23382-ton) and then follow subsequent instructions.

### From disk

To manually install the plugin:

1. Download the plugin archive from the [latest GitHub release](https://github.com/ton-blockchain/intellij-ton/releases/latest) or from the exact version [on the marketplace](https://plugins.jetbrains.com/plugin/23382-ton/versions)
2. In the IDE, open <kbd><Icon icon="gear" size={16} /> Settings</kbd><br />
   Skip this step if you do not have open projects and are in the Start menu
3. Go to <kbd>Plugins</kbd>
4. Click the gear icon on top <kbd><Icon icon="gear" size={16} /></kbd> and then select `Install Plugin from Disk...`
5. Select the plugin archive in the pop-up and complete the installation

See also: [Installing a plugin from the command line in IntelliJ IDEA](https://www.jetbrains.com/help/idea/managing-plugins.html#install_plugin_cmd).

## Features and language support

This plugin provides first-class support for TON-specific languages, schemas, and data formats in IntelliJ-based IDEs. Everything you need to develop, test, debug, and deploy TON smart contracts is made available right from your favorite JetBrains-made editor.

<Columns cols={2}>
  <Card title="Tolk" icon="star" horizontal="true" href="#tolk">
    Recommended language for TON smart contract development
  </Card>

  <Card title="FunC" icon="building-columns" horizontal="true" href="#func">
    Legacy TON smart contract programming language
  </Card>

  <Card title="Fift" icon="layer-group" horizontal="true" href="#fift">
    Low-level stack-based language with deep TVM integration
  </Card>

  <Card title="TL-B" icon="table-cells" horizontal="true" href="#tl-b">
    Cell-based data serialization and markup language
  </Card>

  <Card title="TON Assembly (TASM)" icon="binary" horizontal="true" href="#tasm">
    Textual TVM bitcode assembly language and corresponding (dis)assembler
  </Card>

  <Card title="Integrations" icon="toolbox" horizontal="true" href="#integrations">
    Work with Blueprint projects, Sandbox TON emulator, and other popular tools for TON development
  </Card>
</Columns>

### Tolk

**File extension:** `.tolk`

<Image src="/resources/images/intellij-ton/tolk.png" darkSrc="/resources/images/intellij-ton/tolk-dark.png" alt="Screenshot of the Tolk language support" />

The plugin provides the following features for Tolk files:

* Syntax and error highlighting
* [Code completion] — context-specific suggestions as you type
* [Parameter info] — names of parameters in function calls, with option to enable complete function signatures info
* [Quick documentation] — pop-up and hover documentation for any symbol right from the editor
* [Declarations] — go to declarations, implementations, and types
* [Usages] — search for references and usages of a code element throughout the codebase
* [Inlay hints] — special in-editor markers, like parameter name blobs next to the corresponding argument values
* [Inspections] — detects, finds, and highlights various problems and abnormal code
* [Intention actions] — contextual code edits and quick fixes
* [Formatting] — rearrangements and code cleanup
* [Rename refactorings] — change names of symbols and files
* [Code fragment surrounding] — templates for wrapping code fragments in various constructs, such as `try...catch` blocks.
* [File structure] — view and navigate the code structure of the open file.
* [Navigation bar] — structure of the project from directories down to code elements, usually located at the bottom of the status bar.

### FunC

**File extensions:** `.fc`, `.func`

<Image src="/resources/images/intellij-ton/func.png" darkSrc="/resources/images/intellij-ton/func-dark.png" alt="Screenshot of the FunC language support" />

The plugin provides the following features for FunC files:

* Syntax and error highlighting
* [Code completion]
* [Quick documentation]
* [Declarations]
* [Usages]
* [Inlay hints]
* [Inspections]

### Fift

**File extensions:** `.fif`, `.fift`

<Image src="/resources/images/intellij-ton/fift.png" darkSrc="/resources/images/intellij-ton/fift-dark.png" alt="Screenshot of the Fift language support" />

<Image src="/resources/images/intellij-ton/fift-asm.png" darkSrc="/resources/images/intellij-ton/fift-asm-dark.png" alt="Screenshot of the Fift assembly support" />

The plugin provides the following features for Fift:

* Syntax and error highlighting, with better support for Fift assembly
* [Code completion]
* [Declarations]
* [Usages]
* [Inspections]

### TL-B

**File extension:** `.tlb`

<Image src="/resources/images/intellij-ton/tlb.png" darkSrc="/resources/images/intellij-ton/tlb-dark.png" alt="Screenshot of the TL-B data scheme support" />

The plugin provides the following features for TL-B files:

* Syntax and error highlighting
* [Code completion]
* [Declarations]
* [Usages]
* [Inspections]

### TASM

**File extensions:**

* `.tasm` — textual bitcode assembly
* `.boc` — serialized binary smart contract code

<Image src="/resources/images/intellij-ton/tasm.png" darkSrc="/resources/images/intellij-ton/tasm-dark.png" alt="Screenshot of the TON Assembly (TASM) language support" />

The plugin provides the following features for TON Assembly (TASM):

* Syntax and error highlighting of `.tasm` files
* [Code completion]
* [Declarations]
* [Usages]
* [Inspections]

### Integrations

The plugin integrates with:

* [Blueprint](/contract-dev/blueprint/overview) — all-in-one development environment for TON smart contract development
* [Sandbox](https://github.com/ton-org/sandbox) — local TON emulator

## Community

Follow news and development discussions in [Telegram channels and chats](/get-support#telegram-chats-channels-and-bots).

[Code completion]: https://www.jetbrains.com/help/idea/auto-completing-code.html

[Parameter info]: https://www.jetbrains.com/help/idea/viewing-reference-information.html#view-parameter-info

[Quick documentation]: https://www.jetbrains.com/help/idea/viewing-reference-information.html#inline-quick-documentation

[Intention actions]: https://www.jetbrains.com/help/idea/intention-actions.html

[Declarations]: https://www.jetbrains.com/help/idea/navigating-through-the-source-code.html#go_to_declaration

[Usages]: https://www.jetbrains.com/help/idea/find-highlight-usages.html

[Inlay hints]: https://www.jetbrains.com/help/idea/inlay-hints.html

[Inspections]: https://www.jetbrains.com/help/idea/code-inspection.html

[Formatting]: https://www.jetbrains.com/help/idea/reformat-and-rearrange-code.html

[Rename refactorings]: https://www.jetbrains.com/help/idea/rename-refactorings.html

[Code fragment surrounding]: https://www.jetbrains.com/help/idea/surrounding-blocks-of-code-with-language-constructs.html

[Navigation bar]: https://www.jetbrains.com/help/idea/guided-tour-around-the-user-interface.html#navigation-bar

[File structure]: https://www.jetbrains.com/help/idea/viewing-structure-of-a-source-file.html
