28     if (filenames.empty()) {
 
   32     std::string path = 
".";
 
   33     for (std::string filename : filenames) {
 
   34         if (!filename.empty() && filename[0] == 
'/') {
 
   36         } 
else if (
existFile(path + 
"/" + filename)) {
 
   37             path = 
dirName(path + 
"/" + filename);
 
   45     return path + 
"/" + 
baseName(filenames.back());
 
   53     if (filename < otherFilename) {
 
   57     if (filename > otherFilename) {
 
   60     if (
start < other.start) {
 
   63     if (
start > other.start) {
 
   66     if (
end < other.end) {
 
   89     std::ifstream in(filename);
 
   94             in.ignore(std::numeric_limits<std::streamsize>::max(), 
'\n');
 
   99         bool prevWhitespace = 
false;
 
  100         bool afterFirstNonSpace = 
false;
 
  101         while ((c = in.get()) != 
'\n' && c != EOF) {
 
  107             if (std::isspace(c) != 0) {
 
  108                 if (afterFirstNonSpace && prevWhitespace && offsetColumn >= lineLen) {
 
  111                 prevWhitespace = 
true;
 
  113                 prevWhitespace = 
false;
 
  114                 afterFirstNonSpace = 
true;
 
  120         for (
int i = 1; 
i <= lineLen; 
i++) {
 
  121             char ch = (
i == offsetColumn) ? 
'^' : 
'-';