Estado: Completamente implementado Descripción: Detecta automáticamente proyectos Swift (SPM, Xcode Projects, Workspaces) Commit: Initial commit
Estado: Completamente implementado
Descripción: Build, run y test de paquetes Swift Package Manager
Comandos: :SwiftBuild, :SwiftRun, :SwiftTest, :SwiftClean
Commit: 4e1bfe5
Estado: Completamente implementado Descripción: Configuración automática de sourcekit-lsp con soporte completo Características:
- Auto-detección de sourcekit-lsp
- Setup automático con nvim-lspconfig
- Completion, diagnostics, hover, go-to-definition
- Code actions, refactoring, rename
- Inlay hints y semantic tokens
- Integración con nvim-cmp Commit: 4098bd0
Prioridad: ALTA Esfuerzo: Medio (2-3 horas) Descripción: Integración con swift-format y swiftformat
Funcionalidades:
- Auto-detección de swift-format/swiftformat
- Format on save configurable
- Format visual selection
- Integración con conform.nvim
- Soporte para archivos de configuración
API propuesta:
features = {
formatter = {
enabled = true,
tool = nil, -- Auto-detect: "swift-format" | "swiftformat"
format_on_save = false,
config_file = nil, -- Auto-detect
},
}Comandos:
:SwiftFormat- Formatear archivo:SwiftFormatSelection- Formatear selección
Prioridad: ALTA Esfuerzo: Medio (2-3 horas) Descripción: Integración con SwiftLint
Funcionalidades:
- Auto-detección de SwiftLint
- Lint on save configurable
- Integración con nvim-lint
- Quick fixes para issues comunes
API propuesta:
features = {
linter = {
enabled = true,
lint_on_save = true,
config_file = nil, -- Auto-detect .swiftlint.yml
},
}Comandos:
:SwiftLint- Ejecutar linter:SwiftLintFix- Auto-fix
Prioridad: ALTA Esfuerzo: Alto (4-5 horas) Descripción: Soporte completo para proyectos Xcode
Funcionalidades:
- Build con xcodebuild
- Selector de schemes (con Telescope/fzf)
- Selector de simuladores
- Run en simulador
- Abrir en Xcode.app
- Ver/limpiar DerivedData
API propuesta:
features = {
xcode = {
enabled = true,
default_scheme = nil, -- Auto-detect
default_simulator = nil, -- Auto-detect or prompt
show_output = true,
},
}Comandos:
:SwiftXcodeBuild- Build:SwiftXcodeRun- Run en simulador:SwiftXcodeSchemes- Selector de schemes:SwiftXcodeSimulators- Selector de simuladores:SwiftXcodeOpen- Abrir en Xcode
Prioridad: MEDIA Esfuerzo: Alto (4-6 horas) Descripción: Mejora de la integración con tests
Funcionalidades:
- Run test bajo cursor
- Run tests en archivo/clase
- Test explorer tree
- Inline test results
- Coverage visualization
- Integración con neotest
Comandos:
:SwiftTestNearest- Test bajo cursor:SwiftTestFile- Tests del archivo:SwiftTestClass- Tests de la clase:SwiftTestLast- Re-run último test
Prioridad: MEDIA Esfuerzo: Medio-Alto (3-4 horas) Descripción: Gestión de dependencias SPM
Funcionalidades:
- Listar dependencias
- Actualizar dependencias
- Agregar dependencias con UI
- Ver versiones disponibles
- Reset cache
Comandos:
:SwiftDependenciesList:SwiftDependenciesUpdate:SwiftDependenciesAdd
Prioridad: MEDIA Esfuerzo: Medio (2-3 horas) Descripción: Navegación mejorada de símbolos
Funcionalidades:
- Lista de símbolos del archivo
- Búsqueda de símbolos en proyecto
- Outline view con Telescope
- Jump to symbol
Comandos:
:SwiftSymbols- Símbolos del archivo:SwiftSymbolsProject- Buscar en proyecto
Prioridad: MEDIA Esfuerzo: Medio (3-4 horas) Descripción: Generación de documentación
Funcionalidades:
- Generar doc comments (///)
- Templates para funciones/clases
- Integración con DocC
- Build y preview de docs
Comandos:
:SwiftDocGenerate- Generar doc comment:SwiftDocBuild- Build DocC docs:SwiftDocPreview- Preview docs
Prioridad: BAJA Esfuerzo: Medio (2-3 horas) Descripción: Swift REPL interactivo en Neovim
Prioridad: BAJA (LSP ya provee mucho) Esfuerzo: Alto (4-6 horas) Descripción: Herramientas adicionales de refactoring
Prioridad: BAJA Esfuerzo: Medio (2-3 horas) Descripción: Snippets Swift para LuaSnip/nvim-cmp
Prioridad: BAJA Esfuerzo: Bajo-Medio (2-3 horas) Descripción: Organizar y limpiar imports
Prioridad: BAJA Esfuerzo: Bajo (1-2 horas) Descripción: Templates para nuevos paquetes
Prioridad: MUY BAJA (muy complejo) Esfuerzo: Muy Alto (10+ horas) Descripción: Preview de SwiftUI en Neovim
- Project Detector
- Build Runner
- LSP Integration
- Code Formatting (2-3 horas)
- Linting Integration (2-3 horas)
- Xcode Integration (4-5 horas)
Tiempo estimado: 8-11 horas total
- Testing Integration Enhanced (4-6 horas)
- Dependencies Manager (3-4 horas)
- Symbol Navigator (2-3 horas)
Tiempo estimado: 9-13 horas total
- Resto de features según necesidad y feedback de usuarios
-
Estructura del archivo:
- Crear
lua/swift/features/nombre_feature.lua - Seguir patrón:
M.setup(opts)para inicialización - Exponer API pública consistente
- Crear
-
Configuración:
- Agregar defaults en
lua/swift/config.lua - Permitir habilitar/deshabilitar feature
- Opciones documentadas en README
- Agregar defaults en
-
Health Check:
- Agregar verificaciones en
lua/swift/health.lua - Verificar dependencias externas
- Mostrar status de la feature
- Agregar verificaciones en
-
Documentación:
- Actualizar README.md con la feature
- Agregar ejemplos de uso
- Documentar comandos y keybindings
-
Comandos:
- Usar convención
:Swift<Feature><Action> - Ejemplo:
:SwiftFormat,:SwiftLint
- Usar convención
-
Integración:
- Cargar en
lua/swift/features/init.lua - Respetar enabled/disabled
- Manejo de errores con pcall
- Cargar en
- Impacto en workflow: Features que mejoran productividad diaria
- Complejidad: Empezar con features de ROI alto
- Dependencias: Features que otras features necesitan
- Feedback de usuarios: Escuchar qué necesitan realmente
Features Implementadas: 3/20 (15%) Features Alta Prioridad: 3/6 (50%) Tiempo invertido: ~6-8 horas Tiempo estimado próxima fase: 8-11 horas
- sourcekit-lsp Documentation
- swift-format
- SwiftLint
- swiftformat
- xcodebuild
- DocC
- neotest
- conform.nvim
- nvim-lint
Este plugin ya tiene una base sólida con las 3 features esenciales:
- Project Detection - Fundamental para todo lo demás
- Build/Run/Test - Workflow básico de desarrollo
- LSP Integration - Code intelligence completa
Las próximas features recomendadas (Formatting, Linting, Xcode) completarían el ecosistema básico de desarrollo Swift en Neovim. El resto son extras que añaden conveniencia pero no son críticas.
La arquitectura modular permite que cada feature sea opcional y no afecte a las demás. Esto es ideal para que los usuarios personalicen su experiencia según sus necesidades.