From 32fbe599784f80f08e7ecd4ebdde158797f0a5ff Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Mon, 12 Nov 2007 15:01:33 +0000 Subject: [PATCH] Merged revisions 58939-58946 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r58940 | martin.v.loewis | 2007-11-12 05:53:02 +0100 (Mon, 12 Nov 2007) | 3 lines Only set rl_completion_display_matches_hook if there is a Python hook function. Fixes #1425. ........ r58941 | martin.v.loewis | 2007-11-12 06:14:05 +0100 (Mon, 12 Nov 2007) | 2 lines Patch #1418: Make the AC_REPLACE_FUNCS object files actually work. ........ r58942 | walter.doerwald | 2007-11-12 11:01:33 +0100 (Mon, 12 Nov 2007) | 2 lines Fix TextCalendar.prweek(). This closes issue #1427. ........ --- Lib/calendar.py | 2 +- Makefile.pre.in | 3 ++ Modules/readline.c | 82 +++++++++++++++++++++++++--------------------- Python/hypot.c | 3 +- 4 files changed, 49 insertions(+), 41 deletions(-) diff --git a/Lib/calendar.py b/Lib/calendar.py index e8115180df8..071bc063d6c 100644 --- a/Lib/calendar.py +++ b/Lib/calendar.py @@ -263,7 +263,7 @@ class TextCalendar(Calendar): """ Print a single week (no newline). """ - print(self.week(theweek, width), end=' ') + print(self.formatweek(theweek, width), end=' ') def formatday(self, day, weekday, width): """ diff --git a/Makefile.pre.in b/Makefile.pre.in index c604fca38d1..2277a22cbdd 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -169,6 +169,8 @@ THREADOBJ= @THREADOBJ@ DLINCLDIR= @DLINCLDIR@ DYNLOADFILE= @DYNLOADFILE@ MACHDEP_OBJS= @MACHDEP_OBJS@ +LIBOBJDIR= Python/ +LIBOBJS= @LIBOBJS@ UNICODE_OBJS= @UNICODE_OBJS@ PYTHON= python$(EXE) @@ -276,6 +278,7 @@ PYTHON_OBJS= \ Python/pystrtod.o \ Python/formatter_unicode.o \ Python/$(DYNLOADFILE) \ + $(LIBOBJS) \ $(MACHDEP_OBJS) \ $(THREADOBJ) diff --git a/Modules/readline.c b/Modules/readline.c index 90a5cc75aa4..90529376b61 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -38,6 +38,10 @@ extern char **completion_matches(char *, rl_compentry_func_t *); #endif +static void +on_completion_display_matches_hook(char **matches, + int num_matches, int max_length); + /* Exported function to send one line to readline's init file parser */ @@ -208,8 +212,17 @@ static PyObject *pre_input_hook = NULL; static PyObject * set_completion_display_matches_hook(PyObject *self, PyObject *args) { - return set_hook("completion_display_matches_hook", + PyObject *result = set_hook("completion_display_matches_hook", &completion_display_matches_hook, args); +#ifdef HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK + /* We cannot set this hook globally, since it replaces the + default completion display. */ + rl_completion_display_matches_hook = + completion_display_matches_hook ? + (rl_compdisp_func_t *)on_completion_display_matches_hook : 0; +#endif + return result; + } PyDoc_STRVAR(doc_set_completion_display_matches_hook, @@ -668,44 +681,41 @@ static void on_completion_display_matches_hook(char **matches, int num_matches, int max_length) { - if (completion_display_matches_hook != NULL) { - int i; - PyObject *m, *s, *match; - PyObject *r; + int i; + PyObject *m, *s; + PyObject *r; #ifdef WITH_THREAD - PyGILState_STATE gilstate = PyGILState_Ensure(); + PyGILState_STATE gilstate = PyGILState_Ensure(); #endif - m = PyList_New(num_matches); - for (i = 0; i < num_matches; i++) { - s = PyUnicode_FromString(matches[i+1]); - if (s) { - PyList_SetItem(m, i, s); - } - else { - goto error; - } + m = PyList_New(num_matches); + for (i = 0; i < num_matches; i++) { + s = PyUnicode_FromString(matches[i+1]); + if (s) { + PyList_SetItem(m, i, s); } - r = PyObject_CallFunction(completion_display_matches_hook, - "sOi", matches[0], m, max_length); - - Py_DECREF(m), m=NULL; - - if (r == NULL || - (r != Py_None && PyInt_AsLong(r) == -1 && PyErr_Occurred())) { - goto error; + else { + goto error; } - - Py_DECREF(r); - goto done; - error: - PyErr_Clear(); - Py_XDECREF(m); - Py_XDECREF(r); - done: -#ifdef WITH_THREAD - PyGILState_Release(gilstate); -#endif } + r = PyObject_CallFunction(completion_display_matches_hook, + "sOi", matches[0], m, max_length); + + Py_DECREF(m), m=NULL; + + if (r == NULL || + (r != Py_None && PyInt_AsLong(r) == -1 && PyErr_Occurred())) { + goto error; + } + + Py_DECREF(r); + goto done; + error: + PyErr_Clear(); + Py_XDECREF(r); + done: +#ifdef WITH_THREAD + PyGILState_Release(gilstate); +#endif } @@ -786,10 +796,6 @@ setup_readline(void) rl_bind_key_in_map ('\t', rl_complete, emacs_meta_keymap); rl_bind_key_in_map ('\033', rl_complete, emacs_meta_keymap); /* Set our hook functions */ -#ifdef HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK - rl_completion_display_matches_hook = - (rl_compdisp_func_t *)on_completion_display_matches_hook; -#endif rl_startup_hook = (Function *)on_startup_hook; #ifdef HAVE_RL_PRE_INPUT_HOOK rl_pre_input_hook = (Function *)on_pre_input_hook; diff --git a/Python/hypot.c b/Python/hypot.c index 755d0c31c8e..9d3c0d0bac3 100644 --- a/Python/hypot.c +++ b/Python/hypot.c @@ -1,7 +1,6 @@ /* hypot() replacement */ -#include "pyconfig.h" -#include "pyport.h" +#include "Python.h" double hypot(double x, double y) {