[clang-tools-extra] 814c0bb - [clangd] Add flag to control #import include insertions
David Goldman via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 9 07:04:06 PST 2023
Author: David Goldman
Date: 2023-01-09T09:48:29-05:00
New Revision: 814c0bb31660b2441c9a9a6eeaafc2e33c416842
URL: https://github.com/llvm/llvm-project/commit/814c0bb31660b2441c9a9a6eeaafc2e33c416842
DIFF: https://github.com/llvm/llvm-project/commit/814c0bb31660b2441c9a9a6eeaafc2e33c416842.diff
LOG: [clangd] Add flag to control #import include insertions
This will be disabled by default, hopefully we can enable for the next
major release.
Differential Revision: https://reviews.llvm.org/D139446
Added:
Modified:
clang-tools-extra/clangd/CodeComplete.h
clang-tools-extra/clangd/tool/ClangdMain.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clangd/CodeComplete.h b/clang-tools-extra/clangd/CodeComplete.h
index 44482d1047294..a7c1ae95dcbf4 100644
--- a/clang-tools-extra/clangd/CodeComplete.h
+++ b/clang-tools-extra/clangd/CodeComplete.h
@@ -70,6 +70,10 @@ struct CodeCompleteOptions {
NeverInsert,
} InsertIncludes = IncludeInsertion::IWYU;
+ /// Whether include insertions for Objective-C code should use #import instead
+ /// of #include.
+ bool ImportInsertions = false;
+
/// A visual indicator to prepend to the completion label to indicate whether
/// completion result would trigger an #include insertion or not.
struct IncludeInsertionIndicator {
diff --git a/clang-tools-extra/clangd/tool/ClangdMain.cpp b/clang-tools-extra/clangd/tool/ClangdMain.cpp
index 4cdfb1a8b4449..06cfdcc1ca233 100644
--- a/clang-tools-extra/clangd/tool/ClangdMain.cpp
+++ b/clang-tools-extra/clangd/tool/ClangdMain.cpp
@@ -264,6 +264,14 @@ opt<CodeCompleteOptions::IncludeInsertion> HeaderInsertion{
"Never insert #include directives as part of code completion")),
};
+opt<bool> ImportInsertions{
+ "import-insertions",
+ cat(Features),
+ desc("If header insertion is enabled, add #import directives when "
+ "accepting code completions or fixing includes in Objective-C code"),
+ init(CodeCompleteOptions().ImportInsertions),
+};
+
opt<bool> IncludeCleanerStdlib{
"include-cleaner-stdlib",
cat(Features),
@@ -913,6 +921,7 @@ clangd accepts flags on the commandline, and in the CLANGD_FLAGS environment var
Opts.CodeComplete.BundleOverloads = CompletionStyle != Detailed;
Opts.CodeComplete.ShowOrigins = ShowOrigins;
Opts.CodeComplete.InsertIncludes = HeaderInsertion;
+ Opts.CodeComplete.ImportInsertions = ImportInsertions;
if (!HeaderInsertionDecorators) {
Opts.CodeComplete.IncludeIndicator.Insert.clear();
Opts.CodeComplete.IncludeIndicator.NoInsert.clear();
More information about the cfe-commits
mailing list