Lucid Programming
Lucid Programming

Write C# without the braces

ICS — Indentation-based C# Syntax — is a brace-free view of your code for Visual Studio Code. Indentation carries the structure that braces used to. The files on disk stay ordinary C#.

Install for VS Code See how it works

Requires Visual Studio Code 1.100 or later and the .NET 10 runtime.

The same file, two views

Your C# is still C#

ICS is a projection, not a format. Open a .cs file as ICS, edit it, apply it back. Nothing new is written to disk — no sidecar files, no embedded metadata.

InvoiceService.cson disk — 24 lines
namespace Billing;

public class InvoiceService
{
    private readonly IClock clock;

    public decimal Total(IEnumerable<Line> lines)
    {
        decimal total = 0m;
        foreach (var line in lines)
        {
            if (line.Taxable)
            {
                total += line.Amount * 1.2m;
            }
            else
            {
                total += line.Amount;
            }
        }

        return total;
    }
}
InvoiceService.icswhat you edit — 14 lines
namespace Billing

public class InvoiceService
    private readonly IClock clock

    public decimal Total(IEnumerable<Line> lines)
        decimal total = 0m
        foreach (var line in lines)
            if (line.Taxable)
                total += line.Amount * 1.2m
            else
                total += line.Amount

        return total

Ten lines disappear, and every one of them was a brace. Optional punctuation goes with them. Stripping parentheses from conditions and collapsing property accessors are separate settings, off by default.

Built to be trusted with your source

It refuses to lose your code

Round-trips exactly

An unchanged preview returns the original C# precisely. No metadata is embedded in ICS and no sidecar files are written.

Rejects lossy edits

Rather than applying a conversion that would drop meaningful code or comments, the extension refuses the edit and tells you why.

Notices outside changes

Saves detect edits made elsewhere, and converter recovery preserves unsaved buffers instead of discarding them.

Your language features still work

Hover, go to definition, find references, completion, semantic highlighting, and code lenses operate on the ICS view.

Problems panel integration

ICS parse errors and Roslyn diagnostics from the generated C# appear where you already look for them.

Format on your terms

The standard Format Document shortcut canonicalizes ICS through the converter, so shared files stay consistent.

Pricing

Free to use. Pro when ICS becomes how you work.

Everything needed to read, edit, and convert C# through ICS is free. Pro removes the remaining seams for people who want ICS to be the editor, not a preview.

Free

For trying ICS, and for using it file by file.

  • Open any C# file as an editable ICS view
  • Apply your ICS edits back to the C# file
  • Sync .ics files to C#, on demand or on save
  • Export a standalone .ics file
  • Format and canonicalize ICS documents
  • Diagnostics in the Problems panel
  • Every conversion option, including brace and parenthesis removal

ICS Pro

For working in ICS all day, on every file.

  • ICS-only mode — C# editors are replaced entirely by ICS views
  • Live update — edits flow back to the C# file as you type
  • Auto-save — paired C# is written after each successful update
  • Per-machine licence you can release and move

Privacy

Your source never leaves your machine

The ICS converter contains no networking code at all. Not a policy — a property of the build. Conversion, parsing, and diagnostics happen entirely on your computer.

The extension makes network requests to exactly one destination, api.lemonsqueezy.com, and only to activate, validate, or release an ICS Pro licence. No source code, file names, or paths are transmitted, ever. There is no analytics or usage telemetry.

Error reports are never sent automatically. When something fails, the diagnostic opens in a local editor for you to read and edit. It is never placed in a URL. Only if you choose to copy it and open the issue form does anything leave your machine.

You can verify all of this: watch the traffic, or decompile the converter and look for the network stack that isn't there.