diff mercurial/help.py @ 9082:31e54756559b

help: wrapped help strings at 78 characters
author Martin Geisler <mg@lazybytes.net>
date Wed, 08 Jul 2009 17:14:24 +0200
parents cd92a6968f70
children 9261667e9b82
line wrap: on
line diff
--- a/mercurial/help.py	Tue Jul 07 23:30:53 2009 +0200
+++ b/mercurial/help.py	Wed Jul 08 17:14:24 2009 +0200
@@ -52,21 +52,18 @@
 def extshelp():
     doc = _(r'''
     Mercurial has the ability to add new features through the use of
-    extensions. Extensions may add new commands, add options to
-    existing commands, change the default behavior of commands, or
-    implement hooks.
+    extensions. Extensions may add new commands, add options to existing
+    commands, change the default behavior of commands, or implement hooks.
 
-    Extensions are not loaded by default for a variety of reasons:
-    they can increase startup overhead; they may be meant for
-    advanced usage only; they may provide potentially dangerous
-    abilities (such as letting you destroy or modify history); they
-    might not be ready for prime time; or they may alter some
-    usual behaviors of stock Mercurial. It is thus up to the user to
-    activate extensions as needed.
+    Extensions are not loaded by default for a variety of reasons: they can
+    increase startup overhead; they may be meant for advanced usage only; they
+    may provide potentially dangerous abilities (such as letting you destroy
+    or modify history); they might not be ready for prime time; or they may
+    alter some usual behaviors of stock Mercurial. It is thus up to the user
+    to activate extensions as needed.
 
-    To enable the "foo" extension, either shipped with Mercurial
-    or in the Python search path, create an entry for it in your
-    hgrc, like this:
+    To enable the "foo" extension, either shipped with Mercurial or in the
+    Python search path, create an entry for it in your hgrc, like this:
 
       [extensions]
       foo =
@@ -76,8 +73,8 @@
       [extensions]
       myfeature = ~/.hgext/myfeature.py
 
-    To explicitly disable an extension enabled in an hgrc of broader
-    scope, prepend its path with !:
+    To explicitly disable an extension enabled in an hgrc of broader scope,
+    prepend its path with !:
 
       [extensions]
       # disabling extension bar residing in /path/to/extension/bar.py
@@ -121,10 +118,10 @@
 
     "1165432709 0" (Wed Dec 6 13:18:29 2006 UTC)
 
-    This is the internal representation format for dates. unixtime is
-    the number of seconds since the epoch (1970-01-01 00:00 UTC).
-    offset is the offset of the local timezone, in seconds west of UTC
-    (negative if the timezone is east of UTC).
+    This is the internal representation format for dates. unixtime is the
+    number of seconds since the epoch (1970-01-01 00:00 UTC). offset is the
+    offset of the local timezone, in seconds west of UTC (negative if the
+    timezone is east of UTC).
 
     The log command also accepts date ranges:
 
@@ -136,27 +133,27 @@
 
     (["patterns"], _("File Name Patterns"),
      _(r'''
-    Mercurial accepts several notations for identifying one or more
-    files at a time.
+    Mercurial accepts several notations for identifying one or more files at a
+    time.
 
-    By default, Mercurial treats filenames as shell-style extended
-    glob patterns.
+    By default, Mercurial treats filenames as shell-style extended glob
+    patterns.
 
     Alternate pattern notations must be specified explicitly.
 
-    To use a plain path name without any pattern matching, start it
-    with "path:". These path names must completely match starting at
-    the current repository root.
+    To use a plain path name without any pattern matching, start it with
+    "path:". These path names must completely match starting at the current
+    repository root.
 
-    To use an extended glob, start a name with "glob:". Globs are
-    rooted at the current directory; a glob such as "*.c" will only
-    match files in the current directory ending with ".c".
+    To use an extended glob, start a name with "glob:". Globs are rooted at
+    the current directory; a glob such as "*.c" will only match files in the
+    current directory ending with ".c".
 
-    The supported glob syntax extensions are "**" to match any string
-    across path separators and "{a,b}" to mean "a or b".
+    The supported glob syntax extensions are "**" to match any string across
+    path separators and "{a,b}" to mean "a or b".
 
-    To use a Perl/Python regular expression, start a name with "re:".
-    Regexp pattern matching is anchored at the root of the repository.
+    To use a Perl/Python regular expression, start a name with "re:". Regexp
+    pattern matching is anchored at the root of the repository.
 
     Plain examples:
 
@@ -168,8 +165,8 @@
 
     glob:*.c       any name ending in ".c" in the current directory
     *.c            any name ending in ".c" in the current directory
-    **.c           any name ending in ".c" in any subdirectory of the
-                   current directory including itself.
+    **.c           any name ending in ".c" in any subdirectory of the current
+                   directory including itself.
     foo/*.c        any name ending in ".c" in the directory foo
     foo/**.c       any name ending in ".c" in any subdirectory of foo
                    including itself.
@@ -183,11 +180,11 @@
     (['environment', 'env'], _('Environment Variables'),
      _(r'''
 HG::
-    Path to the 'hg' executable, automatically passed when running
-    hooks, extensions or external tools. If unset or empty, this is
-    the hg executable's name if it's frozen, or an executable named
-    'hg' (with %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on
-    Windows) is searched.
+    Path to the 'hg' executable, automatically passed when running hooks,
+    extensions or external tools. If unset or empty, this is the hg
+    executable's name if it's frozen, or an executable named 'hg' (with
+    %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on Windows) is
+    searched.
 
 HGEDITOR::
     This is the name of the editor to run when committing. See EDITOR.
@@ -195,39 +192,37 @@
     (deprecated, use .hgrc)
 
 HGENCODING::
-    This overrides the default locale setting detected by Mercurial.
-    This setting is used to convert data including usernames,
-    changeset descriptions, tag names, and branches. This setting can
-    be overridden with the --encoding command-line option.
+    This overrides the default locale setting detected by Mercurial. This
+    setting is used to convert data including usernames, changeset
+    descriptions, tag names, and branches. This setting can be overridden with
+    the --encoding command-line option.
 
 HGENCODINGMODE::
-    This sets Mercurial's behavior for handling unknown characters
-    while transcoding user input. The default is "strict", which
-    causes Mercurial to abort if it can't map a character. Other
-    settings include "replace", which replaces unknown characters, and
-    "ignore", which drops them. This setting can be overridden with
-    the --encodingmode command-line option.
+    This sets Mercurial's behavior for handling unknown characters while
+    transcoding user input. The default is "strict", which causes Mercurial to
+    abort if it can't map a character. Other settings include "replace", which
+    replaces unknown characters, and "ignore", which drops them. This setting
+    can be overridden with the --encodingmode command-line option.
 
 HGMERGE::
-    An executable to use for resolving merge conflicts. The program
-    will be executed with three arguments: local file, remote file,
-    ancestor file.
+    An executable to use for resolving merge conflicts. The program will be
+    executed with three arguments: local file, remote file, ancestor file.
 
     (deprecated, use .hgrc)
 
 HGRCPATH::
-    A list of files or directories to search for hgrc files. Item
-    separator is ":" on Unix, ";" on Windows. If HGRCPATH is not set,
-    platform default search path is used. If empty, only the .hg/hgrc
-    from the current repository is read.
+    A list of files or directories to search for hgrc files. Item separator is
+    ":" on Unix, ";" on Windows. If HGRCPATH is not set, platform default
+    search path is used. If empty, only the .hg/hgrc from the current
+    repository is read.
 
     For each element in HGRCPATH:
     * if it's a directory, all files ending with .rc are added
     * otherwise, the file itself will be added
 
 HGUSER::
-    This is the string used as the author of a commit. If not set,
-    available values will be considered in this order:
+    This is the string used as the author of a commit. If not set, available
+    values will be considered in this order:
 
     * HGUSER (deprecated)
     * hgrc files from the HGRCPATH
@@ -247,77 +242,71 @@
     This is the name of the editor to use when committing. See EDITOR.
 
 EDITOR::
-    Sometimes Mercurial needs to open a text file in an editor for a
-    user to modify, for example when writing commit messages. The
-    editor it uses is determined by looking at the environment
-    variables HGEDITOR, VISUAL and EDITOR, in that order. The first
-    non-empty one is chosen. If all of them are empty, the editor
-    defaults to 'vi'.
+    Sometimes Mercurial needs to open a text file in an editor for a user to
+    modify, for example when writing commit messages. The editor it uses is
+    determined by looking at the environment variables HGEDITOR, VISUAL and
+    EDITOR, in that order. The first non-empty one is chosen. If all of them
+    are empty, the editor defaults to 'vi'.
 
 PYTHONPATH::
-    This is used by Python to find imported modules and may need to be
-    set appropriately if this Mercurial is not installed system-wide.
+    This is used by Python to find imported modules and may need to be set
+    appropriately if this Mercurial is not installed system-wide.
     ''')),
 
     (['revs', 'revisions'], _('Specifying Single Revisions'),
      _(r'''
     Mercurial supports several ways to specify individual revisions.
 
-    A plain integer is treated as a revision number. Negative integers
-    are treated as topological offsets from the tip, with -1 denoting
-    the tip. As such, negative numbers are only useful if you've
-    memorized your local tree numbers and want to save typing a single
-    digit. This editor suggests copy and paste.
+    A plain integer is treated as a revision number. Negative integers are
+    treated as topological offsets from the tip, with -1 denoting the tip. As
+    such, negative numbers are only useful if you've memorized your local tree
+    numbers and want to save typing a single digit. This editor suggests copy
+    and paste.
 
-    A 40-digit hexadecimal string is treated as a unique revision
-    identifier.
+    A 40-digit hexadecimal string is treated as a unique revision identifier.
 
-    A hexadecimal string less than 40 characters long is treated as a
-    unique revision identifier, and referred to as a short-form
-    identifier. A short-form identifier is only valid if it is the
-    prefix of exactly one full-length identifier.
+    A hexadecimal string less than 40 characters long is treated as a unique
+    revision identifier, and referred to as a short-form identifier. A
+    short-form identifier is only valid if it is the prefix of exactly one
+    full-length identifier.
 
-    Any other string is treated as a tag name, which is a symbolic
-    name associated with a revision identifier. Tag names may not
-    contain the ":" character.
+    Any other string is treated as a tag name, which is a symbolic name
+    associated with a revision identifier. Tag names may not contain the ":"
+    character.
 
-    The reserved name "tip" is a special tag that always identifies
-    the most recent revision.
+    The reserved name "tip" is a special tag that always identifies the most
+    recent revision.
 
-    The reserved name "null" indicates the null revision. This is the
-    revision of an empty repository, and the parent of revision 0.
+    The reserved name "null" indicates the null revision. This is the revision
+    of an empty repository, and the parent of revision 0.
 
-    The reserved name "." indicates the working directory parent. If
-    no working directory is checked out, it is equivalent to null. If
-    an uncommitted merge is in progress, "." is the revision of the
-    first parent.
+    The reserved name "." indicates the working directory parent. If no
+    working directory is checked out, it is equivalent to null. If an
+    uncommitted merge is in progress, "." is the revision of the first parent.
     ''')),
 
     (['mrevs', 'multirevs'], _('Specifying Multiple Revisions'),
      _(r'''
-    When Mercurial accepts more than one revision, they may be
-    specified individually, or provided as a topologically continuous
-    range, separated by the ":" character.
+    When Mercurial accepts more than one revision, they may be specified
+    individually, or provided as a topologically continuous range, separated
+    by the ":" character.
 
-    The syntax of range notation is [BEGIN]:[END], where BEGIN and END
-    are revision identifiers. Both BEGIN and END are optional. If
-    BEGIN is not specified, it defaults to revision number 0. If END
-    is not specified, it defaults to the tip. The range ":" thus means
-    "all revisions".
+    The syntax of range notation is [BEGIN]:[END], where BEGIN and END are
+    revision identifiers. Both BEGIN and END are optional. If BEGIN is not
+    specified, it defaults to revision number 0. If END is not specified, it
+    defaults to the tip. The range ":" thus means "all revisions".
 
-    If BEGIN is greater than END, revisions are treated in reverse
-    order.
+    If BEGIN is greater than END, revisions are treated in reverse order.
 
-    A range acts as a closed interval. This means that a range of 3:5
-    gives 3, 4 and 5. Similarly, a range of 9:6 gives 9, 8, 7, and 6.
+    A range acts as a closed interval. This means that a range of 3:5 gives 3,
+    4 and 5. Similarly, a range of 9:6 gives 9, 8, 7, and 6.
     ''')),
 
     (['diffs'], _('Diff Formats'),
      _(r'''
-    Mercurial's default format for showing changes between two
-    versions of a file is compatible with the unified format of GNU
-    diff, which can be used by GNU patch and many other standard
-    tools.
+    Mercurial's default format for showing changes between two versions of a
+    file is compatible with the unified format of GNU diff, which can be used
+    by GNU patch and many other standard tools.
 
     While this standard format is often enough, it does not encode the
     following information:
@@ -327,121 +316,116 @@
      - changes in binary files
      - creation or deletion of empty files
 
-    Mercurial also supports the extended diff format from the git VCS
-    which addresses these limitations. The git diff format is not
-    produced by default because a few widespread tools still do not
-    understand this format.
+    Mercurial also supports the extended diff format from the git VCS which
+    addresses these limitations. The git diff format is not produced by
+    default because a few widespread tools still do not understand this
+    format.
 
-    This means that when generating diffs from a Mercurial repository
-    (e.g. with "hg export"), you should be careful about things like
-    file copies and renames or other things mentioned above, because
-    when applying a standard diff to a different repository, this
-    extra information is lost. Mercurial's internal operations (like
-    push and pull) are not affected by this, because they use an
-    internal binary format for communicating changes.
+    This means that when generating diffs from a Mercurial repository (e.g.
+    with "hg export"), you should be careful about things like file copies and
+    renames or other things mentioned above, because when applying a standard
+    diff to a different repository, this extra information is lost.
+    Mercurial's internal operations (like push and pull) are not affected by
+    this, because they use an internal binary format for communicating
+    changes.
 
-    To make Mercurial produce the git extended diff format, use the
-    --git option available for many commands, or set 'git = True' in
-    the [diff] section of your hgrc. You do not need to set this
-    option when importing diffs in this format or using them in the mq
-    extension.
+    To make Mercurial produce the git extended diff format, use the --git
+    option available for many commands, or set 'git = True' in the [diff]
+    section of your hgrc. You do not need to set this option when importing
+    diffs in this format or using them in the mq extension.
     ''')),
     (['templating'], _('Template Usage'),
      _(r'''
-    Mercurial allows you to customize output of commands through
-    templates. You can either pass in a template from the command
-    line, via the --template option, or select an existing
-    template-style (--style).
+    Mercurial allows you to customize output of commands through templates.
+    You can either pass in a template from the command line, via the
+    --template option, or select an existing template-style (--style).
 
-    You can customize output for any "log-like" command: log,
-    outgoing, incoming, tip, parents, heads and glog.
+    You can customize output for any "log-like" command: log, outgoing,
+    incoming, tip, parents, heads and glog.
 
-    Three styles are packaged with Mercurial: default (the style used
-    when no explicit preference is passed), compact and changelog.
-    Usage:
+    Three styles are packaged with Mercurial: default (the style used when no
+    explicit preference is passed), compact and changelog. Usage:
 
         $ hg log -r1 --style changelog
 
-    A template is a piece of text, with markup to invoke variable
-    expansion:
+    A template is a piece of text, with markup to invoke variable expansion:
 
         $ hg log -r1 --template "{node}\n"
         b56ce7b07c52de7d5fd79fb89701ea538af65746
 
-    Strings in curly braces are called keywords. The availability of
-    keywords depends on the exact context of the templater. These
-    keywords are usually available for templating a log-like command:
+    Strings in curly braces are called keywords. The availability of keywords
+    depends on the exact context of the templater. These keywords are usually
+    available for templating a log-like command:
 
     - author: String. The unmodified author of the changeset.
-    - branches: String. The name of the branch on which the changeset
-          was committed. Will be empty if the branch name was default.
+    - branches: String. The name of the branch on which the changeset was
+          committed. Will be empty if the branch name was default.
     - date: Date information. The date when the changeset was committed.
     - desc: String. The text of the changeset description.
-    - diffstat: String. Statistics of changes with the following
-          format: "modified files: +added/-removed lines"
-    - files: List of strings. All files modified, added, or removed by
-          this changeset.
+    - diffstat: String. Statistics of changes with the following format:
+          "modified files: +added/-removed lines"
+    - files: List of strings. All files modified, added, or removed by this
+          changeset.
     - file_adds: List of strings. Files added by this changeset.
     - file_mods: List of strings. Files modified by this changeset.
     - file_dels: List of strings. Files removed by this changeset.
-    - node: String. The changeset identification hash, as a
-          40-character hexadecimal string.
+    - node: String. The changeset identification hash, as a 40-character
+          hexadecimal string.
     - parents: List of strings. The parents of the changeset.
     - rev: Integer. The repository-local changeset revision number.
     - tags: List of strings. Any tags associated with the changeset.
 
-    The "date" keyword does not produce human-readable output. If you
-    want to use a date in your output, you can use a filter to process
-    it. Filters are functions which return a string based on the input
-    variable. You can also use a chain of filters to get the desired
-    output:
+    The "date" keyword does not produce human-readable output. If you want to
+    use a date in your output, you can use a filter to process it. Filters are
+    functions which return a string based on the input variable. You can also
+    use a chain of filters to get the desired output:
 
        $ hg tip --template "{date|isodate}\n"
        2008-08-21 18:22 +0000
 
     List of filters:
 
-    - addbreaks: Any text. Add an XHTML "<br />" tag before the end of
-          every line except the last.
-    - age: Date. Returns a human-readable date/time difference between
-          the given date/time and the current date/time.
-    - basename: Any text. Treats the text as a path, and returns the
-          last component of the path after splitting by the path
-          separator (ignoring trailing separators). For example,
-          "foo/bar/baz" becomes "baz" and "foo/bar//" becomes "bar".
+    - addbreaks: Any text. Add an XHTML "<br />" tag before the end of every
+          line except the last.
+    - age: Date. Returns a human-readable date/time difference between the
+          given date/time and the current date/time.
+    - basename: Any text. Treats the text as a path, and returns the last
+          component of the path after splitting by the path separator
+          (ignoring trailing separators). For example, "foo/bar/baz" becomes
+          "baz" and "foo/bar//" becomes "bar".
     - stripdir: Treat the text as path and strip a directory level, if
           possible. For example, "foo" and "foo/bar" becomes "foo".
-    - date: Date. Returns a date in a Unix date format, including
-          the timezone: "Mon Sep 04 15:13:13 2006 0700".
-    - domain: Any text. Finds the first string that looks like an
-          email address, and extracts just the domain component.
-          Example: 'User <user@example.com>' becomes 'example.com'.
-    - email: Any text. Extracts the first string that looks like an
-          email address. Example: 'User <user@example.com>' becomes
+    - date: Date. Returns a date in a Unix date format, including the
+          timezone: "Mon Sep 04 15:13:13 2006 0700".
+    - domain: Any text. Finds the first string that looks like an email
+          address, and extracts just the domain component. Example: 'User
+          <user@example.com>' becomes 'example.com'.
+    - email: Any text. Extracts the first string that looks like an email
+          address. Example: 'User <user@example.com>' becomes
           'user@example.com'.
-    - escape: Any text. Replaces the special XML/XHTML characters "&",
-          "<" and ">" with XML entities.
+    - escape: Any text. Replaces the special XML/XHTML characters "&", "<" and
+          ">" with XML entities.
     - fill68: Any text. Wraps the text to fit in 68 columns.
     - fill76: Any text. Wraps the text to fit in 76 columns.
     - firstline: Any text. Returns the first line of text.
     - nonempty: Any text. Returns '(none)' if the string is empty.
-    - hgdate: Date. Returns the date as a pair of numbers:
-          "1157407993 25200" (Unix timestamp, timezone offset).
+    - hgdate: Date. Returns the date as a pair of numbers: "1157407993 25200"
+          (Unix timestamp, timezone offset).
     - isodate: Date. Returns the date in ISO 8601 format.
     - localdate: Date. Converts a date to local date.
-    - obfuscate: Any text. Returns the input text rendered as a
-          sequence of XML entities.
+    - obfuscate: Any text. Returns the input text rendered as a sequence of
+          XML entities.
     - person: Any text. Returns the text before an email address.
-    - rfc822date: Date. Returns a date using the same format used
-          in email headers.
-    - short: Changeset hash. Returns the short form of a changeset
-          hash, i.e. a 12-byte hexadecimal string.
+    - rfc822date: Date. Returns a date using the same format used in email
+          headers.
+    - short: Changeset hash. Returns the short form of a changeset hash, i.e.
+          a 12-byte hexadecimal string.
     - shortdate: Date. Returns a date like "2006-09-18".
     - strip: Any text. Strips all leading and trailing whitespace.
-    - tabindent: Any text. Returns the text, with every line except
-          the first starting with a tab character.
-    - urlescape: Any text. Escapes all "special" characters. For
-          example, "foo bar" becomes "foo%20bar".
+    - tabindent: Any text. Returns the text, with every line except the first
+          starting with a tab character.
+    - urlescape: Any text. Escapes all "special" characters. For example, "foo
+          bar" becomes "foo%20bar".
     - user: Any text. Returns the user portion of an email address.
     ''')),
 
@@ -455,57 +439,53 @@
       https://[user[:pass]@]host[:port]/[path][#revision]
       ssh://[user[:pass]@]host[:port]/[path][#revision]
 
-    Paths in the local filesystem can either point to Mercurial
-    repositories or to bundle files (as created by 'hg bundle' or
-    'hg incoming --bundle').
+    Paths in the local filesystem can either point to Mercurial repositories
+    or to bundle files (as created by 'hg bundle' or 'hg incoming --bundle').
 
-    An optional identifier after # indicates a particular branch, tag,
-    or changeset to use from the remote repository. See also 'hg help
-    revisions'.
+    An optional identifier after # indicates a particular branch, tag, or
+    changeset to use from the remote repository. See also 'hg help revisions'.
 
-    Some features, such as pushing to http:// and https:// URLs are
-    only possible if the feature is explicitly enabled on the remote
-    Mercurial server.
+    Some features, such as pushing to http:// and https:// URLs are only
+    possible if the feature is explicitly enabled on the remote Mercurial
+    server.
 
     Some notes about using SSH with Mercurial:
-    - SSH requires an accessible shell account on the destination
-      machine and a copy of hg in the remote path or specified with as
-      remotecmd.
-    - path is relative to the remote user's home directory by default.
-      Use an extra slash at the start of a path to specify an absolute path:
+    - SSH requires an accessible shell account on the destination machine and
+      a copy of hg in the remote path or specified with as remotecmd.
+    - path is relative to the remote user's home directory by default. Use an
+      extra slash at the start of a path to specify an absolute path:
         ssh://example.com//tmp/repository
-    - Mercurial doesn't use its own compression via SSH; the right
-      thing to do is to configure it in your ~/.ssh/config, e.g.:
+    - Mercurial doesn't use its own compression via SSH; the right thing to do
+      is to configure it in your ~/.ssh/config, e.g.:
         Host *.mylocalnetwork.example.com
           Compression no
         Host *
           Compression yes
-      Alternatively specify "ssh -C" as your ssh command in your hgrc
-      or with the --ssh command line option.
+      Alternatively specify "ssh -C" as your ssh command in your hgrc or with
+      the --ssh command line option.
 
-    These URLs can all be stored in your hgrc with path aliases under
-    the [paths] section like so:
+    These URLs can all be stored in your hgrc with path aliases under the
+    [paths] section like so:
     [paths]
     alias1 = URL1
     alias2 = URL2
     ...
 
-    You can then use the alias for any command that uses a URL (for
-    example 'hg pull alias1' would pull from the 'alias1' path).
+    You can then use the alias for any command that uses a URL (for example
+    'hg pull alias1' would pull from the 'alias1' path).
 
-    Two path aliases are special because they are used as defaults
-    when you do not provide the URL to a command:
+    Two path aliases are special because they are used as defaults when you do
+    not provide the URL to a command:
 
     default:
-      When you create a repository with hg clone, the clone command
-      saves the location of the source repository as the new
-      repository's 'default' path. This is then used when you omit
-      path from push- and pull-like commands (including incoming and
-      outgoing).
+      When you create a repository with hg clone, the clone command saves the
+      location of the source repository as the new repository's 'default'
+      path. This is then used when you omit path from push- and pull-like
+      commands (including incoming and outgoing).
 
     default-push:
-      The push command will look for a path named 'default-push', and
-      prefer it over 'default' if both are defined.
+      The push command will look for a path named 'default-push', and prefer
+      it over 'default' if both are defined.
     ''')),
     (["extensions"], _("Using additional features"), extshelp),
 )