| <?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> |