mirror of
				https://github.com/MaskRay/ccls.git
				synced 2025-11-04 06:15:20 +00:00 
			
		
		
		
	Add clang.excludeArgs and rename diagnostics.onType to onChange
This commit is contained in:
		
							parent
							
								
									0a51424c5c
								
							
						
					
					
						commit
						56da577df9
					
				@ -612,7 +612,7 @@ void DiagnosticQueryMain(ClangCompleteManager *manager) {
 | 
				
			|||||||
    // Fetching the completion request blocks until we have a request.
 | 
					    // Fetching the completion request blocks until we have a request.
 | 
				
			||||||
    ClangCompleteManager::DiagnosticRequest request =
 | 
					    ClangCompleteManager::DiagnosticRequest request =
 | 
				
			||||||
        manager->diagnostic_request_.Dequeue();
 | 
					        manager->diagnostic_request_.Dequeue();
 | 
				
			||||||
    if (!g_config->diagnostics.onType)
 | 
					    if (!g_config->diagnostics.onChange)
 | 
				
			||||||
      continue;
 | 
					      continue;
 | 
				
			||||||
    std::string path = request.document.uri.GetPath();
 | 
					    std::string path = request.document.uri.GetPath();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										17
									
								
								src/config.h
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								src/config.h
									
									
									
									
									
								
							@ -59,6 +59,9 @@ struct Config {
 | 
				
			|||||||
  SerializeFormat cacheFormat = SerializeFormat::Binary;
 | 
					  SerializeFormat cacheFormat = SerializeFormat::Binary;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  struct Clang {
 | 
					  struct Clang {
 | 
				
			||||||
 | 
					    // Arguments that should be excluded, e.g. ["-fopenmp", "-Wall"]
 | 
				
			||||||
 | 
					    std::vector<std::string> excludeArgs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Additional arguments to pass to clang.
 | 
					    // Additional arguments to pass to clang.
 | 
				
			||||||
    std::vector<std::string> extraArgs;
 | 
					    std::vector<std::string> extraArgs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -149,11 +152,11 @@ struct Config {
 | 
				
			|||||||
    //   xxx: at most every xxx milliseconds
 | 
					    //   xxx: at most every xxx milliseconds
 | 
				
			||||||
    int frequencyMs = 0;
 | 
					    int frequencyMs = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // If true, diagnostics will be reported in textDocument/didOpen.
 | 
					    // If true, diagnostics will be reported for textDocument/didChange.
 | 
				
			||||||
    bool onOpen = true;
 | 
					    bool onChange = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // If true, diagnostics from typing will be reported.
 | 
					    // If true, diagnostics will be reported for textDocument/didOpen.
 | 
				
			||||||
    bool onType = true;
 | 
					    bool onOpen = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    std::vector<std::string> whitelist;
 | 
					    std::vector<std::string> whitelist;
 | 
				
			||||||
  } diagnostics;
 | 
					  } diagnostics;
 | 
				
			||||||
@ -231,15 +234,15 @@ struct Config {
 | 
				
			|||||||
    int maxNum = 2000;
 | 
					    int maxNum = 2000;
 | 
				
			||||||
  } xref;
 | 
					  } xref;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
MAKE_REFLECT_STRUCT(Config::Clang, extraArgs, resourceDir);
 | 
					MAKE_REFLECT_STRUCT(Config::Clang, excludeArgs, extraArgs, resourceDir);
 | 
				
			||||||
MAKE_REFLECT_STRUCT(Config::ClientCapability, snippetSupport);
 | 
					MAKE_REFLECT_STRUCT(Config::ClientCapability, snippetSupport);
 | 
				
			||||||
MAKE_REFLECT_STRUCT(Config::CodeLens, localVariables);
 | 
					MAKE_REFLECT_STRUCT(Config::CodeLens, localVariables);
 | 
				
			||||||
MAKE_REFLECT_STRUCT(Config::Completion, caseSensitivity, dropOldRequests,
 | 
					MAKE_REFLECT_STRUCT(Config::Completion, caseSensitivity, dropOldRequests,
 | 
				
			||||||
                    detailedLabel, filterAndSort, includeBlacklist,
 | 
					                    detailedLabel, filterAndSort, includeBlacklist,
 | 
				
			||||||
                    includeMaxPathSize, includeSuffixWhitelist,
 | 
					                    includeMaxPathSize, includeSuffixWhitelist,
 | 
				
			||||||
                    includeWhitelist);
 | 
					                    includeWhitelist);
 | 
				
			||||||
MAKE_REFLECT_STRUCT(Config::Diagnostics, blacklist, frequencyMs, onOpen,
 | 
					MAKE_REFLECT_STRUCT(Config::Diagnostics, blacklist, frequencyMs, onChange,
 | 
				
			||||||
                    onType, whitelist)
 | 
					                    onOpen, whitelist)
 | 
				
			||||||
MAKE_REFLECT_STRUCT(Config::Highlight, lsRanges, blacklist, whitelist)
 | 
					MAKE_REFLECT_STRUCT(Config::Highlight, lsRanges, blacklist, whitelist)
 | 
				
			||||||
MAKE_REFLECT_STRUCT(Config::Index, blacklist, comments, enabled, multiVersion,
 | 
					MAKE_REFLECT_STRUCT(Config::Index, blacklist, comments, enabled, multiVersion,
 | 
				
			||||||
                    multiVersionBlacklist, multiVersionWhitelist, onDidChange,
 | 
					                    multiVersionBlacklist, multiVersionWhitelist, onDidChange,
 | 
				
			||||||
 | 
				
			|||||||
@ -32,6 +32,7 @@ using namespace ccls;
 | 
				
			|||||||
#include <clang/Frontend/CompilerInstance.h>
 | 
					#include <clang/Frontend/CompilerInstance.h>
 | 
				
			||||||
#include <clang/Tooling/CompilationDatabase.h>
 | 
					#include <clang/Tooling/CompilationDatabase.h>
 | 
				
			||||||
#include <llvm/ADT/ArrayRef.h>
 | 
					#include <llvm/ADT/ArrayRef.h>
 | 
				
			||||||
 | 
					#include <llvm/ADT/STLExtras.h>
 | 
				
			||||||
#include <llvm/ADT/StringSet.h>
 | 
					#include <llvm/ADT/StringSet.h>
 | 
				
			||||||
#include <llvm/Support/LineIterator.h>
 | 
					#include <llvm/Support/LineIterator.h>
 | 
				
			||||||
using namespace clang;
 | 
					using namespace clang;
 | 
				
			||||||
@ -96,7 +97,7 @@ struct ProjectProcessor {
 | 
				
			|||||||
          args.push_back(arg.substr(5));
 | 
					          args.push_back(arg.substr(5));
 | 
				
			||||||
      } else if (arg == "%clang") {
 | 
					      } else if (arg == "%clang") {
 | 
				
			||||||
        args.push_back(lang == LanguageId::Cpp ? "clang++" : "clang");
 | 
					        args.push_back(lang == LanguageId::Cpp ? "clang++" : "clang");
 | 
				
			||||||
      } else {
 | 
					      } else if (!llvm::is_contained(g_config->clang.excludeArgs, arg)) {
 | 
				
			||||||
        args.push_back(arg);
 | 
					        args.push_back(arg);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user