Here's a command I whipped up (note that the regexp is not particularly sophisticated). I can't really test it, unfortunately, so you may have to tinker with it.
(defun jump-to-file-and-line ()
"Reads a line in the form FILENAME:LINE and, assuming a
relative path, opens that file in another window and jumps to the
line."
(interactive)
(let ((line (buffer-substring-no-properties (point-at-bol) (point-at-eol))))
(string-match "\\(.*\\):\\([0-9]+\\)" line)
(let ((file (match-string 1 line))
(lnum (match-string 2 line)))
(when (and file (file-exists-p (concat default-directory file)))
(find-file-other-window (concat default-directory file))
(and lnum (goto-line (string-to-number lnum)))))))
next-error-function
and commandnext-error
. The idea is that you can define a suitablenext-error-function
value for your buffer/mode, and then take advantage of everything Emacs provides fornext-error
.