Sharpen (.csx)
Syntax highlighting and go-to-definition for .csx files - the C#-flavored source
language compiled by Sharpen
into real, plain TypeScript/React (.tsx/.ts).
What it highlights
- Comments (
// only - .csx doesn't support block comments)
- Attributes (
[State], [Component], [Store], etc.)
- Directives (
@if, @else, @foreach)
- Keywords, modifiers, and primitive types
- Strings, including interpolated (
$"...") strings with expression holes
- JSX markup inside
Render()
Go to definition
Jump (F12 / ctrl-click, or right-click → Go to Definition) from a reference to
where it's actually declared:
- A JSX component tag (
<CategoryList />) to the file that declares it
- A store/context/hook/record/enum name, wherever it's referenced across files
- A
nameof(...) reference - clicking either half jumps to the right place, e.g.
in nameof(RestaurantStore.LoadCategories), clicking RestaurantStore goes to
the store's own file, and clicking LoadCategories goes straight to that
specific method on it, not just any same-named member elsewhere
- A method/field/plain class referenced within the same file
Works across your whole open workspace - folder structure doesn't matter, the
same way it doesn't for the compiler's own cross-file resolution.
Learn more
Full language reference: mail4hafij.github.io/sharpen/sharpen.html
Install the compiler itself:
npm install -g @mail4hafij/sharpen
Publishing (maintainer only)
One-time: generate a Personal Access Token from Azure DevOps (your org → User
settings → Personal access tokens → organization: "All accessible
organizations" → scope: Marketplace: Manage).
cd vscode-extension
node prepare.js
npx @vscode/vsce login mail4hafij
npx @vscode/vsce package --allow-missing-repository
npx @vscode/vsce publish --allow-missing-repository
For any update, bump "version" in package.json first - the Marketplace
won't accept the same version twice. After publishing, the new version shows
as "Verifying" for a few minutes before it's actually live/searchable - normal,
not an error.