From 70a488878f97eeec09356054fc161b9f8e914257 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sun, 24 Jul 2011 00:25:29 +0300 Subject: 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. --- src/bin/psql/command.c | 19 +++++++++++-------- src/bin/psql/settings.h | 2 ++ 2 files changed, 13 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 378330b96ae..091a7a7e86a 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -1748,7 +1748,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; @@ -1763,14 +1763,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; } } @@ -1778,7 +1781,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); @@ -1793,7 +1796,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 7228f9d0eea..0d5c1fbf3d9 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%# " -- cgit v1.2.3