mirror of
				https://github.com/MaskRay/ccls.git
				synced 2025-11-04 06:15:20 +00:00 
			
		
		
		
	textDocument/documentSymbol: support unopened files (#548)
This commit is contained in:
		
							parent
							
								
									06a04d5102
								
							
						
					
					
						commit
						a2ecd9a8f0
					
				@ -252,9 +252,9 @@ QueryFile *MessageHandler::findFile(const std::string &path, int *out_file_id) {
 | 
			
		||||
 | 
			
		||||
std::pair<QueryFile *, WorkingFile *>
 | 
			
		||||
MessageHandler::findOrFail(const std::string &path, ReplyOnce &reply,
 | 
			
		||||
                           int *out_file_id) {
 | 
			
		||||
                           int *out_file_id, bool allow_unopened) {
 | 
			
		||||
  WorkingFile *wf = wfiles->getFile(path);
 | 
			
		||||
  if (!wf) {
 | 
			
		||||
  if (!wf && !allow_unopened) {
 | 
			
		||||
    reply.notOpened(path);
 | 
			
		||||
    return {nullptr, nullptr};
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -236,7 +236,8 @@ struct MessageHandler {
 | 
			
		||||
  QueryFile *findFile(const std::string &path, int *out_file_id = nullptr);
 | 
			
		||||
  std::pair<QueryFile *, WorkingFile *> findOrFail(const std::string &path,
 | 
			
		||||
                                                   ReplyOnce &reply,
 | 
			
		||||
                                                   int *out_file_id = nullptr);
 | 
			
		||||
                                                   int *out_file_id = nullptr,
 | 
			
		||||
                                                   bool allow_unopened = false);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
  void bind(const char *method, void (MessageHandler::*handler)(JsonReader &));
 | 
			
		||||
 | 
			
		||||
@ -147,8 +147,8 @@ void MessageHandler::textDocument_documentSymbol(JsonReader &reader,
 | 
			
		||||
 | 
			
		||||
  int file_id;
 | 
			
		||||
  auto [file, wf] =
 | 
			
		||||
      findOrFail(param.textDocument.uri.getPath(), reply, &file_id);
 | 
			
		||||
  if (!wf)
 | 
			
		||||
      findOrFail(param.textDocument.uri.getPath(), reply, &file_id, true);
 | 
			
		||||
  if (!file)
 | 
			
		||||
    return;
 | 
			
		||||
  auto allows = [&](SymbolRef sym) { return !(sym.role & param.excludeRole); };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user