Multiline comments (/* */) and strings (""", `, etc.) were not
highlighted across multiple lines. This made reading C, JavaScript,
Python, and other languages difficult.
Also replaced stub panel renderers with real implementations so
document symbols and workspace symbols are now fully functional.
Implements a comprehensive language server management system inspired by
Neovim's Mason, providing users an easy way to discover and install LSP
servers directly from the editor.
Features:
- First-run experience: LSP Server Manager automatically appears on first launch
- Alt+M keybinding: Toggle the manager panel anytime
- 20 language servers supported including Python, C/C++, Rust, Go, JavaScript/TypeScript, Lua, Ruby, Java, and more
- Installation with confirmation: Select a server, press Enter to see install command, Y to confirm
- Server status detection: Uses 'which' to detect installed servers
- Navigation: j/k or arrows to navigate, r to refresh, Esc/q to close
- State persistence: First-run state stored in ~/.config/fac/state.json
New modules:
- src/workspace/app_state_module.f90: First-run detection and state persistence
- src/lsp/server_detection_module.f90: Detect installed language servers
- src/lsp/server_installer_module.f90: Execute installation commands
- src/ui/lsp_server_installer_panel_module.f90: Modal UI panel
Additional fixes:
- Fixed modal panel border alignment (Command Palette & LSP Server Manager)
- Removed circular dependency in unified_search_module
- Updated Makefile with new modules in correct dependency order
- Fix Alt+. code actions for all tabs by sending LSP didOpen notification
when tabs are created via file tree, jump-to-definition, or workspace restore
- Fix Enter key double-processing on offcanvas panels (code actions, references,
symbols) - Enter was both executing action AND inserting newline in editor
- Fix Fortran syntax highlighting when switching between file types by auto-
updating the syntax highlighter when editor filename changes
- Enable CAP_CODE_ACTIONS for Fortran (fortls)
- Remove extensive debug logging from command_handler_module.f90 (550+ lines)
- Multiple LSP servers per file type (Pyright + Ruff for Python)
- Capability-based request routing (rename→Pyright, code actions→Ruff)
- Diagnostics track source server; code actions only see own diagnostics