<?xml version="1.0" ?> <!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" "dtd/kdedbx45.dtd" [ <!ENTITY konsolekalendar "<application>KonsoleKalendar</application>"> <!ENTITY % addindex "IGNORE"> <!ENTITY % English "INCLUDE"> ]> <!-- The language must NOT be changed here. --> <book id="konsolekalendar" lang="&language;"> <bookinfo id="konsolekalendarinfo"> <title>The &konsolekalendar; Handbook</title> <authorgroup> <author> <firstname>Tuukka</firstname> <surname>Pasanen</surname> <affiliation><address><email>illuusio@mailcity.com</email></address></affiliation> </author> <author> <firstname>Allen</firstname> <surname>Winter</surname> <affiliation><address><email>winterz@kde.org</email></address></affiliation> </author> <othercredit role="reviewer"> <firstname>Malcolm</firstname> <surname>Hunter</surname> <affiliation><address><email>malcolm.hunter@gmx.co.uk</email></address></affiliation> <contrib>Reviewer</contrib> </othercredit> <!-- TRANS:ROLES_OF_TRANSLATORS --> </authorgroup> <copyright> <year>2002</year><year>2004</year><holder>Tuukka Pasanen</holder> </copyright> <copyright> <year>2003</year><year>2007</year><holder>Allen Winter</holder> </copyright> <legalnotice>&FDLNotice;</legalnotice> <!-- Don't change format of date and version of the documentation --> <date>2016-11-23</date> <releaseinfo>5.1.3 (Applications 16.12)</releaseinfo> <abstract> <para>&konsolekalendar; is a command line interface to &kde; calendars.</para> </abstract> <keywordset> <keyword>KDE</keyword> <keyword>&package;</keyword> <keyword>&kappname;</keyword> <keyword>KOrganizer</keyword> </keywordset> </bookinfo> <chapter id="introduction"> <title>Introduction</title> <para>&konsolekalendar; is a command line interface to calendars. It lets you view, insert, remove, or modify calendar events by way of the command line or from a scripting language. Additionally, &konsolekalendar; can create a new calendar, export a calendar to a variety of other formats, and import another calendar.</para> <para>In its basic mode, &konsolekalendar; displays the list of events in your default calendar for the current day (from 7:00 to 17:00).</para> <para>Main features of &konsolekalendar;: <itemizedlist> <listitem><para>View calendar entries from a start date/time to end date/time</para></listitem> <listitem><para>Insert (add) calendar entries</para></listitem> <listitem><para>Remove (delete) calendar entries</para></listitem> <listitem><para>Modify (change) calendar entries</para></listitem> <listitem><para>Create a new calendar</para></listitem> <listitem><para>Export calendar entries to other file formats</para></listitem> <listitem><para>Import an existing calendar</para></listitem> </itemizedlist></para> <para>&konsolekalendar; is <emphasis>not</emphasis> another graphical user interface to a &kde; calendar (i.e. &korganizer;). &konsolekalendar; is intended solely for uses where a graphical user interface is not practical or possible.</para> <para>&konsolekalendar; does <emphasis>not</emphasis> provide a full-featured language for making queries of the user's calendar: nor is it the intention of the authors to ever write such a capability. Primitive command line options are provided for accessing calendar events within a consecutive range of dates/time stamps. </para> </chapter> <chapter id="features"> <title>Features</title> <para>In this chapter you'll learn about the main features of &konsolekalendar; and how to control them using the command line parameters (remember that &konsolekalendar; is not a graphical user interface; it is a command line program only).</para> <para> You'll learn about inserting, deleting, and changing calendar events, and how to export events to other file formats. The creation and importation of calendars will also be covered in this chapter. </para> <sect1 id="viewing"> <title>Viewing Events</title> <para>In its default mode, or by using the <parameter>--view</parameter> option, &konsolekalendar; will list all events within the range of a specified date/time.</para> <para> <informalexample><para>To view all of today's events (from 7:00 to 17:00), simply run:</para> <para> <screen> <prompt>%</prompt><userinput> <command>konsolekalendar</command> </userinput> </screen> </para> </informalexample> </para> <para> <informalexample><para>In this next example, we view all events for the week of August 18-22:</para> <para> <screen> <prompt>%</prompt><userinput> <command>konsolekalendar</command> <option>--view</option> <option>--date <replaceable>2016-08-18</replaceable> </option> <option>--end-date <replaceable>2016-08-22</replaceable></option> </userinput> </screen> </para> </informalexample> </para> <para> <informalexample><para>Show the next event(s) on the calendar from the current time forward:</para> <para> <screen> <prompt>%</prompt><userinput> <command>konsolekalendar</command> <option>--next</option> </userinput> </screen> </para> </informalexample> </para> <para> <informalexample><para>To view all events for the next 5 days run:</para> <para> <screen> <prompt>%</prompt><userinput> <command>konsolekalendar</command> <option>--show-next</option> <replaceable>5</replaceable> </userinput> </screen> </para> </informalexample> </para> </sect1> <sect1 id="inserting"> <title>Inserting Events</title> <para>&konsolekalendar; can insert events into a calendar or calendar resource using the <parameter>--add</parameter> command line argument. Events successfully inserted will be immediately shown by &kde; calendar applications (like &korganizer;).</para> <para>You get a list of all calendars and their id's using: </para> <screen><prompt>%</prompt><userinput> <command>konsolekalendar</command> <option>--list-calendars</option></userinput></screen> <para> <informalexample><para>In the following example, an event starting on 2016-12-01 (December 1, 2016) at 10:00 and ending at 12:00 with summary "Doctor Visit" will be inserted into the user's calendar resource with the id 8:</para> <para> <screen><prompt>%</prompt><userinput> <command>konsolekalendar</command> <option>--add</option> <option>--calendar 8</option> <option>--date <replaceable>2016-12-03</replaceable></option> <option>--time <replaceable>10:00</replaceable></option> \ <option>--end-time <replaceable>12:00</replaceable></option> <option>--summary <replaceable>"Doctor Visit"</replaceable></option></userinput></screen> </para> </informalexample> </para> <para> <informalexample><para>In this example, a birthday event is added into the user's calendar resource with the id 8:</para> <para> <screen><prompt>%</prompt><userinput> <command>konsolekalendar</command> <option>--add</option> <option>--calendar 8</option> <option>--date <replaceable>2016-12-06</replaceable></option> <option>--summary <replaceable>"My Birthday"</replaceable></option> \ <option>--description <replaceable>"Party Time"</replaceable></option></userinput></screen> </para> </informalexample> </para> <para> <informalexample><para> Here a one week vacation is inserted into a calendar with the id 8:</para> <para> <screen><prompt>%</prompt><userinput> <command>konsolekalendar</command> <option>--add</option> <option>--calendar <replaceable>12</replaceable></option> <option>--date <replaceable>2017-08-01</replaceable></option> \ <option>--end-date <replaceable>2017-08-07</replaceable></option> <option>--summary <replaceable>"Vacation"</replaceable></option> <option>--description <replaceable>"Nobody will ever find me!"</replaceable></option></userinput></screen> </para> </informalexample> </para> </sect1> <sect1 id="deleting"> <title>Removing Entries</title> <para>&konsolekalendar; supports the removal of entries in a calendar file or resource using the <parameter>--delete</parameter> command line argument. Calendar entries to be removed are specified exactly by their Unique-string identifier (<acronym>UID</acronym>) using the <parameter>--uid</parameter> option. <acronym>UIDs</acronym> are found by first viewing the event, using the <parameter>--view</parameter>, <parameter>--next</parameter> or <parameter>--show-next</parameter> options.</para> <para>Events successfully deleted will be immediately removed from within &kde; calendar applications (&korganizer; for example).</para> <warning><para> When you delete something from the calendar you <emphasis>cannot</emphasis> undo it! In other words, when you delete an entry you cannot reverse the deletion. It's gone for good.</para></warning> <para> <informalexample><para>Here we delete a calendar entry with <acronym>UID</acronym> <replaceable>&konsolekalendar;-1887551750.196</replaceable>:</para> <para> <screen><prompt>%</prompt><userinput> <command>konsolekalendar</command> <option>--delete</option> <option>--uid <replaceable>&konsolekalendar;-1887551750.196</replaceable></option></userinput></screen> </para> </informalexample> </para> </sect1> <sect1 id="changing"> <title>Modifying Entries</title> <para>&konsolekalendar; supports the modification of existing entries in a calendar file or resource using the <parameter>--change</parameter> command line argument. Calendar entries to be modified are specified exactly by their Unique-string identifier (<acronym>UID</acronym>) using the <parameter>--uid</parameter> option. <acronym>UIDs</acronym> are found by first viewing the event, using the <parameter>--view</parameter>, <parameter>--next</parameter> or <parameter>--show-next</parameter> options.</para> <para> Changing behaves in the same way as inserting: you can change an event's start date and time, end date and time, summary, location, and description. Events successfully changed will be immediately shown modified within &kde; calendar applications (&korganizer;).</para> <para><emphasis>Example:</emphasis> Here we change the summary and description of a calendar entry with <acronym>UID</acronym> <replaceable>&konsolekalendar;-1887551750.196</replaceable>:</para> <para> <informalexample> <para> <prompt>%</prompt><userinput> <command>konsolekalendar</command> <option>--change</option> <option>--uid <replaceable>&konsolekalendar;-1887551750.196</replaceable></option> <option>--summary <replaceable>"Get my head examined"</replaceable></option> <option>--description <replaceable>"don't go to that doctor anymore!"</replaceable></option> </userinput> </para> </informalexample> </para> </sect1> <sect1 id="creating"> <title>Creating a New Calendar File</title> <para>&konsolekalendar; can be used to create new calendars from existing files. You can create the calendar using the option <option>--create</option> with the filename as argument. The file must be a valid <acronym>iCal</acronym> or <acronym>vCal</acronym> file.</para> <para>Note: You can not use the option <option>--dry-run</option> to test if the resource can be created.</para> <para>Note: &konsolekalendar; needs the file to work, so never delete the file by hand. </para> <para>Technical sidenote: &konsolekalendar; creates with this command a new <acronym>Akonadi</acronym> resource pointing to this file. It does not prevent you to create multiple resources pointing to the same file. </para> <para> <informalexample><para>Create a new calendar from an existing file named <filename><replaceable>vacation.ics</replaceable></filename>:</para> <para> <screen><prompt>%</prompt><userinput> <command>konsolekalendar</command> <option>--create</option> <option><replaceable>vacation.ics</replaceable></option></userinput></screen> </para> </informalexample> </para> <para>The resource will be named <quote>vacation</quote> using <option>--list-calendars</option></para> <para>It is not possible to delete an <acronym>Akonadi</acronym> resource with &konsolekalendar;, you have to use &korganizer; or <application>akonadiconsole</application>. </para> </sect1> <sect1 id="exporting"> <title>Exporting to Other Formats</title> <para>&konsolekalendar; can export a calendar to other well known formats. Exporting is a special form of viewing. By default, events are viewed in <quote>&konsolekalendar; text</quote> format. To change the viewing format use the <parameter>--export-type</parameter> command line argument.</para> <para>To see a list of all supported export formats, use the <parameter>--export-list</parameter> option, as in:</para> <para> <informalexample> <para> <screen><prompt>%</prompt><userinput> <command>konsolekalendar</command> <option>--export-list</option></userinput></screen> </para> </informalexample> </para> </sect1> <sect1 id="formats"> <title>Export Formats</title> <para>Some, but not necessarily all, of the supported formats are described in the this section.</para> <sect2 id="native-format"> <title>&konsolekalendar; Text Format</title> <para>&konsolekalendar; Text Format is &konsolekalendar;'s native format and is designed to be comfortable to read and to be parsed by follow-on scripts.</para> <para>The &konsolekalendar; Text Format is: <informalexample> <screen> Date:\t<Incidence Date>(dddd yyyy-MM-dd) [\t<Incidence Start Time>(hh:mm) - <Incidence End Time>(hh:mm)] Summary: \t<Incidence Summary | "(no summary available)"> Location: \t<Incidence Location | "(no location available)"> Description: \t<Incidence Description | "(no description available)"> UID: \t<Incidence UID> -------------------------------------------------- </screen> </informalexample> </para> <para>Output of <userinput> <command>konsolekalendar</command> <option>--next</option> <option>--export-type</option> <option>Text</option></userinput>: <informalexample> <screen> Date: Tuesday 2016-11-29 08:00 - 09:00 Summary: Staff Meeting Location: Conference Room Description: Meet with the entire staff to discuss the project. UID: &konsolekalendar;-1924621834.134 -------------------------------------------------- </screen> </informalexample> </para> </sect2> <sect2 id="short-format"> <title>&konsolekalendar; Short Text Format</title> <para>Short Text Format provides a more compact, less verbose version of &konsolekalendar;'s native format.</para> <para>The &konsolekalendar; Short Text Format is: <informalexample> <screen> [--------------------------------------------------] {<Incidence Date>(dddd yyyy-MM-dd)] [<Incidence Start Time>(hh:mm) - <Incidence End Time>(hh:mm) | "\t"] \t<Incidence Summary | \t>[, <Incidence Location>] \t\t<Incidence Description | "\t"> </screen> </informalexample> </para> <para>Output of <userinput> <command>konsolekalendar</command> <option>--next</option> <option>--export-type</option> <option>Short</option></userinput>: <informalexample> <screen> -------------------------------------------------- Tuesday 2016-11-29 08:00 - 09:00 Staff Meeting, Conference Room Meet with the entire staff to discuss the project. </screen> </informalexample> </para> </sect2> <sect2 id="csv-format"> <title>Comma-Separated Values (<acronym>CSV</acronym>) Format</title> <para>Comma-Separated Value Format displays the event values in the same order as &konsolekalendar; Text format. The only difference is that all the information is on the same row with each field separated by a comma. The resulting exported files can be imported directly into spreadsheet programs like &calligrasheets;, <application>OpenOffice.org Calc</application>, and <application>&Microsoft; Excel</application>. Also, <acronym>CSV</acronym> format is easy to parse with follow-on scripts.</para> <para>The Comma-Separated Value (<acronym>CSV</acronym>) format is: <informalexample> <screen> "Weekday, Month Day, Year","HH:MM","Weekday, Month Day, Year","HH:MM","Summary","Location","Description","UID" </screen> </informalexample> </para> <para>Output of <userinput> <command>konsolekalendar</command> <option>--next</option> <option>--export-type</option> <option>CSV</option></userinput>: <informalexample> <screen> "Tuesday, November 29, 2016","08:00","Tuesday, November 29, 2016","09:00","Staff Meeting","Conference Room","Meet in the big conference \ room with the entire staff.","&konsolekalendar;-1924621834.134" </screen> </informalexample> </para> </sect2> <sect2 id="html-format"> <title>&HTML; Format</title> <para>The &HTML; export format will produce a valid &HTML; file that can be published to the <acronym>WWW</acronym>. This export format is not suitable for follow-on script parsing, but is very nice for publishing calendars for easy public viewing.</para> <!--FIXME exports only the template without any incidence data <para><emphasis>TODO:</emphasis> Insert screenshot here</para> --> </sect2> <sect2 id="html-month-format"> <title><acronym>HTMLmonth</acronym> Format</title> <para>This format produces an &HTML; file showing all appointments in the months specified by the date range. This export format is not suitable for follow-on script parsing, but is very nice for publishing calendars for easy public viewing.</para> <!--FIXME exports only the template without any incidence data <para><emphasis>TODO:</emphasis> Insert screenshot here</para> --> </sect2> </sect1> <sect1 id="importing"> <title>Importing Calendars</title> <para>&konsolekalendar; can import an iCal or vCal calendar file into calendar. All events from the calendar being imported from will be inserted, skipping identical events, that are already part of the calendar.</para> <para> <informalexample><para> To import calendar file <replaceable>vacation.ics</replaceable> into calendar with the id <replaceable>8</replaceable> run:</para> <para> <screen><prompt>%</prompt><userinput> <command>konsolekalendar</command> <option>--import <replaceable>vacation.ics</replaceable></option> <option>--calendar <replaceable>8</replaceable></option></userinput></screen> </para> </informalexample> </para> </sect1> </chapter> <chapter id="features-commandline-options"> <title>Command Line Arguments</title> <para>&konsolekalendar; supports the following options:</para> <informaltable> <tgroup cols="2"> <thead> <row> <entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody> <row> <entry><emphasis>Generic options:</emphasis></entry> </row> <row> <entry><option>--help, --help-all</option></entry> <entry>Shows help about the program options.</entry> </row> <row> <entry><option>--author</option></entry> <entry>Shows the program author information.</entry> </row> <row> <entry><option>-v, --version</option></entry> <entry>Shows the program version information.</entry> </row> <row> <entry><option>--license</option></entry> <entry>Shows the program license information.</entry> </row> <row> <entry><emphasis>Options:</emphasis></entry> </row> <row> <entry><option>--verbose</option></entry> <entry>Print helpful runtime messages.</entry> </row> <row> <entry><option>--dry-run</option></entry> <entry>Print what would have been done, but do not execute. Do not change any files; do not insert, remove, modify any existing files, nor create any new files.</entry> </row> <row> <entry><option>--allow-gui</option></entry> <entry>Permit resources which might need an interactive user interface. In normal operation, only resources which never will require a user interface are used (like file-based calendars).</entry> </row> <row> <entry><emphasis>Incidence types (these options can be combined):</emphasis></entry> </row> <row> <entry><option>--event</option></entry> <entry>Operate for Events only (Default).</entry> </row> <row> <entry><option>--todo</option></entry> <entry>Operate for Todos only. (Not implemented)</entry> </row> <row> <entry><option>--journal</option></entry> <entry>Operate for Journals only. (Not implemented)</entry> </row> <row> <entry><emphasis>Major Operation Modes:</emphasis></entry> </row> <row> <entry><option>--view</option></entry> <entry>Print calendar events in specified export format.</entry> </row> <row> <entry><option>--add</option></entry> <entry>Insert an event into the calendar.</entry> </row> <row> <entry><option>--change</option></entry> <entry>Modify an existing calendar event.</entry> </row> <row> <entry><option>--delete</option></entry> <entry>Remove an existing calendar event.</entry> </row> <row> <entry><option>--create</option> <replaceable> filename</replaceable> </entry> <entry>Create a new calendar from existing file.</entry> </row> <row> <entry><option>--import</option> <replaceable> import-file</replaceable></entry> <entry>Import this calendar to the main calendar.</entry> </row> <row> <entry><option>--list-calendars</option></entry> <entry>List available calendars.</entry> </row> <row> <entry><emphasis>Operation modifiers:</emphasis></entry> </row> <row> <entry><option>--all</option></entry> <entry>View all calendar entries.</entry> </row> <row> <entry><option>--next</option></entry> <entry>View next activity in calendar.</entry> </row> <row> <entry><option>--show-next</option> <replaceable> days</replaceable></entry> <entry>Starting at specified date show next # days' activities.</entry> </row> <row> <entry><option>--uid</option> <replaceable> UID</replaceable></entry> <entry>View, delete, or change the event with this Unique-string IDentifier.</entry> </row> <row> <entry><option>--date</option> <replaceable> date</replaceable></entry> <entry>Start at this day [YYYY-MM-DD]. Default date is Today</entry> </row> <row> <entry><option>--time</option> <replaceable> time</replaceable></entry> <entry>Start at this time [HH:MM]. Default time for viewing is 07:00. <para>To add or change a floating event, use the <option>--time float</option> or the <option>--end-time float</option> options.</para></entry> </row> <row> <entry><option>--end-date</option> <replaceable> end-date</replaceable></entry> <entry>End at this day [YYYY-MM-DD]. Default is set by <option>--date</option>.</entry> </row> <row> <entry><option>--end-time</option> <replaceable> end-time</replaceable></entry> <entry>End at this time [HH:MM]. Default end-time for viewing is 17:00. <para>To add or change a floating event, use the <option>--time float</option> or the <option>--end-time float</option> options.</para></entry> </row> <row> <entry><option>--epoch-start</option> <replaceable> epoch-time</replaceable></entry> <entry>Start at this time [seconds since epoch].</entry> </row> <row> <entry><option>--epoch-end</option> <replaceable> epoch-time</replaceable></entry> <entry>End at this time [seconds since epoch].</entry> </row> <row> <entry><option>--summary</option> <replaceable> summary</replaceable></entry> <entry>Add summary to event (works with add and change).</entry> </row> <row> <entry><option>--description</option> <replaceable> description</replaceable></entry> <entry>Add description to event (works with add and change).</entry> </row> <row> <entry><option>--location</option> <replaceable> location</replaceable></entry> <entry>Add location to event (works with add and change).</entry> </row> <row> <entry><option>--calendar</option> <replaceable> id</replaceable></entry> <entry>Specify a calendar to use. <para>If not specified then your default &korganizer; resource is used.</para></entry> </row> <row> <entry><emphasis>Export options:</emphasis></entry> </row> <row> <entry><option>--export-type</option> <replaceable> export-type</replaceable></entry> <entry>Export file type. Default export file type is Text</entry> </row> <row> <entry><option>--export-file</option> <replaceable> export-file</replaceable></entry> <entry>Export to file. By default, output is written to standard output.</entry> </row> <row> <entry><option>--export-list</option></entry> <entry>Print list of export types supported and exit.</entry> </row> </tbody> </tgroup> </informaltable> </chapter> <chapter id="faq"> <title>Questions and Answers</title> <qandaset id="faqlist"> <qandaentry> <question> <para>What configuration files does &konsolekalendar; use?</para> </question> <answer> <para>None.</para> </answer> </qandaentry> <qandaentry> <question> <para>What are the application names of &konsolekalendar;?</para> </question> <answer> <para>&konsolekalendar;'s application name is <application>konsolekalendar</application>.</para> </answer> </qandaentry> <qandaentry> <question> <para>What is the date specification format?</para> </question> <answer> <para>&konsolekalendar; will reject dates specified on the command line unless they are specified according to ISO 8601 standards, namely: YYYY-MM-DD. Where YYYY represents a four-digit year (like 2003), MM represents a two-digit month (01,02,..,12), and DD represents a two-digit day (01,02,...,31).</para> <para>&konsolekalendar; always exports dates according to the ISO 8601 format.</para> </answer> </qandaentry> <qandaentry> <question> <para>What is the time specification format?</para> </question> <answer> <para>&konsolekalendar; will reject times specified on the command line unless they are specified according to ISO 8601 standards, namely: HH:MM:SS. Where HH represents a two-digit hour (01,02,...,24), MM represents a two-digit minute (01,02,..,60), and SS represents a two-digit second (01,02,...,60).</para> <para>&konsolekalendar; always exports times according to the ISO 8601 format.</para> </answer> </qandaentry> <qandaentry> <question> <para>Will &konsolekalendar; insert a new event that is identical to one that already exists in the calendar?</para> </question> <answer> <para>No. See next question.</para> </answer> </qandaentry> <qandaentry> <question> <para>How does &konsolekalendar; determine if an event is identical to one that already exists in the calendar?</para> </question> <answer> <para>&konsolekalendar; checks the specified start date and time, end date and time, and summary against all events in the calendar. An event match is determined if all three values match to an existing event. </para> </answer> </qandaentry> <qandaentry> <question> <para>Can a non-floating event be changed to a floating event?</para> </question> <answer> <para>Yes. Use the <option>--time float</option> option with <option>--change</option>. </para> </answer> </qandaentry> <qandaentry> <question> <para>Why are event <acronym>UIDs</acronym> printed in most export formats?</para> </question> <answer> <para>Because you need to specify <acronym>UIDs</acronym> to delete or change events. If you do not want to see event <acronym>UIDs</acronym> then use the <emphasis>short</emphasis> export type (<option>--export-type short</option>). </para> </answer> </qandaentry> <qandaentry> <question> <para>How do I have my question added to this <acronym>FAQ</acronym>?</para> </question> <answer> <para>Send your questions to <email>winter@kde.org</email>.</para> </answer> </qandaentry> </qandaset> </chapter> <chapter id="credits"> <title>Credits and License</title> <para>&konsolekalendar; Program copyright 2002-2007:</para> <itemizedlist> <listitem><para>Tuukka Pasanen <email>illuusio@mailcity.com</email></para></listitem> <listitem><para>Allen Winter <email>winter@kde.org</email></para></listitem> </itemizedlist> <para>Documentation copyright 2003:</para> <itemizedlist> <listitem><para>Allen Winter <email>winter@kde.org</email></para></listitem> <listitem><para>Tuukka Pasanen <email>illuusio@mailcity.com</email></para></listitem> </itemizedlist> <!-- TRANS:CREDIT_FOR_TRANSLATORS --> &underFDL; <!-- FDL: do not remove --> &underGPL; <!-- GPL License --> </chapter> &documentation.index; </book> <!-- Local Variables: mode: sgml sgml-minimize-attributes:nil sgml-general-insert-case:lower sgml-indent-step:0 sgml-indent-data:nil End: -->