summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut2011-07-23 21:25:29 +0000
committerPeter Eisentraut2011-07-23 21:25:29 +0000
commit79b3ca06d820032ad84446e0a021b56422172d86 (patch)
tree79c06f79a72853e4bcd14138b70eb764d2dcc2bd
parent988cccc620dd8c16d77f88ede167b22056176324 (diff)
Change EDITOR_LINENUMBER_SWITCH to an environment variable
Also change "switch" to "arg" because "switch" is a bit of a sloppy term. So the environment variable is called PSQL_EDITOR_LINENUMBER_ARG. Set "+" as hardcoded default value on Unix (since "vi" is the hardcoded default editor), so many users won't have to configure this at all. Move the documentation around a bit to centralize the editor configuration under environment variables, rather than repeating bits of it under every backslash command that invokes an editor.
-rw-r--r--doc/src/sgml/ref/psql-ref.sgml103
-rw-r--r--doc/src/sgml/release-9.1.sgml2
-rw-r--r--src/bin/psql/command.c19
-rw-r--r--src/bin/psql/settings.h2
4 files changed, 72 insertions, 54 deletions
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 6385c78d1d..54fc3ee24e 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -1440,25 +1440,21 @@ testdb=>
<literal>\r</> to cancel.
</para>
- <tip>
<para>
- <application>psql</application> checks the environment
- variables <envar>PSQL_EDITOR</envar>, <envar>EDITOR</envar>, and
- <envar>VISUAL</envar> (in that order) for an editor to use. If
- all of them are unset, <filename>vi</filename> is used on Unix
- systems, <filename>notepad.exe</filename> on Windows systems.
+ If a line number is specified, <application>psql</application> will
+ position the cursor on the specified line of the file or query buffer.
+ Note that if a single all-digits argument is given,
+ <application>psql</application> assumes it is a line number,
+ not a file name.
</para>
- </tip>
+ <tip>
<para>
- If a line number is specified, <application>psql</application> will
- position the cursor on the specified line of the file or query buffer.
- This feature requires the <varname>EDITOR_LINENUMBER_SWITCH</varname>
- variable to be set, so that <application>psql</application> knows how
- to specify the line number to the editor. Note that if a single
- all-digits argument is given, <application>psql</application> assumes
- it is a line number not a file name.
+ See under <xref linkend="app-psql-environment"
+ endterm="app-psql-environment-title"> for how to configure and
+ customize your editor.
</para>
+ </tip>
</listitem>
</varlistentry>
@@ -1514,13 +1510,18 @@ Tue Oct 26 21:40:57 CEST 1999
<para>
If a line number is specified, <application>psql</application> will
- position the cursor on the specified line of the function body
- (note that the function body typically does not begin on the
- first line of the file).
- This feature requires the <varname>EDITOR_LINENUMBER_SWITCH</varname>
- variable to be set, so that <application>psql</application> knows how
- to specify the line number to the editor.
+ position the cursor on the specified line of the function body.
+ (Note that the function body typically does not begin on the first
+ line of the file.)
+ </para>
+
+ <tip>
+ <para>
+ See under <xref linkend="app-psql-environment"
+ endterm="app-psql-environment-title"> for how to configure and
+ customize your editor.
</para>
+ </tip>
</listitem>
</varlistentry>
@@ -2599,27 +2600,6 @@ bar
</varlistentry>
<varlistentry>
- <term><varname>EDITOR_LINENUMBER_SWITCH</varname></term>
- <listitem>
- <para>
- When <command>\edit</command> or <command>\ef</command> is used with a
- line number argument, this variable specifies the command-line switch
- used to pass the line number to the user's editor. For editors such
- as <productname>emacs</> or <productname>vi</>, you can simply set
- this variable to a plus sign. Include a trailing space in the value
- of the variable if there needs to be space between the switch name and
- the line number.
- Examples:
-
-<programlisting>
-\set EDITOR_LINENUMBER_SWITCH +
-\set EDITOR_LINENUMBER_SWITCH '--line '
-</programlisting>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
<term><varname>ENCODING</varname></term>
<listitem>
<para>
@@ -3167,8 +3147,8 @@ $endif
</refsect1>
- <refsect1>
- <title>Environment</title>
+ <refsect1 id="app-psql-environment">
+ <title id="app-psql-environment-title">Environment</title>
<variablelist>
@@ -3218,8 +3198,41 @@ $endif
<listitem>
<para>
- Editor used by the <command>\e</command> command. The variables
- are examined in the order listed; the first that is set is used.
+ Editor used by the <command>\e</command> and
+ <command>\ef</command> commands. The variables are examined in
+ the order listed; the first that is set is used.
+ </para>
+
+ <para>
+ The built-in default editors are <filename>vi</filename> on Unix
+ systems and <filename>notepad.exe</filename> on Windows systems.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><envar>PSQL_EDITOR_LINENUMBER_ARG</envar></term>
+
+ <listitem>
+ <para>
+ When <command>\e</command> or <command>\ef</command> is used
+ with a line number argument, this variable specifies the
+ command-line argument used to pass the starting line number to
+ the user's editor. For editors such as <productname>Emacs</> or
+ <productname>vi</>, this is a plus sign. Include a trailing
+ space in the value of the variable if there needs to be space
+ between the option name and the line number. Examples:
+<programlisting>
+PSQL_EDITOR_LINENUMBER_ARG='+'
+PSQL_EDITOR_LINENUMBER_ARG='--line '
+</programlisting>
+ </para>
+
+ <para>
+ The default is <literal>+</literal> on Unix systems
+ (corresponding to the default editor <filename>vi</filename>,
+ and useful for many other common editors); but there is no
+ default on Windows systems.
</para>
</listitem>
</varlistentry>
diff --git a/doc/src/sgml/release-9.1.sgml b/doc/src/sgml/release-9.1.sgml
index a4f8e2459f..6c812cb6c4 100644
--- a/doc/src/sgml/release-9.1.sgml
+++ b/doc/src/sgml/release-9.1.sgml
@@ -1994,7 +1994,7 @@
<para>
This is passed to the editor according to the
- <envar>EDITOR_LINENUMBER_SWITCH</> psql variable.
+ <envar>PSQL_EDITOR_LINENUMBER_ARG</> environment variable.
</para>
</listitem>
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index 16ff9e91e5..ad7a7da816 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -1753,7 +1753,7 @@ static bool
editFile(const char *fname, int lineno)
{
const char *editorName;
- const char *editor_lineno_switch = NULL;
+ const char *editor_lineno_arg = NULL;
char *sys;
int result;
@@ -1768,14 +1768,17 @@ editFile(const char *fname, int lineno)
if (!editorName)
editorName = DEFAULT_EDITOR;
- /* Get line number switch, if we need it. */
+ /* Get line number argument, if we need it. */
if (lineno > 0)
{
- editor_lineno_switch = GetVariable(pset.vars,
- "EDITOR_LINENUMBER_SWITCH");
- if (editor_lineno_switch == NULL)
+ editor_lineno_arg = getenv("PSQL_EDITOR_LINENUMBER_ARG");
+#ifdef DEFAULT_EDITOR_LINENUMBER_ARG
+ if (!editor_lineno_arg)
+ editor_lineno_arg = DEFAULT_EDITOR_LINENUMBER_ARG;
+#endif
+ if (!editor_lineno_arg)
{
- psql_error("EDITOR_LINENUMBER_SWITCH variable must be set to specify a line number\n");
+ psql_error("environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n");
return false;
}
}
@@ -1783,7 +1786,7 @@ editFile(const char *fname, int lineno)
/* Allocate sufficient memory for command line. */
if (lineno > 0)
sys = pg_malloc(strlen(editorName)
- + strlen(editor_lineno_switch) + 10 /* for integer */
+ + strlen(editor_lineno_arg) + 10 /* for integer */
+ 1 + strlen(fname) + 10 + 1);
else
sys = pg_malloc(strlen(editorName) + strlen(fname) + 10 + 1);
@@ -1798,7 +1801,7 @@ editFile(const char *fname, int lineno)
#ifndef WIN32
if (lineno > 0)
sprintf(sys, "exec %s %s%d '%s'",
- editorName, editor_lineno_switch, lineno, fname);
+ editorName, editor_lineno_arg, lineno, fname);
else
sprintf(sys, "exec %s '%s'",
editorName, fname);
diff --git a/src/bin/psql/settings.h b/src/bin/psql/settings.h
index 3aebf53299..2bb3f3153b 100644
--- a/src/bin/psql/settings.h
+++ b/src/bin/psql/settings.h
@@ -18,8 +18,10 @@
#if defined(WIN32) || defined(__CYGWIN__)
#define DEFAULT_EDITOR "notepad.exe"
+/* no DEFAULT_EDITOR_LINENUMBER_ARG for Notepad */
#else
#define DEFAULT_EDITOR "vi"
+#define DEFAULT_EDITOR_LINENUMBER_ARG "+"
#endif
#define DEFAULT_PROMPT1 "%/%R%# "