1# Extended prompt. 2# Copyright (C) 2011-2013 Free Software Foundation, Inc. 3 4# This program is free software; you can redistribute it and/or modify 5# it under the terms of the GNU General Public License as published by 6# the Free Software Foundation; either version 3 of the License, or 7# (at your option) any later version. 8# 9# This program is distributed in the hope that it will be useful, 10# but WITHOUT ANY WARRANTY; without even the implied warranty of 11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12# GNU General Public License for more details. 13# 14# You should have received a copy of the GNU General Public License 15# along with this program. If not, see <http://www.gnu.org/licenses/>. 16 17"""GDB command for working with extended prompts.""" 18 19import gdb 20import gdb.prompt 21 22class _ExtendedPrompt(gdb.Parameter): 23 24 """Set the extended prompt. 25 26Usage: set extended-prompt VALUE 27 28Substitutions are applied to VALUE to compute the real prompt. 29 30The currently defined substitutions are: 31 32""" 33 # Add the prompt library's dynamically generated help to the 34 # __doc__ string. 35 __doc__ = __doc__ + gdb.prompt.prompt_help() 36 37 set_doc = "Set the extended prompt." 38 show_doc = "Show the extended prompt." 39 40 def __init__(self): 41 super(_ExtendedPrompt, self).__init__("extended-prompt", 42 gdb.COMMAND_SUPPORT, 43 gdb.PARAM_STRING_NOESCAPE) 44 self.value = '' 45 self.hook_set = False 46 47 def get_show_string (self, pvalue): 48 if self.value is not '': 49 return "The extended prompt is: " + self.value 50 else: 51 return "The extended prompt is not set." 52 53 def get_set_string (self): 54 if self.hook_set == False: 55 gdb.prompt_hook = self.before_prompt_hook 56 self.hook_set = True 57 return "" 58 59 def before_prompt_hook(self, current): 60 if self.value is not '': 61 newprompt = gdb.prompt.substitute_prompt(self.value) 62 return newprompt.replace('\\', '\\\\') 63 else: 64 return None 65 66_ExtendedPrompt() 67