mirror of
				https://github.com/MaskRay/ccls.git
				synced 2025-11-04 14:17:07 +00:00 
			
		
		
		
	working_files: normalize \r\n and \n to \n
Clients may normalize end-of-line sequences, thus cause a mismatch between index_lines and buffer_lines. Thanks to CXuesong for reporting this issue!
This commit is contained in:
		
							parent
							
								
									cafd2d4f77
								
							
						
					
					
						commit
						3594b66eee
					
				@ -12,7 +12,6 @@
 | 
			
		||||
#include <chrono>
 | 
			
		||||
#include <climits>
 | 
			
		||||
#include <numeric>
 | 
			
		||||
#include <sstream>
 | 
			
		||||
namespace chrono = std::chrono;
 | 
			
		||||
 | 
			
		||||
using namespace clang;
 | 
			
		||||
@ -43,13 +42,17 @@ Position GetPositionForOffset(const std::string &content, int offset) {
 | 
			
		||||
  return {line, col};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::vector<std::string> ToLines(const std::string &content) {
 | 
			
		||||
  std::vector<std::string> result;
 | 
			
		||||
  std::istringstream lines(content);
 | 
			
		||||
  std::string line;
 | 
			
		||||
  while (getline(lines, line))
 | 
			
		||||
    result.push_back(line);
 | 
			
		||||
  return result;
 | 
			
		||||
std::vector<std::string> ToLines(const std::string &c) {
 | 
			
		||||
  std::vector<std::string> ret;
 | 
			
		||||
  int last = 0, e = c.size();
 | 
			
		||||
  for (int i = 0; i < e; i++)
 | 
			
		||||
    if (c[i] == '\n') {
 | 
			
		||||
      ret.emplace_back(&c[last], i - last - (i && c[i - 1] == '\r'));
 | 
			
		||||
      last = i + 1;
 | 
			
		||||
    }
 | 
			
		||||
  if (last < e)
 | 
			
		||||
    ret.emplace_back(&c[last], e - last);
 | 
			
		||||
  return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Computes the edit distance of strings [a,a+la) and [b,b+lb) with Eugene W.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user