From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic312-26.consmr.mail.ir2.yahoo.com (sonic312-26.consmr.mail.ir2.yahoo.com [77.238.178.97]) by sourceware.org (Postfix) with ESMTPS id 0D5DF389367E for ; Sat, 6 Mar 2021 17:35:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0D5DF389367E X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1615052127; bh=vy5JFQibAMQhvhd+1K+Yt1Yt1Is56lAzvWUTnz+pJks=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=KUdEDc2yFbgVwlx9w+3XxXCmMD1g5J0fsyOlkXBDvT9niXMx8A0+EkV3c578/042vHOcmgNgrUvo2qeHyD6n0fx6zTJguv6PHsOhfS87OPub1UMEGwZbV8WcRcUf63+wTCszMH13WJc87Y2GgKZ5GUjnpEbExFyqe4KKE51TPCOoerbruDOzDhE0XR0NaV51rmVPD89FAezz3P1yC171OuNOxugnbcirRZ8w3xLOSjc3r367uwxVTwVyJmyHFNchh7Zs8d/Cuc2GkCFyXNPcXZCb84IC6+K4bASpuRaZ9xG6HToRoZvMkgO87eIrl0cvQMm8e3DK2FrywL6R2ImCOQ== X-YMail-OSG: Y9q505kVM1lus8YzdcjX3Twr97dWk63_pozt34a35A6NS73lNJ1Igahhp1jy8gh ZBHEdQhtXh.oDEfihqFg383AsDB1t8MFIf5HOK2HT3NIE4SVhsQrbqsH1mHoCURRPjdlTTnwNyjW wf7oNc1iWZBDOoizfhyBSLswzh8Skx0gj51opW6gWOGRE1Cyxdty.t2Ehyd3gBz5gev7woCC3eCa zcOSVblLZOXHKXjLVlvN7fhJoSCasrLnsNFz8cxukN6NblEbiv98ZiUwKnkDh8UwT40toWrh3_Yp 06EzJZQoA.KJz8CVKieQbpArvTdSdwG1Eu03oO3P30TyvahTZAD7DdYbwSNj1LmWtzAuJZkO.iiw 9jYV9eQncS5DV9KCvksH0Ryz1F9mogYRDclP0t0VvoHg1Q5mOXedIzGhKsNq806vyk39NnjJbveF LWwtEgWKOCs3EChqetu7AggX1Wy15nVvWXr5HR3Og_JGjAQykK3n6ntjBUfDTO70CF_JuaYbDrs7 L4n93QhlHRZevQrw32guJpfvYRCgFFIRmB0pV29jSMCSgUigoxvL6wBcxmw3V3pZYZeaU0wHRFxi cVPsPyx_dtVVzXwl_w6EDtFsxwXe0F_PnlucI3ep4w2lQn3pCiyzyPBWNHFHn6hnfoslgk9VBF0U YT9bCjTmaO11wMDXcCvElhAkRi2sE7ZkrDMFWd_VmD8s2qBMlHlPHblXMUYi8tmRWVK7NbktAMXb TbbQSrGzh3fZggyTHrGkRKed.RQaPrwfwSgY.FB46A5gxN9.3YVomdL_d6RcFGey56NbqK8gachs rZWNEQsbyLf8h9wygnxFWFfws38CzqF0_54Su5gWu7RledL7k9xhVSMSaNuN8juVGc362Tv4n8AJ m.gEOKa09hTmeuGMemUeDw7.XH7Z94_8zxFUkV7R1XfrkDzSttaXi.EIxrdC.X7xxwFiK9u3wN2m V70kabuduyXlkpEqEvQo6NkllbpqS20FGAx6UGwcj42hy_S7MxlrJWg1cCzBpq2nSLXkvPRvEB1m o0QN2mRqf3KuTspz2kxDTRHW7tzC8QFr3Mk3gV4LNw1TIKo5QEWQ7R7QtDp4zah4nQwbtxS.XVvr Z.EZzd4HqLKIPVOKqy2qyOQQgJhs3H61yZHJnrfA46lYDlqFoKujQrZg.a.VMml85KjEAdrScSCO DRQmQwsWRdj__AfLmNndetidi78_9mbA.PicczcLZyAx6VK46p8nssVn3ffgZLeI0xtyQ92Y9W_V 2MOSoqQL0TqFaHEzKJSX1LFCEVGLUpJZPdv.9EX7rkP.t.J11qmITqVtLu841c3NOPI1Diwck..p O17xyjtUViehrDB1QO8yXp94YaesaaLptlmlU8Pl0CWQr0InnWSRtFuqXsduhONrVjTWuYmFPPBQ uWCH5lfOfLGKpHp75_hbUFvKwqiZ0Z4LEDf1DXl3dXK_25daBVIDjBtrwpNAH2.FJmwZo0NvoHbd j1zuY4WQrnIXOYEKqoA3DmRtNA6ogdW3_e8aT..Rcjnf_3KVhqBCPbG2RJ6K3HraioUyYOPwToSq AFZ6Oql_UvD8ZbO1elA.7nyhW9srl94g6pHwLBr39._biKd_idlT46Rl2dSpVDnhNPvYJe.JaUY5 Fgqq8BczdU1ES1eGDp.zVWhZdgcCVa6P10IptVXEILDAL9B0oudRqbEQYtec0QVIrwTXOddG93v4 D8Eung41a5NhSndjx9hRDdjIxwt9_yz3UIZnmlCzyBcvGPbL13uoQC.8sSoDpPVEWidx_Tj4RJFL TqblISj_vCN_X3.GY1TWox_h7zCSIQoTc0xEVYQsRL1m9rYraPUT.VgggPa9uA5saD8mSCuq4joG k0vhneZlJcTAoYasFqfrcSNAiZfY0sCUE.s1MFJkx5MhRd0_QuRDhVkp6l5aqZxsaHoz3lKPyXUs K9vUc2zzozQev_thu2asmeACP4rs0DUnCGMOLDgMOLp04RoJBRmg1_KNjUexYAs7lCNsAPmlnmg7 0lWV1entysOfdmxXT3KxMEi.48oA6b6wZEmSSZMxa9RPkxJKkoHjRvDU99.3bH46pxMgQbqdRFVR qoncdlmVEHEuQl2_ZKZ.eiq7gmlO8iJCvwsb.Wspg.1B35eOpb9HfjiiDB8buUj7AqALWD_fVJ7p 10IPC9o.VxlvdfxNgaZpr7py0iDHLqfdv7CrSedtPxrTSLRBIIkJnYVlPopkt4dwhZpQ9crpUPPB b4pk.BKvhtULomevfhk9Ab.WbClXjA3i3k8SCcQ0afennyLHYJsPOlveV5N1vNIZLGKyCX9zvsPA C_NXCPKH12lr_h66kSIRhORLAM9yomvdlVauFuluAp9Y5S6oJRQ6xf01StFEzL0xIkQAsqQM9HnI YGLmqHvuPWAyBrfU.DXG0gOHVc1v6SWEHzqMFQ2HgCgmGZc3GNWiYMAnVD4N8as1BXhMdcqyxhem 9AGckGiZj4k2zu205W4I- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic312.consmr.mail.ir2.yahoo.com with HTTP; Sat, 6 Mar 2021 17:35:27 +0000 Received: by smtp401.mail.ir2.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 6a363949cca5081319e57edf8d5c0acc; Sat, 06 Mar 2021 17:35:25 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH 09/22] Implement cccw TUI command Date: Sat, 6 Mar 2021 18:34:04 +0100 Message-Id: <20210306173417.21528-10-ssbssa@yahoo.de> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210306173417.21528-1-ssbssa@yahoo.de> References: <20210306173417.21528-1-ssbssa@yahoo.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Antivirus: Avast (VPS 210306-0, 03/06/2021), Outbound message X-Antivirus-Status: Clean X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Mar 2021 17:35:29 -0000 This makes it possible to create a TUI window that always shows the output of some gdb command, e.g.: (gdb) cccw shared-libs "info sharedlibrary" This creates a window named "shared-libs", and shows the output of "info sharedlibrary". --- gdb/python/lib/gdb/command/tui_windows.py | 42 +++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/gdb/python/lib/gdb/command/tui_windows.py b/gdb/python/lib/gdb/command/tui_windows.py index 3572d2e3312..3177e601341 100644 --- a/gdb/python/lib/gdb/command/tui_windows.py +++ b/gdb/python/lib/gdb/command/tui_windows.py @@ -701,6 +701,48 @@ gdb.register_window_type("threads", ThreadsWindow) gdb.register_window_type("frames", FramesWindow) +class CustomCommandWindow(TextWindow): + def __init__(self, win, title, command): + super(CustomCommandWindow, self).__init__(win, title) + self.commands = command.splitlines() + + def refill(self): + if not self.win.is_valid(): + return + self.lines = [] + for c in self.commands: + try: + self.lines.extend([octal_escape(l) for l in gdb.execute(c, to_string=True).split("\n")]) + if (self.lines and not self.lines[-1]): + del self.lines[-1] + except: + self.lines.append(str(sys.exc_info()[1])) + self.redraw() + +class CustomCommandWindowFactory: + def __init__(self, title, command): + self.title = title + self.command = command + + def __call__(self, win): + return CustomCommandWindow(win, self.title, self.command) + +class CreateCustomCommandWindow(gdb.Command): + """Create custom command window.""" + + def __init__(self): + super(CreateCustomCommandWindow, self).__init__("cccw", gdb.COMMAND_TUI) + + def invoke(self, arg, from_tty): + self.dont_repeat() + argv = gdb.string_to_argv(arg) + if len(argv) != 2: + raise gdb.GdbError("This expects the 2 arguments title and command.") + gdb.register_window_type(argv[0], CustomCommandWindowFactory(argv[0], argv[1])) + +CreateCustomCommandWindow() + + def var_change_handler(event=None): global custom_windows for key, value in custom_windows.items(): -- 2.30.1