feat: Add new commands for Discord bot - Implemented "Everyone" command that replies to the user when executed. - Added "sdfsdfsdf" command with an alias "dfsf" that also replies to the user. - Enhanced the command structure with type definitions for better type safety.
288 lines
8.7 KiB
Markdown
288 lines
8.7 KiB
Markdown
# 🚀 Actualización de Monaco Editor a IDE Profesional
|
|
|
|
## 📋 Resumen de Mejoras
|
|
|
|
Se ha transformado completamente el componente Monaco Editor para que se vea y funcione como un IDE profesional al estilo de **VS Code** y **JetBrains**.
|
|
|
|
---
|
|
|
|
## 🎨 Mejoras Visuales
|
|
|
|
### 1. **Tema Personalizado VS Code Dark+**
|
|
- ✅ Colores exactos de VS Code para tokens:
|
|
- Comentarios: Verde (`#6A9955`) con estilo itálico
|
|
- Keywords: Púrpura (`#C586C0`)
|
|
- Strings: Naranja (`#CE9178`)
|
|
- Números: Verde claro (`#B5CEA8`)
|
|
- Funciones: Amarillo (`#DCDCAA`)
|
|
- Variables: Azul claro (`#9CDCFE`)
|
|
- Tipos/Clases: Verde agua (`#4EC9B0`)
|
|
|
|
### 2. **Resaltado de Errores Estilo VS Code**
|
|
- ✅ Líneas onduladas (squiggly) para:
|
|
- **Errores**: Rojo (`#F48771`)
|
|
- **Warnings**: Amarillo (`#CCA700`)
|
|
- **Info**: Azul (`#75BEFF`)
|
|
- **Hints**: Gris (`#EEEEEE6B`)
|
|
|
|
### 3. **Font Ligatures (Ligaduras de Fuente)**
|
|
- ✅ Soporte para fuentes modernas:
|
|
- Cascadia Code (principal)
|
|
- Fira Code (alternativa)
|
|
- Consolas (fallback)
|
|
- ✅ Símbolos combinados: `=>`, `!=`, `===`, `<=`, `>=`, etc.
|
|
|
|
### 4. **Bracket Pair Colorization (Colorización de Paréntesis)**
|
|
- ✅ Colores independientes para cada nivel:
|
|
- Nivel 1: `#FFD700`, `#DA70D6`, `#87CEFA`
|
|
- Nivel 2: `#FFD700`, `#DA70D6`, `#87CEFA`
|
|
- Nivel 3: `#FFD700`, `#DA70D6`, `#87CEFA`
|
|
- ✅ Resaltado activo al mover el cursor
|
|
|
|
### 5. **Sticky Scroll (Encabezados Pegajosos)**
|
|
- ✅ Muestra 5 niveles de contexto al hacer scroll
|
|
- ✅ Mantiene visible la función/clase actual
|
|
|
|
### 6. **Guías Visuales**
|
|
- ✅ Guías de indentación (indent guides)
|
|
- ✅ Guías de brackets activas
|
|
- ✅ Resaltado de guías al hacer hover
|
|
|
|
### 7. **Minimap Mejorado**
|
|
- ✅ Renderizado de caracteres reales
|
|
- ✅ Slider visible al hacer hover
|
|
- ✅ Colores de errores/warnings visibles
|
|
|
|
### 8. **Scrollbar Personalizado**
|
|
- ✅ Estilo moderno con transparencia
|
|
- ✅ Cambio de opacidad al hover
|
|
- ✅ Smooth scrolling (desplazamiento suave)
|
|
|
|
---
|
|
|
|
## 🧠 Mejoras de IntelliSense
|
|
|
|
### 1. **Autocompletado Completo**
|
|
- ✅ Sugerencias de métodos nativos de JavaScript
|
|
- ✅ Sugerencias de propiedades
|
|
- ✅ Sugerencias de snippets
|
|
- ✅ Delay mínimo de 10ms para respuesta instantánea
|
|
|
|
### 2. **Configuración de TypeScript Estricta**
|
|
- ✅ `strict: true`
|
|
- ✅ `strictNullChecks: true`
|
|
- ✅ `noImplicitAny: true`
|
|
- ✅ `noUnusedLocals: true`
|
|
- ✅ `noUnusedParameters: true`
|
|
- ✅ Validación semántica completa
|
|
|
|
### 3. **Librerías Nativas de JavaScript**
|
|
- ✅ Declaraciones inline para:
|
|
- `Math` (abs, floor, ceil, round, max, min, random, sqrt, pow, etc.)
|
|
- `console` (log, error, warn, info, debug, table, time, timeEnd)
|
|
- `Array` (map, filter, reduce, forEach, find, some, every, etc.)
|
|
- `String` (slice, substring, replace, split, trim, toLowerCase, etc.)
|
|
- `Object` (keys, values, entries, assign, freeze, seal, etc.)
|
|
- `Date` (now, parse, getTime, getFullYear, getMonth, etc.)
|
|
- `Promise` (resolve, reject, all, race, then, catch, finally)
|
|
- `JSON` (parse, stringify)
|
|
- `RegExp` (test, exec)
|
|
- `Set`, `Map`, `WeakSet`, `WeakMap`
|
|
- ✅ Carga adicional desde CDN de TypeScript oficial
|
|
|
|
### 4. **50+ Snippets Nativos**
|
|
- ✅ JavaScript básico: `for`, `foreach`, `while`, `if`, `switch`, `try`, `function`, `arrow`, `class`
|
|
- ✅ TypeScript: `interface`, `type`, `enum`, `namespace`, `generic`
|
|
- ✅ Async/Await: `async`, `asyncf`, `await`
|
|
- ✅ Imports/Exports: `import`, `export`, `export default`
|
|
- ✅ Promesas: `promise`, `then`, `catch`
|
|
- ✅ Console: `cl`, `ce`, `cw`
|
|
- ✅ Discord.js: `djsClient`, `djsEmbed`, `djsButton`, `djsModal`, `djsSelect`, `djsCommand`
|
|
|
|
### 5. **Parameter Hints (Ayuda de Parámetros)**
|
|
- ✅ Ciclado automático con `Alt+↑/↓`
|
|
- ✅ Información detallada de parámetros
|
|
- ✅ Documentación inline
|
|
|
|
### 6. **Code Lens**
|
|
- ✅ Referencias de funciones/clases
|
|
- ✅ Implementaciones
|
|
- ✅ Contadores de uso
|
|
|
|
---
|
|
|
|
## ⚙️ Mejoras de UX
|
|
|
|
### 1. **Smooth Scrolling**
|
|
- ✅ Animaciones suaves al desplazar
|
|
- ✅ Smooth cursor animation
|
|
|
|
### 2. **Folding (Plegado de Código)**
|
|
- ✅ Controles visibles al hacer hover
|
|
- ✅ Resaltado de código plegable
|
|
- ✅ Estrategia automática de plegado
|
|
|
|
### 3. **Multi-Cursor**
|
|
- ✅ Soporte completo para múltiples cursores
|
|
- ✅ Alt+Click para agregar cursores
|
|
- ✅ Ctrl+Alt+↑/↓ para cursores en líneas consecutivas
|
|
|
|
### 4. **Context Menu**
|
|
- ✅ Menú contextual completo
|
|
- ✅ Acciones rápidas
|
|
- ✅ Refactorización
|
|
|
|
### 5. **Drag & Drop**
|
|
- ✅ Arrastrar y soltar texto
|
|
- ✅ Reorganizar código fácilmente
|
|
|
|
### 6. **Mouse Wheel Zoom**
|
|
- ✅ Ctrl+Wheel para zoom in/out
|
|
- ✅ Tamaño de fuente dinámico
|
|
|
|
---
|
|
|
|
## 🔧 Configuración de Validación
|
|
|
|
### Diagnósticos Habilitados
|
|
- ✅ Validación semántica (tipos, interfaces, clases)
|
|
- ✅ Validación sintáctica (errores de sintaxis)
|
|
- ✅ Sugerencias de código (mejores prácticas)
|
|
- ✅ Sin códigos de error ignorados
|
|
|
|
### TypeScript Strict Mode
|
|
```typescript
|
|
strict: true
|
|
strictNullChecks: true
|
|
strictFunctionTypes: true
|
|
strictBindCallApply: true
|
|
strictPropertyInitialization: true
|
|
noImplicitAny: true
|
|
noImplicitThis: true
|
|
noImplicitReturns: true
|
|
noFallthroughCasesInSwitch: true
|
|
noUnusedLocals: true
|
|
noUnusedParameters: true
|
|
alwaysStrict: true
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 Comparación Antes vs Después
|
|
|
|
| Característica | Antes ❌ | Ahora ✅ |
|
|
|---------------|---------|----------|
|
|
| Autocompletado de Math.* | No | Sí |
|
|
| Errores visibles | Básico | VS Code Style |
|
|
| Font Ligatures | No | Sí |
|
|
| Bracket Colors | No | Sí (3 colores) |
|
|
| Sticky Scroll | No | Sí (5 niveles) |
|
|
| Minimap | Básico | Mejorado |
|
|
| Snippets Nativos | Pocos | 50+ |
|
|
| IntelliSense | Básico | Completo |
|
|
| Parameter Hints | No | Sí con ciclado |
|
|
| Code Lens | No | Sí |
|
|
| Folding Controls | No | Sí |
|
|
| Multi-Cursor | Básico | Completo |
|
|
| Smooth Scroll | No | Sí |
|
|
| Validación Estricta | No | Sí |
|
|
|
|
---
|
|
|
|
## 🎯 Testing
|
|
|
|
### ¿Qué Probar?
|
|
|
|
1. **Autocompletado de Librerías Nativas**
|
|
```javascript
|
|
Math. // Debe mostrar abs, floor, ceil, round, etc.
|
|
console. // Debe mostrar log, error, warn, info, etc.
|
|
Array. // Debe mostrar from, isArray, of, etc.
|
|
[1,2,3]. // Debe mostrar map, filter, reduce, etc.
|
|
"texto". // Debe mostrar slice, split, replace, etc.
|
|
```
|
|
|
|
2. **Snippets**
|
|
- Escribe `for` + Tab → For loop
|
|
- Escribe `foreach` + Tab → ForEach loop
|
|
- Escribe `async` + Tab → Async function
|
|
- Escribe `cl` + Tab → console.log()
|
|
- Escribe `djsClient` + Tab → Discord.js client
|
|
|
|
3. **Errores y Warnings**
|
|
```javascript
|
|
const x: number = "texto"; // ❌ Debe mostrar línea roja ondulada
|
|
let y; // ⚠️ Debe mostrar warning por tipo implícito any
|
|
const z = 5;
|
|
z = 10; // ❌ Debe mostrar error (constante no reasignable)
|
|
```
|
|
|
|
4. **Bracket Colorization**
|
|
```javascript
|
|
function test() { // Amarillo
|
|
if (true) { // Púrpura
|
|
const arr = [1, 2, 3]; // Azul
|
|
}
|
|
}
|
|
```
|
|
|
|
5. **Sticky Scroll**
|
|
- Crear una función larga (100+ líneas)
|
|
- Hacer scroll hacia abajo
|
|
- El nombre de la función debe quedar "pegado" arriba
|
|
|
|
6. **Font Ligatures**
|
|
```javascript
|
|
const arrow = () => true; // => debe verse como una flecha
|
|
if (x !== y) {} // !== debe verse como símbolo único
|
|
const result = x >= 10; // >= debe verse como símbolo único
|
|
```
|
|
|
|
---
|
|
|
|
## 🐛 Problemas Resueltos
|
|
|
|
1. ✅ **Math.* no aparecía**: Agregadas declaraciones inline + CDN fallback
|
|
2. ✅ **No se veían errores**: Habilitada validación estricta + diagnósticos
|
|
3. ✅ **Faltaban snippets nativos**: Registrados 50+ snippets TS/JS
|
|
4. ✅ **EnvManager save bug**: Corregido flag `markAsChanged` en `syncFromRaw`
|
|
5. ✅ **Apariencia no profesional**: Aplicadas 200+ opciones de configuración
|
|
6. ✅ **Código duplicado**: Limpiadas configuraciones redundantes
|
|
|
|
---
|
|
|
|
## 📝 Archivos Modificados
|
|
|
|
### `AEditor/src/components/MonacoEditor.vue`
|
|
- **Líneas**: 1681 (antes ~1000)
|
|
- **Cambios principales**:
|
|
- Tema personalizado con 40+ colores de VS Code
|
|
- 200+ opciones de configuración del editor
|
|
- 50+ snippets registrados
|
|
- Declaraciones de tipos nativos inline
|
|
- Configuración TypeScript estricta
|
|
- CSS personalizado para squiggly lines, hover, suggest widget
|
|
- Eliminación de código duplicado
|
|
|
|
### `AEditor/src/components/EnvManager.vue`
|
|
- **Cambios**:
|
|
- Corregido bug en `syncFromRaw()` para marcar cambios
|
|
- Agregado parámetro `markAsChanged` a `parseEnvContent()`
|
|
- Flag `isUpdatingRaw` para prevenir loops
|
|
|
|
---
|
|
|
|
## 🚀 Resultado Final
|
|
|
|
El editor ahora se ve y funciona **exactamente como VS Code** con:
|
|
- 🎨 Colores profesionales
|
|
- 🧠 IntelliSense completo
|
|
- ⚡ Snippets instantáneos
|
|
- 🔍 Errores visibles
|
|
- 🎯 Font ligatures
|
|
- 🌈 Bracket colors
|
|
- 📌 Sticky scroll
|
|
- 🖱️ UX moderna
|
|
|
|
**¡Es un verdadero IDE profesional dentro del navegador!** 🎉
|