/* Interface between gdb and its extension languages.
- Copyright (C) 2014-2019 Free Software Foundation, Inc.
+ Copyright (C) 2014-2020 Free Software Foundation, Inc.
This file is part of GDB.
have "ext_lang" in the name, and no other symbol in gdb does. */
#include "defs.h"
-
-/* Standard C includes. */
#include <signal.h>
-
-/* Local non-gdb includes. */
+#include "target.h"
#include "auto-load.h"
#include "breakpoint.h"
-#include "cli/cli-script.h"
#include "event-top.h"
-#include "extension-priv.h"
#include "extension.h"
-#include "guile/guile.h"
+#include "extension-priv.h"
#include "observable.h"
+#include "cli/cli-script.h"
#include "python/python.h"
-#include "target.h"
+#include "guile/guile.h"
/* Iterate over all external extension languages, regardless of whether the
support has been compiled in or not.
int i;
const struct extension_language_defn *extlang;
+ if (has_extension (file, extension_language_gdb.suffix))
+ return &extension_language_gdb;
+
ALL_EXTENSION_LANGUAGES (i, extlang)
{
if (has_extension (file, extlang->suffix))
return result_type;
}
+/* See extension.h. */
+
+gdb::optional<std::string>
+ext_lang_colorize (const std::string &filename, const std::string &contents)
+{
+ int i;
+ const struct extension_language_defn *extlang;
+ gdb::optional<std::string> result;
+
+ ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+ {
+ if (extlang->ops->colorize == nullptr)
+ continue;
+ result = extlang->ops->colorize (filename, contents);
+ if (result.has_value ())
+ return result;
+ }
+
+ return result;
+}
+
/* Called via an observer before gdb prints its prompt.
Iterate over the extension languages giving them a chance to
change the prompt. The first one to change the prompt wins,
}
}
+void _initialize_extension ();
void
-_initialize_extension (void)
+_initialize_extension ()
{
gdb::observers::before_prompt.attach (ext_lang_before_prompt);
}