Expose current 'print' settings to Python

PR python/17291 asks for access to the current print options.  While I
think this need is largely satisfied by the existence of
Value.format_string, it seemed to me that a bit more could be done.

First, while Value.format_string uses the user's settings, it does not
react to temporary settings such as "print/x".  This patch changes
this.

Second, there is no good way to examine the current settings (in
particular the temporary ones in effect for just a single "print").
This patch adds this as well.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=17291
This commit is contained in:
Tom Tromey
2022-06-06 09:54:45 -06:00
parent aa63b0a77e
commit c4a3dbaf11
10 changed files with 209 additions and 26 deletions

View File

@@ -1742,6 +1742,24 @@ pretty-printer for this value exists, then it is returned. If no such
printer exists, then this returns @code{None}.
@end defun
Normally, a pretty-printer can respect the user's print settings
(including temporarily applied settings, such as @samp{/x}) simply by
calling @code{Value.format_string} (@pxref{Values From Inferior}).
However, these settings can also be queried directly:
@findex gdb.print_options
@defun gdb.print_options ()
Return a dictionary whose keys are the valid keywords that can be
given to @code{Value.format_string}, and whose values are the user's
settings. During a @code{print} or other operation, the values will
reflect any flags that are temporarily in effect.
@smallexample
(gdb) python print (gdb.print_options ()['max_elements'])
200
@end smallexample
@end defun
@node Selecting Pretty-Printers
@subsubsection Selecting Pretty-Printers
@cindex selecting python pretty-printers