Skip to content

Extensión VS Code: Reconocimiento de Enlaces de Protocolo iPlay

Una extensión de VS Code que reconoce y maneja automáticamente enlaces de protocolo personalizado (iplay:// y iplays://) en tus archivos, facilitando el trabajo con enlaces de medios iPlay directamente en tu editor.

iPlay VSCode拓展

🎯 Características Principales

  • 🔗 Detección Automática de Enlaces: Reconoce instantáneamente enlaces de protocolo iplay:// e iplays:// en tus archivos
  • 👁️ Retroalimentación Visual: Los enlaces aparecen subrayados con información útil al pasar el cursor
  • 🖱️ Haz Clic para Abrir: Usa Cmd+Click (macOS) o Ctrl+Click (Windows/Linux) para abrir enlaces con el gestor de protocolo predeterminado del sistema
  • ⚙️ Configurable: Personaliza qué tipos de archivos soportan el reconocimiento de enlaces
  • 🚀 Rendimiento: Ligera y rápida, sin impacto en el rendimiento del editor

📦 Instalación

  1. Abre VS Code
  2. Ve a Extensiones (Cmd+Shift+X en macOS, Ctrl+Shift+X en Windows/Linux)
  3. Busca "iPlay"
  4. Haz clic en Instalar

📝 Tipos de Archivo Soportados

La extensión funciona por defecto con:

  • JSON (.json) - Perfecto para archivos de configuración y datos
  • JSONL (.jsonl) - Archivos JSON delimitados por líneas
  • Markdown (.md) - Documentación y notas
  • Texto Plano (.txt) - Cualquier archivo de texto

💡 Ejemplos de Uso

Enlaces Simples

markdown
iplay://example.com/video
iplays://secure.example.com/media

Enlaces en Contexto

markdown
Mira este video: iplay://example.com/awesome-video

"Reproducir esto: iplay://example.com/tutorial"

(Consulta iplay://example.com/demo para más detalles)

Enlaces con Parámetros de Consulta

markdown
iplay://example.com/video?id=123&quality=hd
iplays://example.com/playlist?name=favorites&autoplay=true

En Archivos JSON

json
{
  "videos": [
    "iplay://example.com/intro",
    "iplay://example.com/tutorial",
    "iplays://secure.example.com/premium"
  ],
  "playlist": "iplay://example.com/playlist/daily"
}

Múltiples Enlaces

markdown
Compara iplay://example.com/video1 con iplay://example.com/video2

⚙️ Configuración

Personalizar Tipos de Archivo

Puedes personalizar qué tipos de archivo soportan el reconocimiento de enlaces agregando esto a tu settings.json:

json
{
  "iplay.fileExtensions": [
    "json",
    "jsonl",
    "markdown",
    "plaintext",
    "javascript",
    "typescript",
    "python"
  ]
}

Identificadores de Lenguaje Comunes

  • javascript - Archivos JavaScript
  • typescript - Archivos TypeScript
  • python - Archivos Python
  • yaml - Archivos YAML
  • xml - Archivos XML
  • html - Archivos HTML
  • css - Archivos CSS

Nota: Los cambios de configuración se aplican inmediatamente sin necesidad de reiniciar.

🔧 Solución de Problemas

Los enlaces no se detectan

Problema: Los enlaces de protocolo personalizado no aparecen como enlaces en tu archivo.

Soluciones:

  1. Verifica el tipo de archivo: Asegúrate de que el tipo de archivo está en tu lista de extensiones configuradas

    • Abre la Paleta de Comandos (Cmd+Shift+P / Ctrl+Shift+P)
    • Escribe "Change Language Mode" para ver el identificador de lenguaje actual
    • Agrega este identificador a iplay.fileExtensions en la configuración
  2. Verifica el formato del enlace: Asegúrate de que tus enlaces comienzan con iplay:// o iplays://

    • ✅ Correcto: iplay://example.com/video
    • ❌ Incorrecto: iplay:/example.com/video (falta una barra)
    • ❌ Incorrecto: iPlay://example.com/video (mayúsculas incorrectas)
  3. Comprueba los delimitadores: Los enlaces se detectan hasta encontrar espacios en blanco o delimitadores comunes

    • Delimitadores que terminan la detección: espacio, ", ', <, >, ), }, ]
    • Si tu enlace contiene estos caracteres, pueden ser excluidos
  4. Recarga la ventana: Intenta recargar VS Code

    • Abre la Paleta de Comandos (Cmd+Shift+P / Ctrl+Shift+P)
    • Escribe "Developer: Reload Window"

Los enlaces no se abren al hacer clic

Problema: Al hacer clic en un enlace no se abre.

Soluciones:

  1. Usa la tecla modificadora correcta:

    • macOS: Mantén Cmd mientras haces clic
    • Windows/Linux: Mantén Ctrl mientras haces clic
  2. Verifica el controlador de protocolo del sistema: Asegúrate de que tu sistema tiene un controlador registrado para el protocolo iplay://

    • La extensión pasa el enlace a tu sistema operativo
    • Necesitas tener una aplicación instalada que maneje URLs iplay://
  3. Prueba con un enlace diferente: Prueba con un enlace simple como iplay://example.com/test para descartar problemas específicos de URL

Los cambios de configuración no surten efecto

Problema: Después de cambiar la configuración, la extensión sigue utilizando la anterior.

Soluciones:

  1. Espera un momento: Los cambios de configuración deberían aplicarse automáticamente en unos segundos
  2. Comprueba la sintaxis JSON: Asegúrate de que tu settings.json tiene sintaxis JSON válida
  3. Recarga la ventana: Como último recurso, recarga VS Code
    • Abre la Paleta de Comandos (Cmd+Shift+P / Ctrl+Shift+P)
    • Escribe "Developer: Reload Window"

La extensión no está activa

Problema: La extensión no parece estar ejecutándose.

Soluciones:

  1. Verifica que la extensión esté instalada y habilitada:

    • Ve a la vista de Extensiones (Cmd+Shift+X / Ctrl+Shift+X)
    • Busca "iPlay"
    • Asegúrate de que esté instalada y habilitada
  2. Abre un tipo de archivo soportado: La extensión se activa cuando abres un archivo soportado

    • Intenta abrir un archivo .json, .md o .txt
  3. Comprueba el panel Output:

    • Abre el panel Output (Cmd+Shift+U / Ctrl+Shift+U)
    • Selecciona "Custom Protocol Link Recognition" del desplegable
    • Busca mensajes de activación o errores

Problemas de rendimiento

Problema: VS Code se siente lento después de instalar la extensión.

Soluciones:

  1. Reduce los tipos de archivo soportados: Si has agregado muchos tipos de archivo, intenta reducir la lista solo a los que necesitas
  2. Busca conflictos: Deshabilita otras extensiones temporalmente para ver si hay un conflicto
  3. Reporta el problema: Si los problemas de rendimiento persisten, reportalos en el repositorio de GitHub

🔒 Privacidad y Seguridad

  • Sin recopilación de datos: Esta extensión no recopila ni transmite datos
  • Procesamiento local: Toda la detección de enlaces ocurre localmente en tu editor
  • Sin solicitudes de red: La extensión no realiza ninguna llamada de red
  • Integración del sistema: Los enlaces se abren usando el controlador de protocolo predeterminado de tu sistema

📖 Detalles Técnicos

Cómo Funciona

La extensión utiliza la API DocumentLinkProvider de VS Code para:

  1. Analizar el texto del documento en busca de enlaces de protocolo personalizado usando coincidencia de expresiones regulares
  2. Crear objetos DocumentLink interactivos con URIs de comandos
  3. Registrar un comando que utiliza vscode.env.openExternal() para abrir enlaces con el controlador de protocolo predeterminado del sistema
  4. Proporcionar información sobre herramientas al pasar el cursor y manejar eventos de clic
  5. Actualizar automáticamente cuando cambian los documentos o la configuración

Este enfoque garantiza que los enlaces de protocolo personalizado se abran por el sistema (activando la aplicación iPlay) en lugar de ser manejados internamente por VS Code.

Patrón de Detección de Enlaces

La extensión utiliza el siguiente patrón de expresión regular para detectar enlaces:

regex
/i(?:play|plays):\/\/[^\s"'<>)}\]]+/g

Este patrón coincide con:

  • Protocolo iplay:// o iplays://
  • Seguido de cualquier carácter excepto espacios en blanco y delimitadores comunes
  • Se detiene en: espacio, ", ', <, >, ), }, ]

🤝 Desarrollo

Esta extensión está construida con TypeScript y utiliza la API DocumentLinkProvider de VS Code.

Compilar desde Fuente

bash
# Clona el repositorio
git clone <url-del-repositorio>
cd custom-protocol-link-recognition

# Instala las dependencias
npm install

# Compila TypeScript
npm run compile

# Ejecuta las pruebas
npm test

Estructura del Proyecto

├── src/
│   ├── extension.ts          # Lógica principal de la extensión y proveedor de enlaces
│   ├── configuration.ts      # Gestión de configuración
│   └── test/                 # Suite de pruebas
├── package.json              # Manifiesto de la extensión
└── README.md                 # Este archivo

🤝 Contribuciones

¡Las contribuciones son bienvenidas! Siéntete libre de enviar problemas o solicitudes de extracción.

📄 Licencia

Consulta el archivo LICENSE en el repositorio para más detalles.

💬 Soporte

Si encuentras algún problema o tienes preguntas:

  1. Consulta la sección Solución de Problemas arriba
  2. Busca problemas existentes en GitHub
  3. Crea un nuevo problema con detalles sobre tu problema

¡Disfruta usando enlaces iPlay en VS Code! 🎉