mirror of https://github.com/python/cpython
Add get_history_item and replace_history_item functions to the readline
module. Closes patch #675551. My apologies to Michal Vitecek for taking so long to process this.
This commit is contained in:
parent
f0d5f7917e
commit
e5069019e7
|
@ -71,6 +71,16 @@ Return the current contents of history item at \var{index}.
|
|||
\versionadded{2.3}
|
||||
\end{funcdesc}
|
||||
|
||||
\begin{funcdesc}{remove_history_item}{pos}
|
||||
Remove history item specified by its position from the history.
|
||||
\versionadded{2.4}
|
||||
\end{funcdesc}
|
||||
|
||||
\begin{funcdesc}{replace_history_item}{pos, line}
|
||||
Replace history item specified by its position with the given line.
|
||||
\versionadded{2.4}
|
||||
\end{funcdesc}
|
||||
|
||||
\begin{funcdesc}{redisplay}{}
|
||||
Change what's displayed on the screen to reflect the current contents
|
||||
of the line buffer. \versionadded{2.3}
|
||||
|
@ -127,7 +137,6 @@ Get the readline word delimiters for tab-completion.
|
|||
Append a line to the history buffer, as if it was the last line typed.
|
||||
\end{funcdesc}
|
||||
|
||||
|
||||
\begin{seealso}
|
||||
\seemodule{rlcompleter}{Completion of Python identifiers at the
|
||||
interactive prompt.}
|
||||
|
|
10
Misc/NEWS
10
Misc/NEWS
|
@ -44,9 +44,12 @@ Extension modules
|
|||
Library
|
||||
-------
|
||||
|
||||
- patch #675551: Add get_history_item and replace_history_item functions
|
||||
to the readline module.
|
||||
|
||||
- bug #989672: pdb.doc and the help messages for the help_d and help_u methods
|
||||
of the pdb.Pdb class gives have been corrected. d(own) goes to a newer frame,
|
||||
u(p) to an older frame, not the other way around.
|
||||
of the pdb.Pdb class gives have been corrected. d(own) goes to a newer
|
||||
frame, u(p) to an older frame, not the other way around.
|
||||
|
||||
- bug #990669: os.path.realpath() will resolve symlinks before normalizing the
|
||||
path, as normalizing the path may alter the meaning of the path if it
|
||||
|
@ -82,6 +85,9 @@ Build
|
|||
- The --with-tsc flag to configure to enable VM profiling with the
|
||||
processor's timestamp counter now works on PPC platforms.
|
||||
|
||||
- patch #1006629: Define _XOPEN_SOURCE to 500 on Solaris 8/9 to match
|
||||
GCC's definition and avoid redefinition warnings.
|
||||
|
||||
C API
|
||||
-----
|
||||
|
||||
|
|
|
@ -294,6 +294,71 @@ PyDoc_STRVAR(doc_set_completer_delims,
|
|||
"set_completer_delims(string) -> None\n\
|
||||
set the readline word delimiters for tab-completion");
|
||||
|
||||
static PyObject *
|
||||
py_remove_history(PyObject *self, PyObject *args)
|
||||
{
|
||||
int entry_number;
|
||||
HIST_ENTRY *entry;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "i:remove_history", &entry_number))
|
||||
return NULL;
|
||||
entry = remove_history(entry_number);
|
||||
if (!entry) {
|
||||
char buf[80];
|
||||
PyOS_snprintf(buf, sizeof(buf),
|
||||
"No history item at position %i",
|
||||
entry_number);
|
||||
PyErr_SetString(PyExc_ValueError, buf);
|
||||
return NULL;
|
||||
}
|
||||
/* free memory allocated for the history entry */
|
||||
if (entry->line)
|
||||
free(entry->line);
|
||||
if (entry->data)
|
||||
free(entry->data);
|
||||
free(entry);
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(doc_remove_history,
|
||||
"remove_history(pos) -> None\n\
|
||||
remove history item given by its position");
|
||||
|
||||
static PyObject *
|
||||
py_replace_history(PyObject *self, PyObject *args)
|
||||
{
|
||||
int entry_number;
|
||||
char *line;
|
||||
HIST_ENTRY *old_entry;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "is:replace_history", &entry_number, &line)) {
|
||||
return NULL;
|
||||
}
|
||||
old_entry = replace_history_entry(entry_number, line, (void *)NULL);
|
||||
if (!old_entry) {
|
||||
char buf[80];
|
||||
PyOS_snprintf(buf, sizeof(buf),
|
||||
"No history item at position %i",
|
||||
entry_number);
|
||||
PyErr_SetString(PyExc_ValueError, buf);
|
||||
return NULL;
|
||||
}
|
||||
/* free memory allocated for the old history entry */
|
||||
if (old_entry->line)
|
||||
free(old_entry->line);
|
||||
if (old_entry->data)
|
||||
free(old_entry->data);
|
||||
free(old_entry);
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(doc_replace_history,
|
||||
"replace_history(pos, line) -> None\n\
|
||||
replaces history item given by its position with contents of line");
|
||||
|
||||
/* Add a line to the history buffer */
|
||||
|
||||
|
@ -493,6 +558,8 @@ static struct PyMethodDef readline_methods[] =
|
|||
{"set_completer_delims", set_completer_delims,
|
||||
METH_VARARGS, doc_set_completer_delims},
|
||||
{"add_history", py_add_history, METH_VARARGS, doc_add_history},
|
||||
{"remove_history_item", py_remove_history, METH_VARARGS, doc_remove_history},
|
||||
{"replace_history_item", py_replace_history, METH_VARARGS, doc_replace_history},
|
||||
{"get_completer_delims", get_completer_delims,
|
||||
METH_NOARGS, doc_get_completer_delims},
|
||||
|
||||
|
|
Loading…
Reference in New Issue