diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c381b94 --- /dev/null +++ b/Makefile @@ -0,0 +1,32 @@ +FILE = org-vcard +EMACS = emacs +INSTALL_INFO = install-info +ORG_DIR1 = -L $(word 1,$(wildcard $(HOME)/.emacs.d/elpa/org-9*)) +ifeq ($(words $(ORG_DIR1)),1) + ORG_DIR1 = +endif +ORG_LIB = -l org -l ox-texinfo +# This can be set on the command line to 't' to handle broken links in the Org file on export +# -- however, this for testing purposes - do try to cleanup broken links +ORG_B1B = nil +ORG_BOB = --eval="(setq org-export-with-broken-links $(ORG_B1B))" +ORG_PUB = --eval='(progn (find-file (expand-file-name "$(FILE).org")) (org-texinfo-export-to-texinfo))' +EMACS_ARGS = --batch $(ORG_DIR1) $(ORG_LIB) $(ORG_BOB) $(ORG_PUB) + +all: info clean + @echo all done! + +# Run this to update the .info file and dir +info: $(FILE).org + $(EMACS) $(EMACS_ARGS) + makeinfo $(FILE).texi + $(INSTALL_INFO) $(FILE).info dir + +$(FILE).org: README.org + cp README.org $(FILE).org + +clean: + rm -f $(FILE).texi $(FILE).org *~ + +distclean: clean + rm -f dir $(FILE).info diff --git a/README.md b/README.md deleted file mode 100644 index 503a4b4..0000000 --- a/README.md +++ /dev/null @@ -1,228 +0,0 @@ -# org-vcard - org-mode support for vCard export and import - -*Author:* Alexis , Will Dey , pinoaffe
-*URL:* [https://github.com/pinoaffe/org-vcard](https://github.com/pinoaffe/org-vcard)
- -*As of march 2024, I (pinoaffe) have taken over maintainership of -org-vcard.* - -`org-vcard` is a package for exporting and importing -[vCards](https://en.wikipedia.org/wiki/Vcard) from within [GNU -Emacs](https://www.gnu.org/software/emacs/)' [Org -mode](http://orgmode.org/). - -## Table of Contents - -- [Features](#features) -- [Installation](#installation) -- [Usage](#usage) -- [TODO](#todo) -- [Issues](#issues) -- [Testing](#testing) -- [License](#license) - -## Features - -* _Backwards-compatible with org-contacts.el._ - -`org-vcard` comes with a built-in contacts style called `flat`, -which adheres to org-contacts' method of structuring contacts and -contact information. It not only supports the properties specified -in org-contacts.el, but many other properties as well. - -* _Basic support for vCard 4.0, 3.0 and 2.1._ - -`org-vcard` is working towards full compliance with the vCard 4.0 -([RFC 6350](https://tools.ietf.org/html/rfc6350)), 3.0 ([RFC -2426](https://tools.ietf.org/html/rfc2426) and [RFC -4770](https://tools.ietf.org/html/rfc4770)) and -[2.1](https://web.archive.org/web/20120501162958/http://www.imc.org/pdi/vcard-21.doc) -specifications. - -* _New contacts style: `tree`._ - -`org-vcard` introduces a new style for Org contacts, called -`tree`. More details [below](#tree). - -* _Highly customisable, via Emacs' `customize` interface._ - -Modify existing contact styles; change the labels used to map -contact details in `org-mode` to various vCard properties/types, or -add new ones. Create completely new contact styles by plugging in -your own code to handle export and import. - -## Installation - -Install `org-vcard` from [MELPA](http://melpa.org/#/org-vcard), -[MELPA Stable](http://stable.melpa.org/#/org-vcard), or put the -`org-vcard` folder in your load-path and do a `(require -'org-vcard)`. - -## Usage - -The main user commands are `org-vcard-export` and -`org-vcard-import`, which are intended to be called interactively; -you can press TAB at many of the minibuffer prompts to get a list -of the available options for a prompt. - -Both `org-vcard-export` and `org-vcard-import` are wrappers around -the `org-vcard-transfer-helper` -function. `org-vcard-transfer-helper` can be used to export and -import programmatically (i.e. via Emacs Lisp). - -Enabling `org-vcard-mode` will add an "Org-vCard" menu to the menu -bar, from which one can access the various export, import and -customisation options. - -**Note!** When exporting to vCard using the source `buffer`, -narrowing is respected. If you wish to export the entire buffer -without restriction, remove any narrowing in effect. - -For a list of the properties available by default for each contacts -style and related vCard versions, visit the "Org Vcard Styles -Languages Mappings" setting in the Org Vcard customize group, or -examine the value of the `org-vcard--styles-languages-mappings` -variable. - -**Note!** The default mappings might need to be tweaked for -particular use-cases. For example, some systems create vCards -with a bare `TEL` property, whereas others use `TEL;TYPE=voice`; -but both are mapped to the Org `PHONE` property (for `flat` -style) or `phone` FIELDTYPE (for `tree` style). In this case, the -`customize` interface could be used to delete whichever of the -two mappings is unwanted. - -The value of the `org-vcard-include-import-unknowns` (boolean) -variable specifies whether the import process should include vCard -properties not listed in the mapping being used. - -The value of the `org-vcard-append-to-existing-import-buffer` and -`org-vcard-append-to-existing-export-buffer` (boolean) variables -specify whether the import/export process should append to any -existing import/export buffer. If not, a new import/export buffer -is created for each import/export. - - - -### The `tree` contacts style - -The structure of the `tree` contacts style is: - - * [Contact name] - :PROPERTIES: - :KIND: individual - :FIELDTYPE: name - :END: - ** [Information type] - *** [Information value] - :PROPERTIES: - :FIELDTYPE: [Field type] - [:PREFERRED:] - :END: - -Here's an example: - - * Joan Smith - :PROPERTIES: - :KIND: individual - :FIELDTYPE: name - :END: - ** Mobile - *** 0000 999 999 - :PROPERTIES: - :FIELDTYPE: cell - :END: - ** Email - *** Work - **** address1@hidden - :PROPERTIES: - :FIELDTYPE: email-work - :PREFERRED: - :END: - *** Home - **** address2@hidden - :PROPERTIES: - :FIELDTYPE: email-home - :END: - -As the `tree` style uses a heading's FIELDTYPE property to -associate fields with their data, the above hierarchy is only one -way to structure contacts; equivalently, one could do: - - * People - ** Joan Smith - :PROPERTIES: - :KIND: individual - :FIELDTYPE: name - :END: - *** Cell - **** 0000 999 999 - :PROPERTIES: - :FIELDTYPE: cell - :END: - *** Email - **** address1@hidden - :PROPERTIES: - :FIELDTYPE: email-work - :PREFERRED: - :END: - **** address2@hidden - :PROPERTIES: - :FIELDTYPE: email-home - :END: - -## TODOs - -* TODO: Add support for one-vCard-per-file export. - -* TODO: Add support for line folding when exporting. - -* TODO: Add support for multiple instances of EMAIL property. - -* TODO: Add support for vCard PREF for style `flat`. - -* TODO: Add support for vCard KINDs `group` and `org`. - -* TODO: Add support for per-card version handling on import. - -* TODO: Improve compliance with each version of the vCard specification. - -* TODO: Extend test coverage. - -* TODO: Write (and use) a proper vCard parser. - - - -## Issues / bugs - -If you discover an issue or bug in `org-vcard` not already noted: - -* as a TODO item, or - -* in [the project's "Issues" section on -GitHub](https://github.com/pinoaffe/org-vcard/issues), - -please create a new issue with as much detail as possible, including: - -* which version of Emacs you're running on which operating system, and - -* how you installed `org-vcard`. - -## Testing - -A basic test suite is located in the repository `tests` directory, -in `org-vcard-tests.el`. To run the suite: - -1. Ensure `org-vcard.el` has been loaded, e.g. `(load "~/org-vcard/org-vcard.el")`. -2. Load the test suite: e.g. `(load "~/org-vcard/tests/org-vcard-tests.el")`. -3. Run the tests by evaluating `(ert '(tag org-vcard))`. - -## License - -[GNU General Public License version -3](http://www.gnu.org/licenses/gpl.html), or (at your option) any -later version. - - ---- -Converted from `org-vcard.el` by [*el2markdown*](https://github.com/Lindydancer/el2markdown). diff --git a/README.org b/README.org new file mode 100644 index 0000000..f1bd401 --- /dev/null +++ b/README.org @@ -0,0 +1,205 @@ +#+TITLE: Org VCard +#+SUBTITLE: Converting VCards to Org and vice versa +#+TEXINFO_FILENAME: org-vcard.info +#+TEXINFO_DIR_CATEGORY: Emacs +#+TEXINFO_DIR_NAME: org-vcard +#+TEXINFO_DIR_DESC: A package to convert VCards to Org and vice versa + +[[https://melpa.org/#/org-incoming][[[https://melpa.org/packages/org-vcard-badge.svg]]]] + +This is =org-vcard=, a package to convert VCards to Org and vice versa. + ++ /Author::/ + + Alexis [[mailto:flexibeast@gmail.com][flexibeast@gmail.com]] + + Will Dey [[mailto:will123dey@gmail.com][will123dey@gmail.com]] + + pinoaffe [[mailto:pinoaffe@gmail.com][pinoaffe@gmail.com]] ++ /URL:/ [[https://github.com/pinoaffe/org-vcard]] + +/As of march 2024, I (pinoaffe) have taken over maintainership of +org-vcard./ + +=org-vcard= is a package for exporting and importing [[https://en.wikipedia.org/wiki/Vcard][vCards]] from +within [[https://www.gnu.org/software/emacs/][GNU Emacs]]' [[http://orgmode.org/][Org mode]]. + +* Features +- /Backwards-compatible with org-contacts.el./ + + =org-vcard= comes with a built-in contacts style called =flat=, + which adheres to org-contacts' method of structuring contacts and + contact information. It not only supports the properties specified + in org-contacts.el, but many other properties as well. + +- /Basic support for vCard 4.0, 3.0 and 2.1./ + + =org-vcard= is working towards full compliance with the vCard 4.0 + ([[https://tools.ietf.org/html/rfc6350][RFC 6350]]), 3.0 ([[https://tools.ietf.org/html/rfc2426][RFC 2426]] and [[https://tools.ietf.org/html/rfc4770][RFC 4770]]) and [[https://web.archive.org/web/20120501162958/http://www.imc.org/pdi/vcard-21.doc][2.1]] specifications. + +- /New contacts style: =tree=./ + + =org-vcard= introduces a new style for Org contacts, called + =tree=. More details [[#tree][below]]. + +- /Highly customisable, via Emacs' =customize= interface./ + + Modify existing contact styles; change the labels used to map + contact details in =org-mode= to various vCard properties/types, or + add new ones. Create completely new contact styles by plugging in + your own code to handle export and import. + +* Installation +Install =org-vcard= from [[http://melpa.org/#/org-vcard][MELPA]], [[http://stable.melpa.org/#/org-vcard][MELPA Stable]], or put the =org-vcard= +folder in your load-path and do a =(require 'org-vcard)=. + +* Usage +The main user commands are =org-vcard-export= and =org-vcard-import=, +which are intended to be called interactively; you can press TAB at +many of the minibuffer prompts to get a list of the available options +for a prompt. + +Both =org-vcard-export= and =org-vcard-import= are wrappers around the +=org-vcard-transfer-helper= function. =org-vcard-transfer-helper= can +be used to export and import programmatically (i.e. via Emacs Lisp). + +Enabling =org-vcard-mode= will add an "Org-vCard" menu to the menu +bar, from which one can access the various export, import and +customisation options. + +*Note!* When exporting to vCard using the source =buffer=, narrowing +is respected. If you wish to export the entire buffer without +restriction, remove any narrowing in effect. + +For a list of the properties available by default for each contacts +style and related vCard versions, visit the "Org Vcard Styles +Languages Mappings" setting in the Org Vcard customize group, or +examine the value of the =org-vcard--styles-languages-mappings= +variable. + +*Note!* The default mappings might need to be tweaked for particular +use-cases. For example, some systems create vCards with a bare =TEL= +property, whereas others use =TEL;TYPE=voice=; but both are mapped to +the Org =PHONE= property (for =flat= style) or =phone= FIELDTYPE (for +=tree= style). In this case, the =customize= interface could be used +to delete whichever of the two mappings is unwanted. + +The value of the =org-vcard-include-import-unknowns= (boolean) +variable specifies whether the import process should include vCard +properties not listed in the mapping being used. + +The value of the =org-vcard-append-to-existing-import-buffer= and +=org-vcard-append-to-existing-export-buffer= (boolean) variables +specify whether the import/export process should append to any +existing import/export buffer. If not, a new import/export buffer is +created for each import/export. + +** The =tree= contacts style +:PROPERTIES: +:CUSTOM_ID: tree +:END: +The structure of the =tree= contacts style is: + +#+begin_example +,* [Contact name] +:PROPERTIES: +:KIND: individual +:FIELDTYPE: name +:END: +,** [Information type] +,*** [Information value] +:PROPERTIES: +:FIELDTYPE: [Field type] +[:PREFERRED:] +:END: +#+end_example + +Here's an example: + +#+begin_example +,* Joan Smith +:PROPERTIES: +:KIND: individual +:FIELDTYPE: name +:END: +,** Mobile +,*** 0000 999 999 +:PROPERTIES: +:FIELDTYPE: cell +:END: +,** Email +,*** Work +,**** address1@hidden +:PROPERTIES: +:FIELDTYPE: email-work +:PREFERRED: +:END: +,*** Home +,**** address2@hidden +:PROPERTIES: +:FIELDTYPE: email-home +:END: +#+end_example + +As the =tree= style uses a heading's FIELDTYPE property to associate +fields with their data, the above hierarchy is only one way to structure +contacts; equivalently, one could do: + +#+begin_example +,* People +,** Joan Smith +:PROPERTIES: +:KIND: individual +:FIELDTYPE: name +:END: +,*** Cell +,**** 0000 999 999 +:PROPERTIES: +:FIELDTYPE: cell +:END: +,*** Email +,**** address1@hidden +:PROPERTIES: +:FIELDTYPE: email-work +:PREFERRED: +:END: +,**** address2@hidden +:PROPERTIES: +:FIELDTYPE: email-home +:END: +#+end_example + +* TODOs +Things that need work: +- Add support for one-vCard-per-file export. +- Add support for line folding when exporting. +- Add support for multiple instances of EMAIL property. +- Add support for vCard PREF for style =flat=. +- Add support for vCard KINDs =group= and =org=. +- Add support for per-card version handling on import. +- Improve compliance with each version of the vCard specification. +- Extend test coverage. +- Write (and use) a proper vCard parser. + +* Issues / bugs +If you discover an issue or bug in =org-vcard= not already noted: + +- as a TODO item, or +- in [[https://github.com/pinoaffe/org-vcard/issues][the project's "Issues" section on GitHub]], + +please create a new issue with as much detail as possible, including: + +- which version of Emacs you're running on which operating system, and +- how you installed =org-vcard=. + +* Testing +A basic test suite is located in the repository =tests= directory, in +=org-vcard-tests.el=. To run the suite: + +1. Ensure =org-vcard.el= has been loaded, + e.g. =(load "~/org-vcard/org-vcard.el")=. +2. Load the test suite: + e.g. =(load "~/org-vcard/tests/org-vcard-tests.el")=. +3. Run the tests by evaluating =(ert '(tag org-vcard))=. + +* License +[[http://www.gnu.org/licenses/gpl.html][GNU General Public License version 3]], or (at your option) any later +version. + diff --git a/dir b/dir new file mode 100644 index 0000000..8b32b30 --- /dev/null +++ b/dir @@ -0,0 +1,19 @@ +This is the file .../info/dir, which contains the +topmost node of the Info hierarchy, called (dir)Top. +The first time you invoke Info you start off looking at this node. + +File: dir, Node: Top This is the top of the INFO tree + + This (the Directory node) gives a menu of major topics. + Typing "q" exits, "H" lists all Info commands, "d" returns here, + "h" gives a primer for first-timers, + "mEmacs" visits the Emacs manual, etc. + + In Emacs, you can click mouse button 2 on a menu item or cross reference + to select it. + +* Menu: + +Emacs +* org-vcard: (org-vcard). A package to convert VCards to Org and vice + versa. diff --git a/org-vcard.info b/org-vcard.info new file mode 100644 index 0000000..a82c169 --- /dev/null +++ b/org-vcard.info @@ -0,0 +1,292 @@ +This is org-vcard.info, produced by makeinfo version 7.2 from +org-vcard.texi. + +INFO-DIR-SECTION Emacs +START-INFO-DIR-ENTRY +* org-vcard: (org-vcard). A package to convert VCards to Org and vice versa. +END-INFO-DIR-ENTRY + + +File: org-vcard.info, Node: Top, Next: Features, Up: (dir) + +Org VCard +********* + +[[https://melpa.org/packages/org-vcard-badge.svg +(https://melpa.org/#/org-incoming)]] + + This is ‘org-vcard’, a package to convert VCards to Org and vice +versa. + + • _Author::_ + • Alexis flexibeast@gmail.com + • Will Dey will123dey@gmail.com + • pinoaffe pinoaffe@gmail.com + • _URL:_ + + _As of march 2024, I (pinoaffe) have taken over maintainership of +org-vcard._ + + ‘org-vcard’ is a package for exporting and importing vCards +(https://en.wikipedia.org/wiki/Vcard) from within GNU Emacs +(https://www.gnu.org/software/emacs/)' Org mode (http://orgmode.org/). + +* Menu: + +* Features:: +* Installation:: +* Usage:: +* TODOs:: +* Issues / bugs:: +* Testing:: +* License:: + +-- The Detailed Node Listing -- + +Usage + +* The tree contacts style:: + + +File: org-vcard.info, Node: Features, Next: Installation, Prev: Top, Up: Top + +1 Features +********** + + • _Backwards-compatible with org-contacts.el._ + + ‘org-vcard’ comes with a built-in contacts style called ‘flat’, + which adheres to org-contacts' method of structuring contacts and + contact information. It not only supports the properties specified + in org-contacts.el, but many other properties as well. + + • _Basic support for vCard 4.0, 3.0 and 2.1._ + + ‘org-vcard’ is working towards full compliance with the vCard 4.0 + (RFC 6350 (https://tools.ietf.org/html/rfc6350)), 3.0 (RFC 2426 + (https://tools.ietf.org/html/rfc2426) and RFC 4770 + (https://tools.ietf.org/html/rfc4770)) and 2.1 + (https://web.archive.org/web/20120501162958/http://www.imc.org/pdi/vcard-21.doc) + specifications. + + • _New contacts style: ‘tree’._ + + ‘org-vcard’ introduces a new style for Org contacts, called ‘tree’. + More details *note below: The tree contacts style. + + • _Highly customisable, via Emacs' ‘customize’ interface._ + + Modify existing contact styles; change the labels used to map + contact details in ‘org-mode’ to various vCard properties/types, or + add new ones. Create completely new contact styles by plugging in + your own code to handle export and import. + + +File: org-vcard.info, Node: Installation, Next: Usage, Prev: Features, Up: Top + +2 Installation +************** + +Install ‘org-vcard’ from MELPA (http://melpa.org/#/org-vcard), MELPA +Stable (http://stable.melpa.org/#/org-vcard), or put the ‘org-vcard’ +folder in your load-path and do a ‘(require 'org-vcard)’. + + +File: org-vcard.info, Node: Usage, Next: TODOs, Prev: Installation, Up: Top + +3 Usage +******* + +The main user commands are ‘org-vcard-export’ and ‘org-vcard-import’, +which are intended to be called interactively; you can press TAB at many +of the minibuffer prompts to get a list of the available options for a +prompt. + + Both ‘org-vcard-export’ and ‘org-vcard-import’ are wrappers around +the ‘org-vcard-transfer-helper’ function. ‘org-vcard-transfer-helper’ +can be used to export and import programmatically (i.e. via Emacs Lisp). + + Enabling ‘org-vcard-mode’ will add an "Org-vCard" menu to the menu +bar, from which one can access the various export, import and +customisation options. + + *Note!* When exporting to vCard using the source ‘buffer’, narrowing +is respected. If you wish to export the entire buffer without +restriction, remove any narrowing in effect. + + For a list of the properties available by default for each contacts +style and related vCard versions, visit the "Org Vcard Styles Languages +Mappings" setting in the Org Vcard customize group, or examine the value +of the ‘org-vcard--styles-languages-mappings’ variable. + + *Note!* The default mappings might need to be tweaked for particular +use-cases. For example, some systems create vCards with a bare ‘TEL’ +property, whereas others use ‘TEL;TYPE=voice’; but both are mapped to +the Org ‘PHONE’ property (for ‘flat’ style) or ‘phone’ FIELDTYPE (for +‘tree’ style). In this case, the ‘customize’ interface could be used to +delete whichever of the two mappings is unwanted. + + The value of the ‘org-vcard-include-import-unknowns’ (boolean) +variable specifies whether the import process should include vCard +properties not listed in the mapping being used. + + The value of the ‘org-vcard-append-to-existing-import-buffer’ and +‘org-vcard-append-to-existing-export-buffer’ (boolean) variables specify +whether the import/export process should append to any existing +import/export buffer. If not, a new import/export buffer is created for +each import/export. + +* Menu: + +* The tree contacts style:: + + +File: org-vcard.info, Node: The tree contacts style, Up: Usage + +3.1 The ‘tree’ contacts style +============================= + +The structure of the ‘tree’ contacts style is: + + * [Contact name] + :PROPERTIES: + :KIND: individual + :FIELDTYPE: name + :END: + ** [Information type] + *** [Information value] + :PROPERTIES: + :FIELDTYPE: [Field type] + [:PREFERRED:] + :END: + + Here's an example: + + * Joan Smith + :PROPERTIES: + :KIND: individual + :FIELDTYPE: name + :END: + ** Mobile + *** 0000 999 999 + :PROPERTIES: + :FIELDTYPE: cell + :END: + ** Email + *** Work + **** address1@hidden + :PROPERTIES: + :FIELDTYPE: email-work + :PREFERRED: + :END: + *** Home + **** address2@hidden + :PROPERTIES: + :FIELDTYPE: email-home + :END: + + As the ‘tree’ style uses a heading's FIELDTYPE property to associate +fields with their data, the above hierarchy is only one way to structure +contacts; equivalently, one could do: + + * People + ** Joan Smith + :PROPERTIES: + :KIND: individual + :FIELDTYPE: name + :END: + *** Cell + **** 0000 999 999 + :PROPERTIES: + :FIELDTYPE: cell + :END: + *** Email + **** address1@hidden + :PROPERTIES: + :FIELDTYPE: email-work + :PREFERRED: + :END: + **** address2@hidden + :PROPERTIES: + :FIELDTYPE: email-home + :END: + + +File: org-vcard.info, Node: TODOs, Next: Issues / bugs, Prev: Usage, Up: Top + +4 TODOs +******* + +Things that need work: + • Add support for one-vCard-per-file export. + • Add support for line folding when exporting. + • Add support for multiple instances of EMAIL property. + • Add support for vCard PREF for style ‘flat’. + • Add support for vCard KINDs ‘group’ and ‘org’. + • Add support for per-card version handling on import. + • Improve compliance with each version of the vCard specification. + • Extend test coverage. + • Write (and use) a proper vCard parser. + + +File: org-vcard.info, Node: Issues / bugs, Next: Testing, Prev: TODOs, Up: Top + +5 Issues / bugs +*************** + +If you discover an issue or bug in ‘org-vcard’ not already noted: + + • as a TODO item, or + • in the project's "Issues" section on GitHub + (https://github.com/pinoaffe/org-vcard/issues), + + please create a new issue with as much detail as possible, including: + + • which version of Emacs you're running on which operating system, + and + • how you installed ‘org-vcard’. + + +File: org-vcard.info, Node: Testing, Next: License, Prev: Issues / bugs, Up: Top + +6 Testing +********* + +A basic test suite is located in the repository ‘tests’ directory, in +‘org-vcard-tests.el’. To run the suite: + + 1. Ensure ‘org-vcard.el’ has been loaded, e.g. ‘(load + "~/org-vcard/org-vcard.el")’. + 2. Load the test suite: e.g. ‘(load + "~/org-vcard/tests/org-vcard-tests.el")’. + 3. Run the tests by evaluating ‘(ert '(tag org-vcard))’. + + +File: org-vcard.info, Node: License, Prev: Testing, Up: Top + +7 License +********* + +GNU General Public License version 3 +(http://www.gnu.org/licenses/gpl.html), or (at your option) any later +version. + + +Tag Table: +Node: Top220 +Node: Features1208 +Node: Installation2576 +Node: Usage2902 +Node: The tree contacts style5056 +Node: TODOs6483 +Node: Issues / bugs7096 +Node: Testing7615 +Node: License8098 + +End Tag Table + + +Local Variables: +coding: utf-8 +Info-documentlanguage: en +End: