code: func hlLinesToRanges(startLine int, s string) ([][2]int, error) {
  	var ranges [][2]int
  	s = strings.TrimSpace(s)
  
  	if s == "" {
  		return ranges, nil
  	}
  
  	// Variants:
  	// 1 2 3 4
  	// 1-2 3-4
  	// 1-2 3
  	// 1 3-4
  	// 1    3-4
  	fields := strings.Split(s, " ")
  	for _, field := range fields {
  		field = strings.TrimSpace(field)
  		if field == "" {
  			continue
  		}
  		numbers := strings.Split(field, "-")
  		var r [2]int
  		first, err := strconv.Atoi(numbers[0])
  		if err != nil {
  			return ranges, err
  		}
  		first = first + startLine - 1
  		r[0] = first
  		if len(numbers) > 1 {
  			second, err := strconv.Atoi(numbers[1])
  			if err != nil {
  				return ranges, err
  			}
  			second = second + startLine - 1
  			r[1] = second
  		} else {
  			r[1] = first
  		}
  
  		ranges = append(ranges, r)
  	}
  	return ranges, nil
  
  }
docs: // startLine compansates for https://github.com/alecthomas/chroma/issues/30