Index: src/bin/psql/command.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/psql/command.c,v
retrieving revision 1.177
diff -u -p -r1.177 command.c
--- src/bin/psql/command.c	5 Jan 2007 22:19:49 -0000	1.177
+++ src/bin/psql/command.c	8 Feb 2007 11:28:46 -0000
@@ -712,6 +712,45 @@ exec_command(const char *cmd,
 		free(pw2);
 	}
 
+	/* \prompt -- prompt and set variable */
+	else if (strcmp(cmd, "prompt") == 0)
+	{
+		char	   *opt = psql_scan_slash_option(scan_state,
+					OT_NORMAL, NULL, false);
+
+		if (!opt)
+		{
+			psql_error("\\%s: missing required argument\n", cmd);
+			success = false;
+		}
+		else
+		{
+			char	   *prompt_text;
+			char	   *result;
+
+			prompt_text = psql_scan_slash_option(scan_state,
+				OT_WHOLE_LINE, NULL, false);
+
+			if (!prompt_text)
+			{
+				prompt_text = malloc(strlen(opt) + 32);
+				sprintf(prompt_text, "Enter value for \"%s\": ", opt);
+			}
+
+			result = simple_prompt(prompt_text, 4096, true);
+
+			if (!SetVariable(pset.vars, opt, result))
+			{
+				psql_error("\\%s: error\n", cmd);
+				success = false;
+			}
+
+			free(result);
+			free(prompt_text);
+			free(opt);
+		}
+	}
+
 	/* \pset -- set printing parameters */
 	else if (strcmp(cmd, "pset") == 0)
 	{
Index: src/bin/psql/help.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/psql/help.c,v
retrieving revision 1.116
diff -u -p -r1.116 help.c
--- src/bin/psql/help.c	5 Jan 2007 22:19:49 -0000	1.116
+++ src/bin/psql/help.c	8 Feb 2007 11:28:46 -0000
@@ -161,7 +161,7 @@ slashUsage(unsigned short int pager)
 {
 	FILE	   *output;
 
-	output = PageOutput(67, pager);
+	output = PageOutput(69, pager);
 
 	/* if you add/remove a line here, change the row count above */
 
@@ -184,6 +184,8 @@ slashUsage(unsigned short int pager)
 	fprintf(output, _("  \\timing        toggle timing of commands (currently %s)\n"),
 			ON(pset.timing));
 	fprintf(output, _("  \\unset NAME    unset (delete) internal variable\n"));
+	fprintf(output, _("  \\prompt NAME [TEXT]\n"
+					  "                 prompt user and set internal variable\n"));
 	fprintf(output, _("  \\! [COMMAND]   execute command in shell or start interactive shell\n"));
 	fprintf(output, "\n");
 
Index: src/bin/psql/tab-complete.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/psql/tab-complete.c,v
retrieving revision 1.158
diff -u -p -r1.158 tab-complete.c
--- src/bin/psql/tab-complete.c	7 Feb 2007 00:52:35 -0000	1.158
+++ src/bin/psql/tab-complete.c	8 Feb 2007 11:28:47 -0000
@@ -542,7 +542,7 @@ psql_completion(char *text, int start, i
 		"\\e", "\\echo", "\\encoding",
 		"\\f", "\\g", "\\h", "\\help", "\\H", "\\i", "\\l",
 		"\\lo_import", "\\lo_export", "\\lo_list", "\\lo_unlink",
-		"\\o", "\\p", "\\password", "\\pset", "\\q", "\\qecho", "\\r",
+		"\\o", "\\p", "\\password", "\\prompt", "\\pset", "\\q", "\\qecho", "\\r",
 		"\\set", "\\t", "\\T",
 		"\\timing", "\\unset", "\\x", "\\w", "\\z", "\\!", NULL
 	};
