_Posting own answer, it works but it has some limitations._


This is a wrapper for `vc-root-diff` which opens a fillscreen buffer, and jumps to the current file then the line/column (using search).

Ideally it would position the cursor using the diff line ranges, as long as you're on a unique within the file.


```lisp
;; Override pop-up-windows,
(defun vc-root-diff-fullscreen-and-jump-to-point () "
Open a diff of the repository in the current frame,
jumping to the file, then line if possible.
"
 (interactive)
 (let
 (
 (pop-up-windows nil)
 (current-filename (buffer-file-name))
 ;; TODO, parse the diff chunks instead of searching for plain text.
 ;; not urgent.
 (current-line
 (buffer-substring-no-properties
 (line-beginning-position)
 (line-end-position)))

 ;; Chars to move backwards (so we keep the same relative point).
 (point-offset (- (save-excursion (end-of-line) (point)) (point)))

 )
 (when (vc-root-diff nil)
 ;; It's possible we don't have a file.
 (when current-filename
 ;; Go to the file in the diff which we were previously viewing.
 (let
 (
 (current-filename-rel
 (file-relative-name
 current-filename default-directory)
 )
 )
 (when
 (search-forward-regexp
 (concat
 ;; Prefix '+++ '.
 "^\\++[[:blank:]]+"
 ;; Optional 'b/' (git quirk).
 "\\(\\|b/\\)"
 (regexp-quote current-filename-rel)
 ;; Optional ' (some text)' (subversion quirk).
 "\\(\\|[[:blank:]]+.*\\)"
 "$"
 )
 nil t 1
 )

 ;; Now search for the current line.
 (when
 (search-forward-regexp
 (concat
 ;; Space or '+' line prefix.
 "^\\( \\|\\+\\)"
 (regexp-quote current-line)
 "$"
 )
 nil t 1
 )
 (backward-char point-offset)
 )
 )
 )
 )
 )
 )
 )

```