1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-05 07:21:24 +03:00

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.
This commit is contained in:
Peter Eisentraut
2011-07-24 00:25:29 +03:00
parent 988cccc620
commit 79b3ca06d8
4 changed files with 73 additions and 55 deletions

View File

@ -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);