tact-lang / tact.vim Goto Github PK
View Code? Open in Web Editor NEW⚡ All-in-one Vim 8+ plugin for Tact programming language
Home Page: https://tact-lang.org
⚡ All-in-one Vim 8+ plugin for Tact programming language
Home Page: https://tact-lang.org
And sourcing it from the "legacy" vim script, see: https://vimhelp.org/usr_52.txt.html#52.5
makeprg
to match builds with and without Blueprinterrormsg
to match error messages coming from those builds.Additionally, consider using @tact-lang/compiler
or its CLI for:
Moreover, try introducing an auto-generation or basic help with tact.config.json
. Suggest using JSON Schema.
Only search for =
, but not until ;
to prevent mishandling where the expression in the right side of the let
statement spans multiple lines.
Additionally and in the future, consider updating all regexes to use \m
by default, such that it can't be overriden in user settings:
The idea is to quickly iterate on the new LL+Pratt parser in this plugin not to disturb the main compiler's workflow. It may come without handling comments or very nice error messages, but it will be robust and capable of doing a lot already. And it would be easier to maintain compared to the RegExp one.
Futhermore, it's main aim is to provide a sufficient groundwork to implementing a production-grade one for the Tact compiler and the language server. Until then and beyond that, we'll continue to hone the compiler APIs as they are, of course.
Addtionally, it's worth mentioning that it's already possible to use the extracted language server alongside this plugin and that'll still be possible in the future even when the new parser arrives there as well.
P.S.: Easier to start with moving the symbol indexing out of the auto-completion. And using some standard, like LSIF or SCIP (yay!) — https://github.com/sourcegraph/scip. Also, debounce and do updates of that index in the background.
For users to be able to specify dev/nightly/main for the latest updates and stable/release (or a particular Tact version tag). Then, update all the plugin configurations in the README.md and in docs, when they arrive in #7.
Otherwise, everyone's going to get the dev Tact syntax, which is ahead of the released ones, because I plan on keeping all the editor integrations of my creation (this one, soon-to-be-made Sublime Text package, and possibly others) and tree-sitter-tact in sync with the main branch of Tact compiler.
UPD: Consider adding a message on start-up if the flag let g:tact_prefer_legacy
is not set — "Tact.vim was drastically updated and integrated with an LSP. Please, refer to instructions in README.md on https://github.com/tact-lang/tact.vim"
In general, this would include wrapping ton-org/sandbox with some auto-generated tests and providing a nice set of in-editor panels and/or commands to quickly run and check values.
Depends on:
See:
Note, that this may require having a DOCS.md for documentation and README.md for presentation (and fancy gifs, #16)
A basic test would be to install everything, including Tact and tact.vim and run some command(s) on a sample contract to make sure we have reproducible installation instructions for Linux/Windows/macOS.
And maybe some other tests for plugin functionality would be be great to have.
Depends on #7.
See how they did it:
This can also try to use tact doc
(once it arrives) to add additional documentation for existing things or tact language-server
for hover window (integrate with vim-lsp plugin).
Which sometimes causes seemingly unrelated bugs, where contract functions are misrecognized as global functions. And this is causes issues in autocompletion.
Related issue:
It would be nice for the docs to be self-contained
It's a big overwhelming to read even when you know all the ins and outs.
Omnicompletion seemingly fails (E486: Pattern not found
) without showing my error messages ('Prohibited get modifier for the native function on line X'
and such).
Debug this fully and make custom error messages show at all times and not only when running echo tact#Complete(0,0)
!
See:
Related issues:
This may help with inference, and thus would remove most of the dirty regex work.
UPD: It should be really done in LSP, then re-used here alongside with the current options (which may then be called "legacy")
Hi there,
Would you please update README and show instruction for setup it up in Nvim,
specifically by modern package manager like Lazyvim.
Thank you in advance.
Related issues:
Related issues:
Or with a pop-up window, see:
highlighting quickfix errors inline and adding signs:
In order to make completion comprehensive and users more aware of standard library capabilities.
Depends on tact-lang/tact-docs#75
See: https://github.com/tact-lang/tact/blob/main/CHANGELOG.md
Upstream checklist: tact-lang/tact#280
To do:
@stdlib/ownable
when @stdlib/stoppable
is importedlog
and log2
, concat
method on StringBuilder, toString
method/extension function for Address
type, isEmpty
and del
extension functions for maps),pow2
power function with base 2try
and try-catch
statements^
@stdlib/reserve
): ReserveExact
, ReserveAllExcept
, ReserveAtMost
, ReserveAddOriginalBalance
, ReserveInvertSign
, ReserveBounceIfActionFail
.dumpStack()
functionA declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.