Repl.it code auto-format for C++ and Go
Repl.it is a cloud IDE supporting numerous languages. It lacks one thing though - code auto formatting for some of them. Here's how to fix that.

Search for a command to run...
Repl.it is a cloud IDE supporting numerous languages. It lacks one thing though - code auto formatting for some of them. Here's how to fix that.

No comments yet. Be the first to comment.
Interesting AWS alternative or provider you should not trust? Small startup POV.

How to make windows go dark at night and light in the morning. Monitor brightness and theme automation apps. Theme change with Powershell.

Must-have SEO techniques to rank on google, bing, and drive traffic to your blog. Advantages and pitfalls of cross-posting. Hashnode examples.

Apart from Cloudflare Pages, Netlify, Vercel there are more free services: Firebase Hosting, Gitlab Pages, Github Pages. Which one to choose? This is the question i faced when thinking about this question to decide how (currently in-development) LiFl...

When I'm thinking about where to try out some new language - repl.it comes to my mind first. But for a long time I found it hard to code in the environment without auto-format even for small snippets. It works for Python, JS, but doesn't work for some other languages. However, repl.it allows you to control your virtual machine from the console - and that gives a chance for a fix.
Usually, auto-format is triggered by a shortcut, like Alt-Shift-F, in Replit it is registered but language formatter itself is not installed, so unless they fix this or let us install our own (via command line, etc) we have to use other ways.
After some digging I found 2 ways we can trigger our format commands:
Replit runs on google cloud pre-emptible VM-s. That means your code can change hosts from time to time and whatever you do in console or cloud environment outside your work folder will be gone once host changes.
While all your program output goes into Console tab (you are able to run commands in it though), you still have access to a separate tab Shell
This is where we can test our formatting commands. Default ones:
For Go
gofmt -w .
For C++
clang-format -i *.*
You might stop there and use them in shell when you want some formatting, but they will be erased from shell cache once host changes - in case of complicated commands that might be a problem. The solution - to create a script
shfile and trigger it from console
To watch file changes you can use whatever method/tool you want. When using free accounts better if that tool is simple and installs fast, as you'll need to reinstall it on launch.
For example, you can use when-changed python package just by typing:
pip install when-changed
Then you can setup watching like this (C++ example):
when-changed . clang-format -i *.*
This will make your shell busy, and when host changes you need to re-run this. The solution is to use .replit file (docs):
It requires field on, so you need to watch the commands replit uses when launching your repl and copy inside. After that you can pass onBoot option specifying anything you want to run when repl is booting (host changes)
C++ example:
run="clang++-7 -pthread -std=c++17 -o main main.cpp && ./main"
onBoot="when-changed . clang-format -i *.*"
That's it! code will be formatted as you type. However I found using this a bit annoying as it conflicts with user input, you might use block while you type // clang-format off or try the next method.
Repl run shortcut is Cntrl-Enter. It's pretty convenient to use for formatting.
Downside - your repl will run as well. We have no choice as it's the only configurable hotkey.
In previous section we already saw .replit file in action. Logically, we can put auto-format to work when we are starting a repl as simple as:
run="clang-format \*.\* -i && clang++-7 -pthread -std=c++17 -o main main.cpp && ./main"
You can use any of the methods depending on your use case as none of them is perfect and has its drawbacks. Personally, I prefer the last one Run format before the repl runs.
It can be changed even further to trigger auto-format on single
Cntrl-Enterand fast triggeringCntrl-Entertwice to run the repl. This needs saving a timestamp and checking the time difference. You can do this by creating a complex command to write into the file and read it onrun, for example.
Thanks for reading! My articles are constantly revised and updated, so bookmark if you want to be up-to-date on a topic 🍺