Thread: psql \? help display

psql \? help display

From
Bruce Momjian
Date:
I promised to review our psql \? output to see if I could improve it,
particularly the "General" section at the top.  Below are the results.

Are the new sections ideal, and in the best ordering?  Should \copyright
be kept in "General" at the top?  Should \? be listed?

I also pulled up some descriptive text that caused the options to have
blank lines between them.

---------------------------------------------------------------------------

General \copyright     show PostgreSQL usage and distribution terms \h [NAME]      help on syntax of SQL commands, *
forall commands \q             quit psql
 

Query Buffer \e [FILE]      edit the query buffer (or file) with external editor \g [FILE]      send query buffer to
server(and results to file or |pipe) \p             show the contents of the query buffer \r             reset (clear)
thequery buffer \s [FILE]      display history or save it to file \w FILE        write query buffer to file
 

Input/Output \echo [STRING] write string to standard output \i FILE        execute commands from file \o [FILE]
sendall query results to file or |pipe \qecho [STRING] write string to query output stream (see \o)
 

Informational \d [NAME]      describe table, index, sequence, or view \d{t|i|s|v|S} [PATTERN] (add "+" for more detail)
              list tables/indexes/sequences/views/system tables \da [PATTERN]  list aggregate functions \db [PATTERN]
listtablespaces (add "+" for more detail) \dc [PATTERN]  list conversions \dC            list casts \dd [PATTERN]  show
commentfor object \dD [PATTERN]  list domains \df [PATTERN]  list functions (add "+" for more detail) \dF [PATTERN]
listtext search configurations (add "+" for more detail) \dFd [PATTERN] list text search dictionaries (add "+" for more
detail)\dFt [PATTERN] list text search templates \dFp [PATTERN] list text search parsers (add "+" for more detail) \dg
[PATTERN] list roles (groups) \dn [PATTERN]  list schemas (add "+" for more detail) \do [NAME]     list operators \dl
        list large objects, same as \lo_list \dp [PATTERN]  list table, view, and sequence access privileges \dT
[PATTERN] list data types (add "+" for more detail) \du [PATTERN]  list roles (users) \l             list all databases
(add"+" for more detail) \z [PATTERN]   list table, view, and sequence access privileges (same as \dp)
 

Formatting \a             toggle between unaligned and aligned output mode \C [STRING]    set table title, or unset if
none\f [STRING]    show or set field separator for unaligned query output \H             toggle HTML output mode
(currentlyoff) \pset NAME [VALUE]  set table output option                (NAME :=
{format|border|expanded|fieldsep|footer|null|               numericlocale|recordsep|tuples_only|title|tableattr|pager})
\t            show only rows (currently off) \T [STRING]    set HTML <table> tag attributes, or unset if none \x
    toggle expanded output (currently off)
 

Connection \c[onnect] [DBNAME|- USER|- HOST|- PORT|-]                connect to new database (currently "test")
\encoding[ENCODING]  show or set client encoding \password [USERNAME]  securely change the password for a user
 

External \cd [DIR]      change the current working directory \timing        toggle timing of commands (currently off)
\![COMMAND]   execute command in shell or start interactive shell
 

Variable \prompt [TEXT] NAME  prompt user to set internal variable \set [NAME [VALUE]]  set internal variable, or list
allif no parameters \unset NAME          unset (delete) internal variable
 

Copy, Large Object \copy ...      perform SQL COPY with data stream to the client host \lo_export LOBOID FILE
\lo_importFILE [COMMENT] \lo_list \lo_unlink LOBOID    large object operations
 

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: psql \? help display

From
Alvaro Herrera
Date:
Bruce Momjian wrote:
> I promised to review our psql \? output to see if I could improve it,
> particularly the "General" section at the top.  Below are the results.
> 
> Are the new sections ideal, and in the best ordering?  Should \copyright
> be kept in "General" at the top?  Should \? be listed?

Why do we have a section named "Copy, Large Objects"?  It would seem to
make sense to put the LO stuff on its own section.

> I also pulled up some descriptive text that caused the options to have
> blank lines between them.

It was like that to keep the alignment of descriptions.  It's a
judgement call of course, but personally I think the other way was
better.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


Re: psql \? help display

From
Bruce Momjian
Date:
Alvaro Herrera wrote:
> Bruce Momjian wrote:
> > I promised to review our psql \? output to see if I could improve it,
> > particularly the "General" section at the top.  Below are the results.
> >
> > Are the new sections ideal, and in the best ordering?  Should \copyright
> > be kept in "General" at the top?  Should \? be listed?
>
> Why do we have a section named "Copy, Large Objects"?  It would seem to
> make sense to put the LO stuff on its own section.

OK, new version attached.  I moved \copy into "External" and relabled
the section as just "Large Object" (singular?).

> > I also pulled up some descriptive text that caused the options to have
> > blank lines between them.
>
> It was like that to keep the alignment of descriptions.  It's a
> judgement call of course, but personally I think the other way was
> better.

Yea, I looked at that and though the description on a new line was
clearer it was harder to see the options in one glance.  Lack of line
breaks now makes the sections easier to identify.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
General
  \copyright     show PostgreSQL usage and distribution terms
  \h [NAME]      help on syntax of SQL commands, * for all commands
  \q             quit psql

Query Buffer
  \e [FILE]      edit the query buffer (or file) with external editor
  \g [FILE]      send query buffer to server (and results to file or |pipe)
  \p             show the contents of the query buffer
  \r             reset (clear) the query buffer
  \s [FILE]      display history or save it to file
  \w FILE        write query buffer to file

Input/Output
  \echo [STRING] write string to standard output
  \i FILE        execute commands from file
  \o [FILE]      send all query results to file or |pipe
  \qecho [STRING] write string to query output stream (see \o)

Informational
  \d [NAME]      describe table, index, sequence, or view
  \d{t|i|s|v|S} [PATTERN] (add "+" for more detail)
                 list tables/indexes/sequences/views/system tables
  \da [PATTERN]  list aggregate functions
  \db [PATTERN]  list tablespaces (add "+" for more detail)
  \dc [PATTERN]  list conversions
  \dC            list casts
  \dd [PATTERN]  show comment for object
  \dD [PATTERN]  list domains
  \df [PATTERN]  list functions (add "+" for more detail)
  \dF [PATTERN]  list text search configurations (add "+" for more detail)
  \dFd [PATTERN] list text search dictionaries (add "+" for more detail)
  \dFt [PATTERN] list text search templates
  \dFp [PATTERN] list text search parsers (add "+" for more detail)
  \dg [PATTERN]  list roles (groups)
  \dn [PATTERN]  list schemas (add "+" for more detail)
  \do [NAME]     list operators
  \dl            list large objects, same as \lo_list
  \dp [PATTERN]  list table, view, and sequence access privileges
  \dT [PATTERN]  list data types (add "+" for more detail)
  \du [PATTERN]  list roles (users)
  \l             list all databases (add "+" for more detail)
  \z [PATTERN]   list table, view, and sequence access privileges (same as \dp)

Formatting
  \a             toggle between unaligned and aligned output mode
  \C [STRING]    set table title, or unset if none
  \f [STRING]    show or set field separator for unaligned query output
  \H             toggle HTML output mode (currently off)
  \pset NAME [VALUE]  set table output option
                 (NAME := {format|border|expanded|fieldsep|footer|null|
                 numericlocale|recordsep|tuples_only|title|tableattr|pager})
  \t             show only rows (currently off)
  \T [STRING]    set HTML <table> tag attributes, or unset if none
  \x             toggle expanded output (currently off)

Connection
  \c[onnect] [DBNAME|- USER|- HOST|- PORT|-]
                 connect to new database (currently "test")
  \encoding [ENCODING]  show or set client encoding
  \password [USERNAME]  securely change the password for a user

External
  \cd [DIR]      change the current working directory
  \copy ...      perform SQL COPY with data stream to the client host
  \timing        toggle timing of commands (currently off)
  \! [COMMAND]   execute command in shell or start interactive shell

Variable
  \prompt [TEXT] NAME  prompt user to set internal variable
  \set [NAME [VALUE]]  set internal variable, or list all if no parameters
  \unset NAME          unset (delete) internal variable

Large Object
  \lo_export LOBOID FILE
  \lo_import FILE [COMMENT]
  \lo_list
  \lo_unlink LOBOID    large object operations

Re: psql \? help display

From
Shane Ambler
Date:
Bruce Momjian wrote:
> Alvaro Herrera wrote:
>> Bruce Momjian wrote:
>>> I promised to review our psql \? output to see if I could improve it,
>>> particularly the "General" section at the top.  Below are the results.
>>>
>>> Are the new sections ideal, and in the best ordering?  Should \copyright
>>> be kept in "General" at the top?  Should \? be listed?
>> Why do we have a section named "Copy, Large Objects"?  It would seem to
>> make sense to put the LO stuff on its own section.
> 
> OK, new version attached.  I moved \copy into "External" and relabled
> the section as just "Large Object" (singular?).
> 

I would think copy would fit better with i/o - basically a 
subset/variation of \i
external is more for executing external code than importing data.

Yes singular - all the others are singular. If we go plural variable and 
maybe connection would fit plural as well (or maybe after the multi 
connection patch)?




-- 

Shane Ambler
pgSQL (at) Sheeky (dot) Biz

Get Sheeky @ http://Sheeky.Biz


Re: psql \? help display

From
Bruce Momjian
Date:
Shane Ambler wrote:
> Bruce Momjian wrote:
> > Alvaro Herrera wrote:
> >> Bruce Momjian wrote:
> >>> I promised to review our psql \? output to see if I could improve it,
> >>> particularly the "General" section at the top.  Below are the results.
> >>>
> >>> Are the new sections ideal, and in the best ordering?  Should \copyright
> >>> be kept in "General" at the top?  Should \? be listed?
> >> Why do we have a section named "Copy, Large Objects"?  It would seem to
> >> make sense to put the LO stuff on its own section.
> >
> > OK, new version attached.  I moved \copy into "External" and relabled
> > the section as just "Large Object" (singular?).
> >
>
> I would think copy would fit better with i/o - basically a
> subset/variation of \i
> external is more for executing external code than importing data.

OK, new version attached.

> Yes singular - all the others are singular. If we go plural variable and
> maybe connection would fit plural as well (or maybe after the multi
> connection patch)?

OK, singular.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
General
  \copyright     show PostgreSQL usage and distribution terms
  \h [NAME]      help on syntax of SQL commands, * for all commands
  \q             quit psql

Query Buffer
  \e [FILE]      edit the query buffer (or file) with external editor
  \g [FILE]      send query buffer to server (and results to file or |pipe)
  \p             show the contents of the query buffer
  \r             reset (clear) the query buffer
  \s [FILE]      display history or save it to file
  \w FILE        write query buffer to file

Input/Output
  \copy ...      perform SQL COPY with data stream to the client host
  \echo [STRING] write string to standard output
  \i FILE        execute commands from file
  \o [FILE]      send all query results to file or |pipe
  \qecho [STRING] write string to query output stream (see \o)

Informational
  \d [NAME]      describe table, index, sequence, or view
  \d{t|i|s|v|S} [PATTERN] (add "+" for more detail)
                 list tables/indexes/sequences/views/system tables
  \da [PATTERN]  list aggregate functions
  \db [PATTERN]  list tablespaces (add "+" for more detail)
  \dc [PATTERN]  list conversions
  \dC            list casts
  \dd [PATTERN]  show comment for object
  \dD [PATTERN]  list domains
  \df [PATTERN]  list functions (add "+" for more detail)
  \dF [PATTERN]  list text search configurations (add "+" for more detail)
  \dFd [PATTERN] list text search dictionaries (add "+" for more detail)
  \dFt [PATTERN] list text search templates
  \dFp [PATTERN] list text search parsers (add "+" for more detail)
  \dg [PATTERN]  list roles (groups)
  \dn [PATTERN]  list schemas (add "+" for more detail)
  \do [NAME]     list operators
  \dl            list large objects, same as \lo_list
  \dp [PATTERN]  list table, view, and sequence access privileges
  \dT [PATTERN]  list data types (add "+" for more detail)
  \du [PATTERN]  list roles (users)
  \l             list all databases (add "+" for more detail)
  \z [PATTERN]   list table, view, and sequence access privileges (same as \dp)

Formatting
  \a             toggle between unaligned and aligned output mode
  \C [STRING]    set table title, or unset if none
  \f [STRING]    show or set field separator for unaligned query output
  \H             toggle HTML output mode (currently off)
  \pset NAME [VALUE]  set table output option
                 (NAME := {format|border|expanded|fieldsep|footer|null|
                 numericlocale|recordsep|tuples_only|title|tableattr|pager})
  \t             show only rows (currently off)
  \T [STRING]    set HTML <table> tag attributes, or unset if none
  \x             toggle expanded output (currently off)

Connection
  \c[onnect] [DBNAME|- USER|- HOST|- PORT|-]
                 connect to new database (currently "test")
  \encoding [ENCODING]  show or set client encoding
  \password [USERNAME]  securely change the password for a user

External
  \cd [DIR]      change the current working directory
  \timing        toggle timing of commands (currently off)
  \! [COMMAND]   execute command in shell or start interactive shell

Variable
  \prompt [TEXT] NAME  prompt user to set internal variable
  \set [NAME [VALUE]]  set internal variable, or list all if no parameters
  \unset NAME          unset (delete) internal variable

Large Object
  \lo_export LOBOID FILE
  \lo_import FILE [COMMENT]
  \lo_list
  \lo_unlink LOBOID    large object operations

Re: psql \? help display

From
Bruce Momjian
Date:
Patch applied, matching attached output.  More suggestions welcomed.

---------------------------------------------------------------------------

Bruce Momjian wrote:
> Shane Ambler wrote:
> > Bruce Momjian wrote:
> > > Alvaro Herrera wrote:
> > >> Bruce Momjian wrote:
> > >>> I promised to review our psql \? output to see if I could improve it,
> > >>> particularly the "General" section at the top.  Below are the results.
> > >>>
> > >>> Are the new sections ideal, and in the best ordering?  Should \copyright
> > >>> be kept in "General" at the top?  Should \? be listed?
> > >> Why do we have a section named "Copy, Large Objects"?  It would seem to
> > >> make sense to put the LO stuff on its own section.
> > >
> > > OK, new version attached.  I moved \copy into "External" and relabled
> > > the section as just "Large Object" (singular?).
> > >
> >
> > I would think copy would fit better with i/o - basically a
> > subset/variation of \i
> > external is more for executing external code than importing data.
>
> OK, new version attached.
>
> > Yes singular - all the others are singular. If we go plural variable and
> > maybe connection would fit plural as well (or maybe after the multi
> > connection patch)?
>
> OK, singular.
>
> --
>   Bruce Momjian  <bruce@momjian.us>        http://momjian.us
>   EnterpriseDB                             http://enterprisedb.com
>
>   + If your life is a hard drive, Christ can be your backup. +

> General
>   \copyright     show PostgreSQL usage and distribution terms
>   \h [NAME]      help on syntax of SQL commands, * for all commands
>   \q             quit psql
>
> Query Buffer
>   \e [FILE]      edit the query buffer (or file) with external editor
>   \g [FILE]      send query buffer to server (and results to file or |pipe)
>   \p             show the contents of the query buffer
>   \r             reset (clear) the query buffer
>   \s [FILE]      display history or save it to file
>   \w FILE        write query buffer to file
>
> Input/Output
>   \copy ...      perform SQL COPY with data stream to the client host
>   \echo [STRING] write string to standard output
>   \i FILE        execute commands from file
>   \o [FILE]      send all query results to file or |pipe
>   \qecho [STRING] write string to query output stream (see \o)
>
> Informational
>   \d [NAME]      describe table, index, sequence, or view
>   \d{t|i|s|v|S} [PATTERN] (add "+" for more detail)
>                  list tables/indexes/sequences/views/system tables
>   \da [PATTERN]  list aggregate functions
>   \db [PATTERN]  list tablespaces (add "+" for more detail)
>   \dc [PATTERN]  list conversions
>   \dC            list casts
>   \dd [PATTERN]  show comment for object
>   \dD [PATTERN]  list domains
>   \df [PATTERN]  list functions (add "+" for more detail)
>   \dF [PATTERN]  list text search configurations (add "+" for more detail)
>   \dFd [PATTERN] list text search dictionaries (add "+" for more detail)
>   \dFt [PATTERN] list text search templates
>   \dFp [PATTERN] list text search parsers (add "+" for more detail)
>   \dg [PATTERN]  list roles (groups)
>   \dn [PATTERN]  list schemas (add "+" for more detail)
>   \do [NAME]     list operators
>   \dl            list large objects, same as \lo_list
>   \dp [PATTERN]  list table, view, and sequence access privileges
>   \dT [PATTERN]  list data types (add "+" for more detail)
>   \du [PATTERN]  list roles (users)
>   \l             list all databases (add "+" for more detail)
>   \z [PATTERN]   list table, view, and sequence access privileges (same as \dp)
>
> Formatting
>   \a             toggle between unaligned and aligned output mode
>   \C [STRING]    set table title, or unset if none
>   \f [STRING]    show or set field separator for unaligned query output
>   \H             toggle HTML output mode (currently off)
>   \pset NAME [VALUE]  set table output option
>                  (NAME := {format|border|expanded|fieldsep|footer|null|
>                  numericlocale|recordsep|tuples_only|title|tableattr|pager})
>   \t             show only rows (currently off)
>   \T [STRING]    set HTML <table> tag attributes, or unset if none
>   \x             toggle expanded output (currently off)
>
> Connection
>   \c[onnect] [DBNAME|- USER|- HOST|- PORT|-]
>                  connect to new database (currently "test")
>   \encoding [ENCODING]  show or set client encoding
>   \password [USERNAME]  securely change the password for a user
>
> External
>   \cd [DIR]      change the current working directory
>   \timing        toggle timing of commands (currently off)
>   \! [COMMAND]   execute command in shell or start interactive shell
>
> Variable
>   \prompt [TEXT] NAME  prompt user to set internal variable
>   \set [NAME [VALUE]]  set internal variable, or list all if no parameters
>   \unset NAME          unset (delete) internal variable
>
> Large Object
>   \lo_export LOBOID FILE
>   \lo_import FILE [COMMENT]
>   \lo_list
>   \lo_unlink LOBOID    large object operations

>
> --
> Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: src/bin/psql/help.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/psql/help.c,v
retrieving revision 1.126
diff -c -c -r1.126 help.c
*** src/bin/psql/help.c    4 Apr 2008 18:00:25 -0000    1.126
--- src/bin/psql/help.c    14 May 2008 15:28:39 -0000
***************
*** 160,166 ****
  {
      FILE       *output;

!     output = PageOutput(69, pager);

      /* if you add/remove a line here, change the row count above */

--- 160,166 ----
  {
      FILE       *output;

!     output = PageOutput(78, pager);

      /* if you add/remove a line here, change the row count above */

***************
*** 169,193 ****
       * in 80 columns >> "
       */
      fprintf(output, _("General\n"));
-     fprintf(output, _("  \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n"
-             "                 connect to new database (currently \"%s\")\n"),
-             PQdb(pset.db));
-     fprintf(output, _("  \\cd [DIR]      change the current working directory\n"));
      fprintf(output, _("  \\copyright     show PostgreSQL usage and distribution terms\n"));
-     fprintf(output, _("  \\encoding [ENCODING]\n"
-                       "                 show or set client encoding\n"));
      fprintf(output, _("  \\h [NAME]      help on syntax of SQL commands, * for all commands\n"));
-     fprintf(output, _("  \\prompt [TEXT] NAME\n"
-                  "                 prompt user to set internal variable\n"));
-     fprintf(output, _("  \\password [USERNAME]\n"
-                  "                 securely change the password for a user\n"));
      fprintf(output, _("  \\q             quit psql\n"));
-     fprintf(output, _("  \\set [NAME [VALUE]]\n"
-                       "                 set internal variable, or list all if no parameters\n"));
-     fprintf(output, _("  \\timing        toggle timing of commands (currently %s)\n"),
-             ON(pset.timing));
-     fprintf(output, _("  \\unset NAME    unset (delete) internal variable\n"));
-     fprintf(output, _("  \\! [COMMAND]   execute command in shell or start interactive shell\n"));
      fprintf(output, "\n");

      fprintf(output, _("Query Buffer\n"));
--- 169,177 ----
***************
*** 202,212 ****
      fprintf(output, "\n");

      fprintf(output, _("Input/Output\n"));
      fprintf(output, _("  \\echo [STRING] write string to standard output\n"));
      fprintf(output, _("  \\i FILE        execute commands from file\n"));
      fprintf(output, _("  \\o [FILE]      send all query results to file or |pipe\n"));
!     fprintf(output, _("  \\qecho [STRING]\n"
!         "                 write string to query output stream (see \\o)\n"));
      fprintf(output, "\n");

      fprintf(output, _("Informational\n"));
--- 186,196 ----
      fprintf(output, "\n");

      fprintf(output, _("Input/Output\n"));
+     fprintf(output, _("  \\copy ...      perform SQL COPY with data stream to the client host\n"));
      fprintf(output, _("  \\echo [STRING] write string to standard output\n"));
      fprintf(output, _("  \\i FILE        execute commands from file\n"));
      fprintf(output, _("  \\o [FILE]      send all query results to file or |pipe\n"));
!     fprintf(output, _("  \\qecho [STRING] write string to query output stream (see \\o)\n"));
      fprintf(output, "\n");

      fprintf(output, _("Informational\n"));
***************
*** 241,248 ****
      fprintf(output, _("  \\f [STRING]    show or set field separator for unaligned query output\n"));
      fprintf(output, _("  \\H             toggle HTML output mode (currently %s)\n"),
              ON(pset.popt.topt.format == PRINT_HTML));
!     fprintf(output, _("  \\pset NAME [VALUE]\n"
!                       "                 set table output option\n"
                        "                 (NAME := {format|border|expanded|fieldsep|footer|null|\n"
                        "                 numericlocale|recordsep|tuples_only|title|tableattr|pager})\n"));
      fprintf(output, _("  \\t             show only rows (currently %s)\n"),
--- 225,231 ----
      fprintf(output, _("  \\f [STRING]    show or set field separator for unaligned query output\n"));
      fprintf(output, _("  \\H             toggle HTML output mode (currently %s)\n"),
              ON(pset.popt.topt.format == PRINT_HTML));
!     fprintf(output, _("  \\pset NAME [VALUE]  set table output option\n"
                        "                 (NAME := {format|border|expanded|fieldsep|footer|null|\n"
                        "                 numericlocale|recordsep|tuples_only|title|tableattr|pager})\n"));
      fprintf(output, _("  \\t             show only rows (currently %s)\n"),
***************
*** 252,259 ****
              ON(pset.popt.topt.expanded));
      fprintf(output, "\n");

!     fprintf(output, _("Copy, Large Object\n"));
!     fprintf(output, _("  \\copy ...      perform SQL COPY with data stream to the client host\n"));
      fprintf(output, _("  \\lo_export LOBOID FILE\n"
                        "  \\lo_import FILE [COMMENT]\n"
                        "  \\lo_list\n"
--- 235,262 ----
              ON(pset.popt.topt.expanded));
      fprintf(output, "\n");

!     fprintf(output, _("Connection\n"));
!     fprintf(output, _("  \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n"
!             "                 connect to new database (currently \"%s\")\n"),
!             PQdb(pset.db));
!     fprintf(output, _("  \\encoding [ENCODING]  show or set client encoding\n"));
!     fprintf(output, _("  \\password [USERNAME]  securely change the password for a user\n"));
!     fprintf(output, "\n");
!
!     fprintf(output, _("External\n"));
!     fprintf(output, _("  \\cd [DIR]      change the current working directory\n"));
!     fprintf(output, _("  \\timing        toggle timing of commands (currently %s)\n"),
!             ON(pset.timing));
!     fprintf(output, _("  \\! [COMMAND]   execute command in shell or start interactive shell\n"));
!     fprintf(output, "\n");
!
!     fprintf(output, _("Variable\n"));
!     fprintf(output, _("  \\prompt [TEXT] NAME  prompt user to set internal variable\n"));
!     fprintf(output, _("  \\set [NAME [VALUE]]  set internal variable, or list all if no parameters\n"));
!     fprintf(output, _("  \\unset NAME          unset (delete) internal variable\n"));
!     fprintf(output, "\n");
!
!     fprintf(output, _("Large Object\n"));
      fprintf(output, _("  \\lo_export LOBOID FILE\n"
                        "  \\lo_import FILE [COMMENT]\n"
                        "  \\lo_list\n"