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:
@ -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);
|
||||
|
Reference in New Issue
Block a user