6f11e6824e
When the user toggles "set style enabled", the TUI should react by redrawing the source window, if necessary. This patch implements this behavior. No test because the TUI is generally not tested. This version of the patch incorporates Pedro's patch to provide a clean way to force the TUI to update the source window's contents. gdb/ChangeLog 2019-03-14 Pedro Alves <palves@redhat.com> Tom Tromey <tromey@adacore.com> * tui/tui-winsource.h (tui_refill_source_window): Declare. * tui/tui-winsource.c (tui_refill_source_window): New function, from... (tui_horizontal_source_scroll): ... here. Move some logic. * cli/cli-style.c (set_style_enabled): Notify new observable. * tui/tui-hooks.c (tui_redisplay_source): New function. (tui_attach_detach_observers): Attach or detach tui_redisplay_source. * observable.h (source_styling_changed): New observable. * observable.c: Define source_styling_changed observable.
101 lines
3.1 KiB
C
101 lines
3.1 KiB
C
/* GDB Notifications to Observers.
|
|
|
|
Copyright (C) 2003-2019 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#include "defs.h"
|
|
#include "observable.h"
|
|
#include "command.h"
|
|
#include "gdbcmd.h"
|
|
|
|
namespace gdb
|
|
{
|
|
|
|
namespace observers
|
|
{
|
|
|
|
unsigned int observer_debug;
|
|
|
|
#define DEFINE_OBSERVABLE(name) decltype (name) name (# name)
|
|
|
|
DEFINE_OBSERVABLE (normal_stop);
|
|
DEFINE_OBSERVABLE (signal_received);
|
|
DEFINE_OBSERVABLE (end_stepping_range);
|
|
DEFINE_OBSERVABLE (signal_exited);
|
|
DEFINE_OBSERVABLE (exited);
|
|
DEFINE_OBSERVABLE (no_history);
|
|
DEFINE_OBSERVABLE (sync_execution_done);
|
|
DEFINE_OBSERVABLE (command_error);
|
|
DEFINE_OBSERVABLE (target_changed);
|
|
DEFINE_OBSERVABLE (executable_changed);
|
|
DEFINE_OBSERVABLE (inferior_created);
|
|
DEFINE_OBSERVABLE (record_changed);
|
|
DEFINE_OBSERVABLE (solib_loaded);
|
|
DEFINE_OBSERVABLE (solib_unloaded);
|
|
DEFINE_OBSERVABLE (new_objfile);
|
|
DEFINE_OBSERVABLE (free_objfile);
|
|
DEFINE_OBSERVABLE (new_thread);
|
|
DEFINE_OBSERVABLE (thread_exit);
|
|
DEFINE_OBSERVABLE (thread_stop_requested);
|
|
DEFINE_OBSERVABLE (target_resumed);
|
|
DEFINE_OBSERVABLE (about_to_proceed);
|
|
DEFINE_OBSERVABLE (breakpoint_created);
|
|
DEFINE_OBSERVABLE (breakpoint_deleted);
|
|
DEFINE_OBSERVABLE (breakpoint_modified);
|
|
DEFINE_OBSERVABLE (traceframe_changed);
|
|
DEFINE_OBSERVABLE (architecture_changed);
|
|
DEFINE_OBSERVABLE (thread_ptid_changed);
|
|
DEFINE_OBSERVABLE (inferior_added);
|
|
DEFINE_OBSERVABLE (inferior_appeared);
|
|
DEFINE_OBSERVABLE (inferior_exit);
|
|
DEFINE_OBSERVABLE (inferior_removed);
|
|
DEFINE_OBSERVABLE (memory_changed);
|
|
DEFINE_OBSERVABLE (before_prompt);
|
|
DEFINE_OBSERVABLE (gdb_datadir_changed);
|
|
DEFINE_OBSERVABLE (command_param_changed);
|
|
DEFINE_OBSERVABLE (tsv_created);
|
|
DEFINE_OBSERVABLE (tsv_deleted);
|
|
DEFINE_OBSERVABLE (tsv_modified);
|
|
DEFINE_OBSERVABLE (inferior_call_pre);
|
|
DEFINE_OBSERVABLE (inferior_call_post);
|
|
DEFINE_OBSERVABLE (register_changed);
|
|
DEFINE_OBSERVABLE (user_selected_context_changed);
|
|
DEFINE_OBSERVABLE (source_styling_changed);
|
|
|
|
} /* namespace observers */
|
|
} /* namespace gdb */
|
|
|
|
static void
|
|
show_observer_debug (struct ui_file *file, int from_tty,
|
|
struct cmd_list_element *c, const char *value)
|
|
{
|
|
fprintf_filtered (file, _("Observer debugging is %s.\n"), value);
|
|
}
|
|
|
|
void
|
|
_initialize_observer (void)
|
|
{
|
|
add_setshow_zuinteger_cmd ("observer", class_maintenance,
|
|
&gdb::observers::observer_debug, _("\
|
|
Set observer debugging."), _("\
|
|
Show observer debugging."), _("\
|
|
When non-zero, observer debugging is enabled."),
|
|
NULL,
|
|
show_observer_debug,
|
|
&setdebuglist, &showdebuglist);
|
|
}
|