Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>SphereScript (SCP) Syntax Highlight FormatterNew to Visual Studio Code? Get it now.
SphereScript (SCP) Syntax Highlight Formatter

SphereScript (SCP) Syntax Highlight Formatter

ruben-feito

|
187 installs
| (1) | Free
Extension de SphereServer X para Servidor Custom 'Berks Worlds'
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

SphereScript (SCP) Syntax Highlight Formatter

Una extensión completa de Visual Studio Code para el lenguaje SphereScript (.scp), orientada a Sphere X: resaltado de sintaxis, formateo automático, IntelliSense (hover / autocompletado / outline / go-to-definition) y diagnósticos en vivo.

✨ Características

🎨 Resaltado de Sintaxis

Secciones, triggers, propiedades, funciones, flags y keywords del lenguaje, con scopes TextMate granulares por subsistema (cobjbase, cchar, citem, cclient, etc.).

🔧 Formateo Automático

  • Indentación inteligente (IF/ELSE/ENDIF, FOR*/ENDFOR, WHILE/ENDWHILE, BEGIN/END, DORAND/DOSWITCH/ENDDO)
  • Mayúsculas automáticas en keywords (preservando strings, comentarios y secciones [BOOK]/[MENU]/[SCROLL]/[TIP]/[COMMENT])
  • Regex precompiladas y procesamiento de keywords por lotes
  • Configurable: tabSize, indentStyle (tabs/spaces)

🧠 IntelliSense (nuevo en v4)

  • Hover con firma, descripción y ejemplo por símbolo
  • Autocompletado contextual: triggers tras @, secciones tras [, props/funciones/flags genéricos
  • Document Symbols (outline): cada [CHARDEF c_x], [ITEMDEF i_x], [FUNCTION f_x], [EVENTS e_x] con sus ON=@TRIGGER hijos
  • Go to Definition en identificadores f_*, c_*, i_*, t_*, d_*, ... a lo largo del workspace

🔍 Diagnósticos en vivo

  • Bloques IF/FOR/WHILE/BEGIN/DORAND/DOSWITCH desbalanceados
  • END* sin apertura previa
  • Secciones sin clave ([CHARDEF] vs [CHARDEF c_man])
  • Triggers desconocidos (ON=@FOO)

📝 Snippets ampliados

Plantillas chardef, itemdef, function, events, dialog, on, timer, timerf, timerfms, target, tag, var, local, además de los bucles for* y bloques try*/dorand/doswitch previos.

⚙️ Configuración

Todos los ajustes viven bajo el namespace scpFormatter.* y pueden modificarse en Settings (UI) o en settings.json.

Setting Tipo Valor por defecto Rango / valores Descripción
scpFormatter.indentStyle string "tabs" "tabs" | "spaces" Estilo de indentación al formatear.
scpFormatter.tabSize integer 1 1 – 8 Número de tabs/espacios por nivel de indentación. Las opciones del editor (editor.tabSize, editor.insertSpaces) tienen prioridad cuando se invoca el formatter.
scpFormatter.maxLineLength integer 0 0 – 200 Límite de longitud de línea (0 = sin límite). Reservado para futuros warnings.
scpFormatter.diagnostics.enable boolean true true | false Activa el linter en vivo (bloques desbalanceados, END* huérfanos, triggers desconocidos, secciones sin clave…).
scpFormatter.debug boolean true true | false Activa logs de depuración en la consola del Extension Host y un toast informativo al activar la extensión. Pónlo a false si te molesta el ruido.

Además, la extensión declara configurationDefaults para el lenguaje scp, de modo que al instalarla el editor adopta:

"[scp]": {
  "editor.defaultFormatter": "Izoard.spherescript-syntax-highlight-formatter",
  "editor.formatOnSave": true,
  "editor.tabSize": 1,
  "editor.insertSpaces": false
}

Ejemplo de settings.json

Como todos los valores anteriores ya son los defaults declarados por la extensión, lo habitual es no poner nada y dejar que actúen tal cual:

{
	// Vacío — los defaults de la extensión producen el estilo SphereScript clásico:
	// • tabs reales (no espacios)
	// • 1 tab por nivel de indentación
	// • formatOnSave activado para .scp
	// • linter en vivo y debug activos
}

Si solo quieres que los tabs se rendericen más anchos (sin cambiar el formato, que sigue insertando un \t por nivel), añade únicamente:

{
	"[scp]": {
		"editor.tabSize": 4, // ancho visual del tab; el formato sigue siendo 1 tab por nivel
		"editor.formatOnSave": true,
	},
}

Y solo si quieres apartarte de los defaults (p. ej. usar espacios o desactivar el debug toast):

{
	"scpFormatter.indentStyle": "spaces",
	"scpFormatter.tabSize": 4,
	"scpFormatter.debug": false
}

[!NOTE] ¿Por qué no aparece editor.defaultFormatter en los ejemplos? Porque la extensión lo declara en configurationDefaults, así que VS Code lo adopta automáticamente al instalarla. Solo necesitas fijarlo manualmente si:

  • Tenías instalada otra extensión SCP previa y VS Code recuerda su formatter.
  • Quieres dejar la intención explícita en .vscode/settings.json del repo para que el equipo no dependa de los defaults.

En esos casos:

{
  "[scp]": {
  	"editor.defaultFormatter": "Izoard.spherescript-syntax-highlight-formatter",
  },
}

📋 Atajos

Acción Atajo
Formatear documento Shift+Alt+F
Ver Problemas Ctrl+Shift+M

🛠️ Desarrollo

pnpm install
# F5 dentro de VS Code para abrir Extension Host
pnpm test
npx vsce package

📄 Licencia

MIT — ver LICENSE.md.

🤝 Contribuir

  1. Fork el proyecto
  2. Crea tu Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push al Branch (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

📧 Contacto

  • Proyecto: spherescript-syntax-highlight-formatter
  • Issues: Reportar un problema

🔗 Basado en extensiones

Esta extensión ha sido desarrollada para brindar soporte a Berks Worlds en Sphere X. Basada en las extensiones:

  • https://marketplace.visualstudio.com/items?itemName=fabiohvp.scp
  • https://marketplace.visualstudio.com/items?itemName=uoinfusion.sphere99
  • https://marketplace.visualstudio.com/items?itemName=Raylde.sphere-scripter-formatter

¡Disfruta programando en SphereScript! 🎯

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft