Modes can now be configured in three places (in reverse order of precedence)
* global config
* project config
* command line
Furthermore, we differentiate base modes from default modes,
where command line parameters override only default modes,
adding more flexibility
Resolves#926
* Introduce SymbolBody representation (compact), from which the
body can be reconstructed, rendering body computation lazy
* Introduce SymbolBodyFactory for the creation of such instances,
ensuring that instances created from the same factory share
the same file content, allowing the in-memory and on-disk caches
to have a significantly smaller memory footprint
* Change type of "body" key in UnifiedSymbolRepresentation to use
SymbolBody instead of str
* Adjust all usages of the "body" key
When the JetBrains plugin service returns HTTP 503 error, the client
now gracefully handles it by setting _plugin_version and _project_root
to None, allowing the port scanning logic to continue trying other ports.
Fixes#962
Move path normalization to the start of request_document_symbols and
request_hover methods. This ensures backslash paths work on Linux/macOS
where backslash is a literal character, not a path separator.
Move the AL name extraction pattern and function into the class as a
static method since they are only used by the language server.
Addresses PR #960 review comment.
Only store the original name in the cache if we have valid position data.
This prevents false cache matches at position (0, 0) when selectionRange
is missing from a symbol.
Addresses PR #960 review comment.
- Override request_hover() to inject cached original names (e.g. 'Table 50000 "TEST Customer"')
into hover responses, preserving object type and ID metadata that the AL LSP doesn't include
- Add _normalize_path() for consistent cache keys across Windows/Unix path formats
- Add comprehensive tests for hover injection and path normalization
AL Language Server returns symbol names with full object format like
'Table 50000 "TEST Customer"', but symbol names should be pure without
metadata - uniformly across all languages.
This follows the same pattern as Java LS which strips type information
from names. Metadata (object type, ID) is available via the hover LSP
method when using include_info=True in find_symbol.
Changes:
- Add extract_al_display_name() to parse AL object names
- Override request_document_symbols() to normalize names at source
- Update tests to expect normalized names
Add support for configuring Pascal Language Server via ls_specific_settings:
- pp: Path to FPC compiler driver (must be fpc.exe, not ppc386.exe)
- fpcdir: Path to FPC source directory
- lazarusdir: Path to Lazarus directory
- fpc_target: Override target OS (FPCTARGET env var)
- fpc_target_cpu: Override target CPU (FPCTARGETCPU env var)
These settings are passed as environment variables to pasls, enabling
CodeTools to properly configure target platform and locate source files.
This fixes hover/navigation issues with complex include directives like
those in mORMot2 project.
- Automatically download pasls from zen010101/pascal-language-server releases
- Check for updates every 24 hours with version comparison
- SHA256 checksum verification for security
- Atomic installation with rollback on failure
- Tarfile path traversal protection
- Handle nested archive directory structure
CI improvements:
- Fix FPC installation for Ubuntu/macOS/Windows
- Add proper FPC verification step that fails on actual errors
Tests:
- 33 unit tests for version comparison, checksum, tarfile safety
- 8 integration tests with actual pasls functionality
* Make the save function update all configuration settings
* Consider all non-existing keys to be a migration, triggering a resave
* Improve handling of settings that do not use the same name in
the configuration file
* Properly group SerenaConfig class members:
- public setting (config file-mapped)
- private setting (renamed to use _ prefix)
- static member
- methods
* Add configuration setting 'jetbrains_plugin_server_adress',
which is centrally propagated (avoiding injection)
* Add 'fixed_tools' to template file (was previously a "hidden" setting)
Relates to #941