1 # Extended prompt. 2 # Copyright (C) 2011-2014 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 19 import gdb 20 import gdb.prompt 21 22 class _ExtendedPrompt(gdb.Parameter): 23 24 """Set the extended prompt. 25 26 Usage: set extended-prompt VALUE 27 28 Substitutions are applied to VALUE to compute the real prompt. 29 30 The 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