103 lines
5.3 KiB
XML
103 lines
5.3 KiB
XML
<!--
|
|
~ Copyright 2025 Sergey S. Chernov real.sergeych@gmail.com
|
|
~
|
|
~ Licensed under the Apache License, Version 2.0 (the "License");
|
|
~ you may not use this file except in compliance with the License.
|
|
~ You may obtain a copy of the License at
|
|
~
|
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
|
~
|
|
~ Unless required by applicable law or agreed to in writing, software
|
|
~ distributed under the License is distributed on an "AS IS" BASIS,
|
|
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
~ See the License for the specific language governing permissions and
|
|
~ limitations under the License.
|
|
~
|
|
-->
|
|
|
|
<idea-plugin>
|
|
<!-- Open-ended compatibility: 2024.3+ (build 243 and newer) -->
|
|
<idea-version since-build="243"/>
|
|
<id>net.sergeych.lyng.idea</id>
|
|
<name>Lyng Language Support</name>
|
|
<vendor email="real.sergeych@gmail.com">Sergey Chernov</vendor>
|
|
|
|
<description>
|
|
<![CDATA[
|
|
Basic Lyng language support: file type, syntax highlighting,
|
|
editing assistance (on Enter indent), reformatting code (indents and spaces),
|
|
and quick docs.
|
|
]]>
|
|
</description>
|
|
|
|
<depends>com.intellij.modules.platform</depends>
|
|
<!-- Needed for editor language features (syntax highlighting, etc.) -->
|
|
<depends>com.intellij.modules.lang</depends>
|
|
<!-- Spellchecker support (optional). If present, load spellchecker.xml which registers our strategy. -->
|
|
<depends optional="true" config-file="spellchecker.xml">com.intellij.spellchecker</depends>
|
|
<!-- Grazie (Lite/Pro) grammar checker support (optional). If present, load grazie-lite.xml -->
|
|
<depends optional="true" config-file="grazie-lite.xml">tanvd.grazi</depends>
|
|
<!-- Some IDE builds may expose Grazie/Natural Languages under another ID; load grazie-bundled.xml -->
|
|
<depends optional="true" config-file="grazie-bundled.xml">com.intellij.grazie</depends>
|
|
|
|
<extensions defaultExtensionNs="com.intellij">
|
|
<!-- Language and file type -->
|
|
<fileType implementationClass="net.sergeych.lyng.idea.LyngFileType" name="Lyng" extensions="lyng" fieldName="INSTANCE" language="Lyng"/>
|
|
|
|
<!-- Minimal parser/PSI to fully wire editor services for the language -->
|
|
<lang.parserDefinition language="Lyng" implementationClass="net.sergeych.lyng.idea.psi.LyngParserDefinition"/>
|
|
|
|
<!-- Syntax highlighter: register under language EP -->
|
|
<lang.syntaxHighlighterFactory language="Lyng" implementationClass="net.sergeych.lyng.idea.highlight.LyngSyntaxHighlighterFactory"/>
|
|
|
|
<!-- Color settings page -->
|
|
<colorSettingsPage implementation="net.sergeych.lyng.idea.highlight.LyngColorSettingsPage"/>
|
|
|
|
<!-- External annotator for semantic highlighting -->
|
|
<externalAnnotator language="Lyng" implementationClass="net.sergeych.lyng.idea.annotators.LyngExternalAnnotator"/>
|
|
|
|
<!-- Grazie-backed spell/grammar annotator (runs only when Grazie is installed) -->
|
|
<externalAnnotator language="Lyng" implementationClass="net.sergeych.lyng.idea.grazie.LyngGrazieAnnotator"/>
|
|
|
|
<!-- Quick documentation provider bound to Lyng language -->
|
|
<lang.documentationProvider language="Lyng" implementationClass="net.sergeych.lyng.idea.docs.LyngDocumentationProvider"/>
|
|
|
|
<!-- Basic code completion (MVP) -->
|
|
<completion.contributor language="Lyng" implementationClass="net.sergeych.lyng.idea.completion.LyngCompletionContributor"/>
|
|
|
|
<!-- Comment toggling support -->
|
|
<lang.commenter language="Lyng" implementationClass="net.sergeych.lyng.idea.comment.LyngCommenter"/>
|
|
|
|
<!-- Indentation provider to improve auto-indent and reformat behavior -->
|
|
<lineIndentProvider implementation="net.sergeych.lyng.idea.format.LyngLineIndentProvider"/>
|
|
|
|
<!-- Formatting model so Reformat Code (Ctrl+Alt+L) applies indentation across the file -->
|
|
<lang.formatter language="Lyng" implementationClass="net.sergeych.lyng.idea.format.LyngFormattingModelBuilder"/>
|
|
|
|
<!-- Ensure idempotent line indentation before formatting using our LineIndentProvider -->
|
|
<preFormatProcessor implementation="net.sergeych.lyng.idea.format.LyngPreFormatProcessor"/>
|
|
|
|
<!-- Settings UI -->
|
|
<projectConfigurable instance="net.sergeych.lyng.idea.settings.LyngFormatterSettingsConfigurable"
|
|
displayName="Lyng Formatter"/>
|
|
|
|
<!-- Smart Enter handler -->
|
|
<enterHandlerDelegate implementation="net.sergeych.lyng.idea.editor.LyngEnterHandler"/>
|
|
|
|
<!-- Trigger reindent of enclosed block when typing a standalone '}' -->
|
|
<typedHandler implementation="net.sergeych.lyng.idea.editor.LyngTypedHandler"/>
|
|
|
|
<!-- Smart Backspace handler (deferred) -->
|
|
<!-- <backspaceHandlerDelegate implementation="net.sergeych.lyng.idea.editor.LyngBackspaceHandler"/> -->
|
|
|
|
<!-- Smart Paste via action handler (ensure our handler participates first) -->
|
|
<editorActionHandler action="EditorPaste" order="first" implementationClass="net.sergeych.lyng.idea.editor.LyngPasteHandler"/>
|
|
|
|
<!-- If targeting SDKs with stable RawText API, the EP below can be enabled instead: -->
|
|
<!-- <copyPastePreProcessor implementation="net.sergeych.lyng.idea.editor.LyngCopyPastePreProcessor"/> -->
|
|
|
|
</extensions>
|
|
|
|
<actions/>
|
|
</idea-plugin>
|