<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you 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.

-->
<!--
    Created on : November 30, 2007, 2:58 PM
    Author     : vstejskal
    Description:
        The vocabulary for an editor macros settings file.

    PUBLIC ID  : -//NetBeans//DTD Editor Macros settings 1.1//EN
    SYSTEM ID  : https://netbeans.org/dtds/EditorMacros-1_1.dtd
-->



<!ELEMENT editor-macros ( macro )* >
<!ATTLIST macros>

<!--
    name:          (String, required) The name of this macro.
    descriptionId: (String) A resource bundle key with description text for
                   this macro. Modules are encouraged to use this
                   instead of <description/> element to make their macros
                   localizable.
    remove:        When 'true' this macro will be removed and all its
                   optional attributes and elements will be ignored.
-->
<!ELEMENT macro ( code?, description?, shortcut? ) >
<!ATTLIST macro
          name              CDATA #REQUIRED
          descriptionId     CDATA #IMPLIED
          remove            ( true | false ) "false"
          xml:space         ( default | preserve ) "default"
>

<!--
    Contains the actual code of this macro. It should be raw text enclosed in
    <![CDATA[ ]]> section. No character translation is done when loading the code text.
-->
<!ELEMENT code ( #PCDATA ) >
<!ATTLIST code>

<!--
    Contains macro's description in form of raw text enclosed in
    <![CDATA[ ]]> section. This is designed for users custom macros or
    when they change description provided by a module. Modules should use
    'descriptionId' attribute instead.
-->
<!ELEMENT description ( #PCDATA ) >
<!ATTLIST description>

<!--
    Defines keystrokes bound to the macro so that it can easily be played
    from the editor.
-->
<!ELEMENT shortcut EMPTY>
<!ATTLIST shortcut
          keystrokes CDATA #REQUIRED
>
