Tact
All-in-one package for Tact programming language
Details
Installs
- Total 17
- Win 5
- Mac 9
- Linux 3
Dec 21 | Dec 20 | Dec 19 | Dec 18 | Dec 17 | Dec 16 | Dec 15 | Dec 14 | Dec 13 | Dec 12 | Dec 11 | Dec 10 | Dec 9 | Dec 8 | Dec 7 | Dec 6 | Dec 5 | Dec 4 | Dec 3 | Dec 2 | Dec 1 | Nov 30 | Nov 29 | Nov 28 | Nov 27 | Nov 26 | Nov 25 | Nov 24 | Nov 23 | Nov 22 | Nov 21 | Nov 20 | Nov 19 | Nov 18 | Nov 17 | Nov 16 | Nov 15 | Nov 14 | Nov 13 | Nov 12 | Nov 11 | Nov 10 | Nov 9 | Nov 8 | Nov 7 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Mac | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Readme
- Source
- raw.githubusercontent.com
tact-sublime
🚀 Adds syntax highlighting, folding, code snippets and miscellaneous support for the Tact programming language to Sublime Text 3* and onward.
⚡ Tact is a new programming language for TON blockchain that is focused on efficiency and simplicity. It is designed to be easy to learn and use, and to be a good fit for smart contracts, because it is a statically typed language with a simple syntax and a powerful type system.
Features
TL;DR? Jump straight to the installation!
✨ Syntax highlighting
Color schemes on these screenshots: One Light | One Dark
This package features a comprehensive TextMate grammar for Tact, which is used for syntax highlighting here in Sublime Text as well as in Tact docs, Nujan IDE and other places. It's thoroughly tested locally and in GitHub Actions CI, and it also plays well with Shiki syntax highlighter.
✍ Auto-completions and ⌨ Code snippets
Completions for:
- Various constants, global static functions and Structs from the core library. Note, that all of the static functions complete with their expected arguments!
- Literals, such as
true
ornull
- Keywords, such as
return
orwhile
- Built-in types, such as
Bool
ormap<K, V>
- Serialization types, like
uint8
orcoins
- …and more!
Nearly all of the completions have descriptive annotations and/or clickable links to corresponding explanatory pages in documentation. Just press on the “Tact Docs” link at the bottom of the completions window, and it will take you straight to the docs!
Apart from completions, this package also provides a bunch of larger code snippets:
- Control flow related, like snippets for nested if-else-if or try-catch statements
- Import related, like
impdeploy
, which expands to the full import statement for@stdlib/deploy
- Various function declaration helpers, like
natfunction
for native functions orinit2
for initialization functions with two parameters - Constant and variable declaration helpers, named
constant
andvariable
respectively - A special
sendparams
snippet, which expands tosend(SendParameters{…})
with some values filled in for your convenience! - …and more!
Note, that these completions and snippets aren't semantic, in the sense that they're not aware of code contexts (being inside of a function body or declaring a Struct, for example). To enable semantic completions, see the language server setup.
✔ Syntax checks
In any Tact project with node_modules
involved, you can:
- Open the command palette (Ctrl/Cmd+Shift+P)
- Select Build With: Tact,
which will run syntax and type checking on the currently edited .tact
file.
🗒 Symbol lists
Use Ctrl/Cmd+r for opening and searching symbol lists in the current file.
👉 Indentation
Mostly accurate indentation support. Note, that this package doesn't come with a fully-fledged formatter, but it tries its utmost to deliver a pleasant editing experience nonetheless.
{...}
Folding
Freely collapse and expand chunks of your code in-between braces {}
or parentheses ()
.
💭 Comments
Use Ctrl/Cmd+/ for a single-line comment toggle and Ctrl/Cmd+Shift+/ for multi-line comment toggle.
Installation
Through Package Control (Recommended)
This package is available on Package Control. To install it:
- Open the command palette (Ctrl/Cmd+Shift+P)
- Select Package Control: Install Package
- Select Tact
Manual installation
- Open the command palette (Ctrl/Cmd+Shift+P)
- Select Preferences: Browse Packages, this should open the “Packages” directory in your file explorer
- Clone this repo into that directory
Don't forget to run git pull from time to time to get the latest updates of this package.
LSP integration
When the language server supports it, LSP package enables improved autocomplete, go-to-definition, formatting, “hover docs”, compiler errors and warnings, general diagnostics and more.
To set it up, install the package and open its settings (Preferences: LSP Settings in the command palette), then add this config:
{
"clients": {
"Tact": {
"enabled": true,
"command": ["tact-extracted-ls", "--stdio"],
"selector": "source.tact"
}
}
}
Additionally, you can disable all snippets and suggestions provided by this (and other) packages and leave everything to LSPs. To do so, set "inhibit_snippet_competions"
to true
right after "clients"
in the same settings (Preferences: LSP Settings in the command palette):
{
"clients": { /*...*/ },
"inhibit_snippet_completions": true
}
Configurations above assume you have installed the Tact language server extracted from the tact-vscode. If not, run npm i -g tact-extracted-ls
to install it.
To setup keyboard shortcuts for the language server, see: Key Bindings.
Compatibility
This package's syntax highlighting capabilities target Sublime Text 3+, while the rest of the features try to target the latest Sublime Text 4+. Bugs related to those features failing on any version lower that 4 won't be focused on.
Useful Tact links
- Official Website
- Tact Documentation
- Discussion Group in Telegram
- X/Twitter
Credits
Based on The Open Network.
Built with 🤍 by Novus Nota.
Contributing
When working on the grammar, do it in the JSON file. Then, convert it to Plist (XML) format using the following VSCode extension: tmLanguage.
Note, that color schemes greatly affect how the grammar looks like, and stick to commonly used capture names over trying to nail semantics with more specific ones.
License
MIT © Novus Nota.