Re: [HACKERS] TODO item: add \# which lists line numbers, and allows command execution

2007-09-09 Thread Sibte Abbas
On 9/8/07, Sibte Abbas <[EMAIL PROTECTED]> wrote:
>
>
> Hi all,
>
> Realizing that the mentioned TODO item discussed at 
> http://archives.postgresql.org/pgsql-hackers/2006-12/msg00255.php
>  can be
> useful for myself and others as well, I would like to go ahead and implement
> it.
>
> Synopsis:
> ==
>
> Sticking to the syntax and semantics which Joshua already mentioned in the
> thread:
>
> \#: displays the command history. Like \s but prefixes the lines with line
> numbers
>
> \# : executes the command(if any) executed at the line specified
> by line_no
>
>
> Display the history contents:
> =
>
> Well the answer to this pretty much lies in the \s (without any filename)
> implementation. However \s simply writes the contents of the history to the
> TTY while \# would prefix all the history lines with their respective line
> numbers.
>
> Because of this difference, we'll have to employ a more flexible approach
> rather than simply using the write_history() function.
>
> A solution to this is to use history_list() function to get a list of
> HIST_ENTRY structures and simply display them as per our needs i.e. to
> prefix each line with incrementing numbers in our case.
>
> Execute a line based on line number:
> ==
>
> For this we can simply use the history_get(int offset) function of the gnu
> history api to return a HIST_ENTRY structure corresponding to the given
> offset.
>
> The returned HIST_ENTRY can then be used to access the command that was
> executed at that specific line number.
>
> Comments are welcomed.
>
> regards,
> --
> Sibte Abbas
>


Patch submitted to pgsql-patches.

regards,
-- 
Sibte Abbas


[HACKERS] TODO item: add \# which lists line numbers, and allows command execution

2007-09-08 Thread Sibte Abbas
Hi all,

Realizing that the mentioned TODO item discussed at
http://archives.postgresql.org/pgsql-hackers/2006-12/msg00255.phpcan
be useful for myself and others as well, I would like to go ahead and
implement it.

Synopsis:
==

Sticking to the syntax and semantics which Joshua already mentioned in the
thread:

\#: displays the command history. Like \s but prefixes the lines with line
numbers

\# : executes the command(if any) executed at the line specified by
line_no


Display the history contents:
=

Well the answer to this pretty much lies in the \s (without any filename)
implementation. However \s simply writes the contents of the history to the
TTY while \# would prefix all the history lines with their respective line
numbers.

Because of this difference, we'll have to employ a more flexible approach
rather than simply using the write_history() function.

A solution to this is to use history_list() function to get a list of
HIST_ENTRY structures and simply display them as per our needs i.e. to
prefix each line with incrementing numbers in our case.

Execute a line based on line number:
==

For this we can simply use the history_get(int offset) function of the gnu
history api to return a HIST_ENTRY structure corresponding to the given
offset.

The returned HIST_ENTRY can then be used to access the command that was
executed at that specific line number.

Comments are welcomed.

regards,
-- 
Sibte Abbas