[clang] [clang-repl] adding documentation and information for %commands (PR #150348)
Aaron Danen via cfe-commits
cfe-commits at lists.llvm.org
Sat Jul 26 10:58:17 PDT 2025
https://github.com/aadanen updated https://github.com/llvm/llvm-project/pull/150348
>From 4e24cb20efa22e364d41026ae40aec470ff786aa Mon Sep 17 00:00:00 2001
From: Aaron Danen <aaron.danen at gmail.com>
Date: Wed, 23 Jul 2025 18:01:14 -0700
Subject: [PATCH 1/4] added undo to docs in same format as %quit
---
clang/docs/ClangRepl.rst | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/clang/docs/ClangRepl.rst b/clang/docs/ClangRepl.rst
index 5399036c123fb..9ef82df28ee43 100644
--- a/clang/docs/ClangRepl.rst
+++ b/clang/docs/ClangRepl.rst
@@ -197,6 +197,13 @@ Comments:
clang-repl> // Comments in Clang-Repl
clang-repl> /* Comments in Clang-Repl */
+Undo:
+=====
+
+.. code-block:: text
+
+ clang-repl>%undo
+
Closure or Termination:
=======================
>From 752e4906b633b1343a52338027fdc0a6e36d6288 Mon Sep 17 00:00:00 2001
From: Aaron Danen <aaron.danen at gmail.com>
Date: Sat, 26 Jul 2025 10:01:30 -0700
Subject: [PATCH 2/4] implemented %help
---
clang/tools/clang-repl/ClangRepl.cpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/clang/tools/clang-repl/ClangRepl.cpp b/clang/tools/clang-repl/ClangRepl.cpp
index 54b27782d3db3..c347b45306031 100644
--- a/clang/tools/clang-repl/ClangRepl.cpp
+++ b/clang/tools/clang-repl/ClangRepl.cpp
@@ -185,7 +185,7 @@ struct ReplListCompleter {
clang::Interpreter &MainInterp;
ReplListCompleter(clang::IncrementalCompilerBuilder &CB,
clang::Interpreter &Interp)
- : CB(CB), MainInterp(Interp){};
+ : CB(CB), MainInterp(Interp) {};
std::vector<llvm::LineEditor::Completion> operator()(llvm::StringRef Buffer,
size_t Pos) const;
@@ -370,6 +370,8 @@ int main(int argc, const char **argv) {
if (Input == R"(%undo)") {
if (auto Err = Interp->Undo())
llvm::logAllUnhandledErrors(std::move(Err), llvm::errs(), "error: ");
+ } else if (Input == R"(%help)") {
+ printf("clang-repl commands: { %%undo, %%quit }\n");
} else if (Input.rfind("%lib ", 0) == 0) {
if (auto Err = Interp->LoadDynamicLibrary(Input.data() + 5))
llvm::logAllUnhandledErrors(std::move(Err), llvm::errs(), "error: ");
>From 99e2421447d730e40513ed799ece85c73b6987ce Mon Sep 17 00:00:00 2001
From: Aaron Danen <aaron.danen at gmail.com>
Date: Sat, 26 Jul 2025 10:53:39 -0700
Subject: [PATCH 3/4] blurb about %help on startup. better %help format
---
clang/tools/clang-repl/ClangRepl.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/clang/tools/clang-repl/ClangRepl.cpp b/clang/tools/clang-repl/ClangRepl.cpp
index c347b45306031..540253e377d98 100644
--- a/clang/tools/clang-repl/ClangRepl.cpp
+++ b/clang/tools/clang-repl/ClangRepl.cpp
@@ -347,7 +347,11 @@ int main(int argc, const char **argv) {
}
}
+ const char *percent_commands = "%help\tlist clang-repl %commands\n"
+ "%undo\tundo the previous input\n"
+ "%quit\texit clang-repl\n";
if (OptInputs.empty()) {
+ printf("%%help for list of clang-repl commands\n");
llvm::LineEditor LE("clang-repl");
std::string Input;
LE.setListCompleter(ReplListCompleter(CB, *Interp));
@@ -371,7 +375,7 @@ int main(int argc, const char **argv) {
if (auto Err = Interp->Undo())
llvm::logAllUnhandledErrors(std::move(Err), llvm::errs(), "error: ");
} else if (Input == R"(%help)") {
- printf("clang-repl commands: { %%undo, %%quit }\n");
+ printf("%s\n", percent_commands);
} else if (Input.rfind("%lib ", 0) == 0) {
if (auto Err = Interp->LoadDynamicLibrary(Input.data() + 5))
llvm::logAllUnhandledErrors(std::move(Err), llvm::errs(), "error: ");
>From f1f6d9c4a951d02d65abf306b069d3102f91481e Mon Sep 17 00:00:00 2001
From: Aaron Danen <aaron.danen at gmail.com>
Date: Sat, 26 Jul 2025 10:57:41 -0700
Subject: [PATCH 4/4] small change to opener message
---
clang/tools/clang-repl/ClangRepl.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang/tools/clang-repl/ClangRepl.cpp b/clang/tools/clang-repl/ClangRepl.cpp
index 540253e377d98..c4718b208b586 100644
--- a/clang/tools/clang-repl/ClangRepl.cpp
+++ b/clang/tools/clang-repl/ClangRepl.cpp
@@ -351,7 +351,7 @@ int main(int argc, const char **argv) {
"%undo\tundo the previous input\n"
"%quit\texit clang-repl\n";
if (OptInputs.empty()) {
- printf("%%help for list of clang-repl commands\n");
+ printf("type %%help to list clang-repl commands\n");
llvm::LineEditor LE("clang-repl");
std::string Input;
LE.setListCompleter(ReplListCompleter(CB, *Interp));
More information about the cfe-commits
mailing list