Function: evil-find-file-at-point-with-line
evil-find-file-at-point-with-line is an interactive and byte-compiled
function defined in evil-commands.el.
Signature
(evil-find-file-at-point-with-line)
Documentation
Open the file at point and go to position if present.
Supports positions in the following formats: "path:line path(line)",
"path:line:col" and "path(line,col)".
Key Bindings
Source Code
;; Defined in ~/.emacs.d/elpa/evil-20251108.138/evil-commands.el
(evil-define-command evil-find-file-at-point-with-line ()
"Open the file at point and go to position if present.
Supports positions in the following formats: \"path:line path(line)\",
\"path:line:col\" and \"path(line,col)\"."
(require 'ffap)
(let ((fname (ffap-file-at-point)))
(unless fname
(user-error "File does not exist."))
(let* ((line-number-pattern ":\\([0-9]+\\)\\=" ) ; path:line format
(line-number-pattern-alt "\\=(\\([0-9]+\\))") ; path(line) format
(line-and-column-numbers-pattern ":\\([0-9]+\\):\\([0-9]+\\)\\=") ; path:line:col format
(line-and-column-numbers-pattern-alt "\\=(\\([0-9]+\\),\\([0-9]+\\))") ; file(line,col) format
(get-number (lambda (pattern match-number backward)
(save-excursion
(goto-char (cadr ffap-string-at-point-region))
(and (if backward
(re-search-backward pattern (line-beginning-position) t)
(re-search-forward pattern (line-end-position) t))
(string-to-number (match-string match-number))))))
(line-number (or (funcall get-number line-and-column-numbers-pattern 1 t)
(funcall get-number line-and-column-numbers-pattern-alt 1 nil)
(funcall get-number line-number-pattern 1 t)
(funcall get-number line-number-pattern-alt 1 nil)))
(column-number (or (funcall get-number line-and-column-numbers-pattern 2 t)
(funcall get-number line-and-column-numbers-pattern-alt 2 nil))))
(evil-echo "%s, %s"
(if line-number (format "line: %s" line-number) "no line")
(if column-number (format "column: %s" column-number) "no column"))
(find-file-at-point fname)
(when line-number
(goto-char (point-min))
(forward-line (1- line-number))
(when column-number
(move-to-column (1- column-number)))))))