feat: add QML language support via Qt's qmlls#1635
Conversation
opcode81
left a comment
There was a problem hiding this comment.
Thanks for your PR!
Please address the changed interface (see comment) and add an entry to the changelog.
874c02d to
2cf62ba
Compare
|
Thanks for the review! Addressed both points:
Also dropped an unrelated already-merged commit ( |
2cf62ba to
7955076
Compare
|
Update: I verified the server against a real Heads-up: |
I am aware of this. However, CI was recently restructured by @MischaPanch and I would leave it up to him to decide whether QML should be tested and, if so, in which part of the matrix. |
Add support for QML (Qt Modeling Language) files using Qt's official qmlls (or qmlls6) language server. - New language server class QmlLanguageServer using the LanguageServerDependencyProviderSinglePath pattern; the provider discovers qmlls6 or qmlls from PATH and inherits the standard ls_path / ls_args / ls_extra_args user overrides - Register QML language with .qml extension in ls_config.py - Add pytest marker and disabled-language check in conftest - Create minimal QML test repository and basic test suite - Update language support documentation and changelog Closes oraios#1381 Co-Authored-By: Claude <noreply@anthropic.com>
7955076 to
9493712
Compare
Issue for this PR
Closes #1381
Type of change
What does this PR do?
Adds QML (Qt Modeling Language) language support to Serena using Qt's official
qmlls(orqmlls6) language server.Implementation details:
QmlLanguageServerclass insrc/solidlsp/language_servers/qml_language_server.pythat discovers theqmlls6orqmllsbinary from PATH (same pattern as Crystal/Crystalline)QMLlanguage inls_config.pywith.qmlfile extensionqmlls6first (Qt 6), then falls back toqmllsUser setup:
Users need to have Qt 6 installed with
qmlls(orqmlls6) available on PATH. Qt ships this binary with the Qt 6 SDK. The language server is a standard LSP implementation, so all standard Serena features (document symbols, go-to-definition, references, etc.) should work.How did you verify your code works?
Language.QMLresolves correctly, file extension matching works, andget_ls_class()returnsQmlLanguageServersrc/main.qml,src/shapes.qml)qmlls/qmlls6is not on PATH (guarded bylanguage_tests_enabled)test_file_system.pytests continue to passChecklist
Screenshots / recordings
N/A