                (t
                 (add-to-list 'unknown-tags tag))))))
         (forward-line))
+      (when (> max-file-field-length 0)
+        (goto-char (point-min))
+        (let (point)
+          (while (and (not (eobp))
+                      (setq point (next-single-char-property-change (point) 'ovirt-log-analyzer-file-field-length)))
+            (goto-char point)
+            (let ((length (get-char-property (point) 'ovirt-log-analyzer-file-field-length)))
+              (when (and length (< length max-file-field-length))
+                (let ((overlay (cl-find-if #'(lambda (o) (overlay-get o 'ovirt-log-analyzer-file-field-length)) (overlays-at (point)))))
+                  (overlay-put overlay 'after-string (make-string (- max-file-field-length length) ? )))))
+            (goto-char (1+ (point))))))
       (when unknown-tags
         (message "Unknown tags found: %s" (mapconcat #'identity unknown-tags "; "))))))
 

  (save-excursion
    (goto-char (point-min))
    (remove-overlays)
    (let ((unknown-tags '()))
      (while (not (eobp))
        (when (looking-at "[0-9][^|\n]*|[^|\n]*|\\( *\\([^|\n]*\\) |\\).*$")
          (let* ((beg (match-beginning 0))
                 (end (match-end 0))
                 (line-overlay (make-overlay beg end))
                 (tag-overlay (make-overlay (match-beginning 1) (match-end 1)))
                 (tag-list (split-string (match-string 2) "_")))
            (overlay-put line-overlay 'help-echo (mapconcat #'identity tag-list "; "))
            (overlay-put tag-overlay 'invisible t)
            (dolist (tag tag-list)
              (cond

;;; Major mode for inspecting oVirt log analyzer result output

(require 'cl-lib)
(require 'hl-line)

(defun ovirt-log-analyzer-show-log ()
  (interactive)
  (let ((file-reference (get-char-property (point) 'ovirt-log-analyzer-file-reference)))
    (unless file-reference
      (error "No file reference found"))
    (string-match "^ *\\(.*\\):\\([0-9]+\\)" file-reference)
    (let ((file (match-string 1 file-reference))
          (line (string-to-number (match-string 2 file-reference))))
      (find-file file)
      (goto-char 1)
      (forward-line (1- line)))))

(defun ovirt-log-analyzer-poi (search-function)
  (let ((point (funcall search-function (point) 'face)))
