blob: bb094298f64861e459b3369f43e5ffe7935b649d [file] [log] [blame]
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT idea-plugin (name | id? | description | version | vendor | change-notes? | idea-version | category | resource-bundle | depends* | extensions* | application-components? | project-components? | module-components? | actions? | helpset)+>
<!ATTLIST idea-plugin
url CDATA #IMPLIED
version CDATA #IMPLIED>
<!--
<name> is a unique Plugin identifier
-->
<!ELEMENT name (#PCDATA)>
<!--
<id> is a unique Plugin identifier, if not specified, id is considered equal to "name"
-->
<!ELEMENT id (#PCDATA)>
<!--
<description> is a short description of plugin and it functionality
-->
<!ELEMENT description (#PCDATA)>
<!--
<version> specified current plugin version.
-->
<!ELEMENT version (#PCDATA)>
<!--
<vendor> tag now could have 'url', 'email' and 'logo' attributes;
'logo' should contain path to a 16 x 16 icon that will appear near the plugin name in the IDEA Welcome Screen
-->
<!ELEMENT vendor (#PCDATA)>
<!ATTLIST vendor
url CDATA #IMPLIED
email CDATA #IMPLIED
logo CDATA #IMPLIED>
<!--
Plugin category (displayed in plugin manager) e.g. inspection, Misc, Fun Stuff, etc
-->
<!ELEMENT category (#PCDATA)>
<!--
Fully qualified name of bundle used by this plugin e.g. com.mycompany.MyBundle
-->
<!ELEMENT resource-bundle (#PCDATA)>
<!--
Possible extensions element
-->
<!ELEMENT errorHandler (#PCDATA)>
<!ATTLIST errorHandler implementation CDATA #REQUIRED>
<!--
Possible extensions element
-->
<!ELEMENT indexPatternProvider (#PCDATA)>
<!ATTLIST indexPatternProvider implementation CDATA #REQUIRED>
<!--
<idea-version> tag specified version of IDEA which
plugin could work with
-->
<!ELEMENT idea-version EMPTY>
<!-- min / max attributes are left for compatibility -->
<!ATTLIST idea-version
since-build CDATA #REQUIRED
until-build CDATA #IMPLIED
min CDATA #IMPLIED
max CDATA #IMPLIED
>
<!-- change notes of current version -->
<!ELEMENT change-notes (#PCDATA)>
<!ELEMENT depends (#PCDATA)>
<!ATTLIST depends
optional (true | false) #IMPLIED
config-file CDATA #IMPLIED
>
<!-- extensions. Most relaxed constraints since content of the particular extension cannot be expressed with DTD
defaultExtensionNs - namespace prepended to referenced extension name to get qname,
xmlns same as previous, left for compatibility
-->
<!ELEMENT extensions ANY>
<!ATTLIST extensions
defaultExtensionNs CDATA #REQUIRED
xmlns CDATA #IMPLIED
>
<!ELEMENT application-components (component*)>
<!ELEMENT project-components (component*)>
<!ELEMENT module-components (component*)>
<!ELEMENT component (implementation-class | interface-class? | option*)+>
<!ELEMENT actions (action+ | group+)*>
<!ELEMENT implementation-class (#PCDATA)>
<!ELEMENT interface-class (#PCDATA)>
<!ELEMENT option EMPTY>
<!ATTLIST option
name CDATA #REQUIRED
value CDATA #REQUIRED>
<!ELEMENT action (keyboard-shortcut? | mouse-shortcut? | shortcut? | add-to-group?)+>
<!--
<action> tag has required 'id' attribute
which mean an action ID. Some existing plugins
have an uncompatible XML ID for this attribute.
:((
-->
<!ATTLIST action
description CDATA #IMPLIED
class CDATA #REQUIRED
text CDATA #REQUIRED
id CDATA #REQUIRED
icon CDATA #IMPLIED
popup (true | false) #IMPLIED>
<!ELEMENT keyboard-shortcut EMPTY>
<!ATTLIST keyboard-shortcut
first-keystroke CDATA #REQUIRED
second-keystroke CDATA #IMPLIED
keymap CDATA #REQUIRED
use-shortcut-of CDATA #IMPLIED>
<!ELEMENT mouse-shortcut EMPTY>
<!ATTLIST mouse-shortcut
keystroke CDATA #REQUIRED
keymap CDATA #REQUIRED>
<!ELEMENT shortcut EMPTY>
<!ATTLIST shortcut
first-keystroke CDATA #REQUIRED
second-keystroke CDATA #IMPLIED
keymap CDATA #REQUIRED>
<!ELEMENT group (reference* | separator* | action* | add-to-group*)+>
<!ATTLIST group
id ID #IMPLIED
class CDATA #IMPLIED
text CDATA #IMPLIED
description CDATA #IMPLIED
popup (true | false) #IMPLIED
icon CDATA #IMPLIED>
<!ELEMENT reference EMPTY>
<!ATTLIST reference
ref CDATA #REQUIRED>
<!ELEMENT add-to-group EMPTY>
<!--
<add-to-group> tag use an 'id' attribute
to specify which group will be used.
It should be very useful if
we'll have a set of existing group IDs
-->
<!ATTLIST add-to-group
anchor (first | last | before | after) #REQUIRED
group-id CDATA #REQUIRED
relative-to-action CDATA #IMPLIED>
<!ELEMENT separator EMPTY>
<!ELEMENT abbreviation EMPTY>
<!-- helpset is a name of file from PLUGIN/help/ folder
Example: <helpset file="myhelp.jar" path="/Help.hs"/>
-->
<!ELEMENT helpset EMPTY>
<!ATTLIST helpset
file CDATA #REQUIRED
path CDATA #REQUIRED>