
Use the current frame's language to lookup commands provided by language plugins. This means commands like `language {objc,cplusplus} <command>` can be used directly, without using the `language <lang>` prefix. For example, when stopped on a C++ frame, `demangle _Z1fv` will run `language cplusplus demangle _Z1fv`. rdar://149882520
39 lines
1.5 KiB
C++
39 lines
1.5 KiB
C++
//===-- CommandObjectLanguage.cpp -----------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "CommandObjectLanguage.h"
|
|
|
|
|
|
|
|
#include "lldb/Target/LanguageRuntime.h"
|
|
|
|
using namespace lldb;
|
|
using namespace lldb_private;
|
|
|
|
CommandObjectLanguage::CommandObjectLanguage(CommandInterpreter &interpreter)
|
|
: CommandObjectMultiword(
|
|
interpreter, "language", "Commands specific to a source language.",
|
|
"language <language-name> <subcommand> [<subcommand-options>]") {
|
|
// Let the LanguageRuntime populates this command with subcommands
|
|
LanguageRuntime::InitializeCommands(this);
|
|
SetHelpLong(
|
|
R"(
|
|
Language specific subcommands may be used directly (without the `language
|
|
<language-name>` prefix), when stopped on a frame written in that language. For
|
|
example, from a C++ frame, users may run `demangle` directly, instead of
|
|
`language cplusplus demangle`.
|
|
|
|
Language specific subcommands are only available when the command name cannot be
|
|
misinterpreted. Take the `demangle` command for example, if a Python command
|
|
named `demangle-tree` were loaded, then the invocation `demangle` would run
|
|
`demangle-tree`, not `language cplusplus demangle`.
|
|
)");
|
|
}
|
|
|
|
CommandObjectLanguage::~CommandObjectLanguage() = default;
|