ZyX_I avatar ZyX_I committed cd9de47

@aurum, @aurum/drivers/common/hypsites, @aurum/drivers/mercurial:
Purged out “cs” variable from repo.hypsites
Replaced “cs.hex” with new “hex” variable
Replaced “cs.smth” with rf-getrepoprop() call
@aurum/drivers/common/hypsites: Added missing “aline” and “hline” keys
to sourceforge subversion support dictionary

Comments (0)

Files changed (4)

     Local variables you can use in expressions:
         Variable   Description ~
         repo       Repository object (|aurum-repository|).
-        cs         Changeset object (|aurum-changeset|) (url≠clone,push).
+        hex        Changeset hash (|aurum-cs.hex|) (url≠clone,push).
         url        URL of remote repository from local repository 
                    configuration.
         protocol, user, domain, port, path
             \ 'uknurl': 'Failed to process url %s of repository %s',
             \ 'uunsup': 'Url type “%s” is not supported for repository %s '.
             \           'linked with %s',
+            \ 'ldirty': 'Cannot attach line number to a dirty file %s '.
+            \           'in the repository %s (dirty=having uncommited changes)',
             \'nofiles': 'No files were specified',
             \   'nogf': 'No files found',
             \  'nrepo': 'Not a repository: %s',
         if rev is 0
             if has_key(opts, 'line') && repo.functions.dirty(repo, file)
                 call remove(opts, 'line')
+                call s:_f.warn('ldirty', file, repo.path)
             endif
-            let cs=repo.functions.getwork(repo)
+            let hex=repo.functions.getworkhex(repo)
         else
-            let cs=repo.functions.getcs(repo, rev)
+            let hex=repo.functions.getrevhex(repo, rev)
         endif
     else
         let repo=s:_r.repo.get(a:opts.repo)
         call s:_r.cmdutils.checkrepo(repo)
         if utype is# 'bundle' || utype is# 'changeset' || utype is# 'log'
             if has_key(a:opts, 'rev')
-                let cs=repo.functions.getwork(repo)
+                let hex=repo.functions.getworkhex(repo)
             else
-                let cs=repo.functions.getcs(repo, a:opts.rev)
+                let hex=repo.functions.getrevhex(repo, a:opts.rev)
             endif
         endif
     endif

plugin/aurum/drivers/common/hypsites.vim

             \   '(0)))'
 unlet s:link
 let s:bbdict={
-\       'html': '"https://".domain.path."/src/".cs.hex."/".file',      'hline': '"cl-".line',
-\        'raw': '"https://".domain.path."/raw/".cs.hex."/".file',
-\   'annotate': '"https://".domain.path."/annotate/".cs.hex."/".file', 'aline': '"line-".line',
+\       'html': '"https://".domain.path."/src/".hex."/".file',      'hline': '"cl-".line',
+\        'raw': '"https://".domain.path."/raw/".hex."/".file',
+\   'annotate': '"https://".domain.path."/annotate/".hex."/".file', 'aline': '"line-".line',
 \   'filehist': '"https://".domain.path."/history/".file',
-\     'bundle': '"https://".domain.path."/get/".cs.hex.".tar.bz2"',
-\  'changeset': '"https://".domain.path."/changeset/".cs.hex',
+\     'bundle': '"https://".domain.path."/get/".hex.".tar.bz2"',
+\  'changeset': '"https://".domain.path."/changeset/".hex',
 \        'log': '"https://".domain.path."/changesets"',
 \      'clone': '"https://".domain.path',
 \       'push': '"ssh://hg@".domain.path',
             \                  'matchstr(path[:-4], "\\v[^/]+$")')
 unlet s:cbbase
 let s:hgwebdict={
-\       'html': '"http://".'.s:dport.'.path."/file/".cs.hex."/".file',     'hline': '"l".line',
-\        'raw': '"http://".'.s:dport.'.path."/raw-file/".cs.hex."/".file',
-\   'annotate': '"http://".'.s:dport.'.path."/annotate/".cs.hex."/".file', 'aline': '"l".line',
-\   'filehist': '"http://".'.s:dport.'.path."/log/".cs.hex."/".file',
-\  'changeset': '"http://".'.s:dport.'.path."/rev/".cs.hex',
+\       'html': '"http://".'.s:dport.'.path."/file/".hex."/".file',     'hline': '"l".line',
+\        'raw': '"http://".'.s:dport.'.path."/raw-file/".hex."/".file',
+\   'annotate': '"http://".'.s:dport.'.path."/annotate/".hex."/".file', 'aline': '"l".line',
+\   'filehist': '"http://".'.s:dport.'.path."/log/".hex."/".file',
+\  'changeset': '"http://".'.s:dport.'.path."/rev/".hex',
 \        'log': '"http://".'.s:dport.'.path."/graph"',
 \      'clone': '"http://".'.s:dport.'.path',
 \}
 let s:hyp.mercurial=[
 \['domain is? "bitbucket.org"', s:bbdict],
 \['domain =~? "\\Vhg.sourceforge.net\\$"',
-\ {     'html': '"http://".domain."/hgweb".path[7:]."/file/".cs.hex."/".file',     'hline': '"l".line',
-\        'raw': '"http://".domain."/hgweb".path[7:]."/raw-file/".cs.hex."/".file',
-\   'annotate': '"http://".domain."/hgweb".path[7:]."/annotate/".cs.hex."/".file', 'aline': '"l".line',
-\   'filehist': '"http://".domain."/hgweb".path[7:]."/log/".cs.hex."/".file',
-\  'changeset': '"http://".domain."/hgweb".path[7:]."/rev/".cs.hex',
+\ {     'html': '"http://".domain."/hgweb".path[7:]."/file/".hex."/".file',     'hline': '"l".line',
+\        'raw': '"http://".domain."/hgweb".path[7:]."/raw-file/".hex."/".file',
+\   'annotate': '"http://".domain."/hgweb".path[7:]."/annotate/".hex."/".file', 'aline': '"l".line',
+\   'filehist': '"http://".domain."/hgweb".path[7:]."/log/".hex."/".file',
+\  'changeset': '"http://".domain."/hgweb".path[7:]."/rev/".hex',
 \        'log': '"http://".domain."/hgweb".path[7:]."/graph"',
 \      'clone': '"http://".domain.":8000".path',
 \       'push': '"ssh://".user."@".domain.path',}],
 \['domain =~? "\\Vgooglecode.com\\$" && path[:2] is? "/hg"',
-\ {     'html': '"http://code.google.com/p/".'.s:gcproj.'."/source/browse/".file."?r=".cs.hex', 'hline': 'line',
-\        'raw': '"http://".domain."/hg-history/".cs.hex."/".file',
-\   'filehist': '"http://code.google.com/p/".'.s:gcproj.'."/source/list?path=/".file."&r=".cs.hex',
-\  'changeset': '"http://code.google.com/p/".'.s:gcproj.'."/source/detail?r=".cs.hex',
+\ {     'html': '"http://code.google.com/p/".'.s:gcproj.'."/source/browse/".file."?r=".hex', 'hline': 'line',
+\        'raw': '"http://".domain."/hg-history/".hex."/".file',
+\   'filehist': '"http://code.google.com/p/".'.s:gcproj.'."/source/list?path=/".file."&r=".hex',
+\  'changeset': '"http://code.google.com/p/".'.s:gcproj.'."/source/detail?r=".hex',
 \        'log': '"http://code.google.com/p/".'.s:gcproj.'."/source/list"',
 \      'clone': 'url',
 \       'push': 'url',}],
 \['domain is? "hg.assembla.com"',
-\ {     'html': '"http://trac-".domain.path."/browser/".file."?rev=".cs.hex',                'hline': '"L".line',
-\   'annotate': '"http://trac-".domain.path."/browser/".file."?annotate=blame&rev=".cs.hex', 'aline': '"L".line',
-\   'filehist': '"http://trac-".domain.path."/log/".file."?rev=".cs.hex',
-\  'changeset': '"http://trac-".domain.path."/changeset/".cs.hex',
+\ {     'html': '"http://trac-".domain.path."/browser/".file."?rev=".hex',                'hline': '"L".line',
+\   'annotate': '"http://trac-".domain.path."/browser/".file."?annotate=blame&rev=".hex', 'aline': '"L".line',
+\   'filehist': '"http://trac-".domain.path."/log/".file."?rev=".hex',
+\  'changeset': '"http://trac-".domain.path."/changeset/".hex',
 \        'log': '"http://trac-".domain.path."/log"',
 \      'clone': '"http://".domain.path',}],
 \['domain is? "codebasehq.com" && path[-3:] is? ".hg"',
-\ {     'html': s:cbssh.'."/blob/".cs.hex."/".file', 'hline': '"L".line',
-\        'raw': s:cbssh.'."/raw/".cs.hex."/".file',
-\   'annotate': s:cbssh.'."/blame/".cs.hex."/".file',
-\   'filehist': s:cbssh.'."/commits/".cs.hex."/".file',
-\     'bundle': s:cbssh.'."/archive/zip/".cs.hex',
-\  'changeset': s:cbssh.'."/commit/".cs.hex',
+\ {     'html': s:cbssh.'."/blob/".hex."/".file', 'hline': '"L".line',
+\        'raw': s:cbssh.'."/raw/".hex."/".file',
+\   'annotate': s:cbssh.'."/blame/".hex."/".file',
+\   'filehist': s:cbssh.'."/commits/".hex."/".file',
+\     'bundle': s:cbssh.'."/archive/zip/".hex',
+\  'changeset': s:cbssh.'."/commit/".hex',
 \        'log': s:cbssh.'."/commits/tip"',
 \      'clone': '"https://".matchstr(path, "\\v^[^/]+", 1).".".domain.matchstr(path, ''\v[^/]+\/[^/]+$'')',
 \       'push': '"ssh://hg@".domain.path',}],
 \['domain =~? "\\Vcodebasehq.com\\$" && path[-3:] is? ".hg"',
-\ {     'html': s:cbhttps.'."/blob/".cs.hex."/".file', 'hline': '"L".line',
-\        'raw': s:cbhttps.'."/raw/".cs.hex."/".file',
-\   'annotate': s:cbhttps.'."/blame/".cs.hex."/".file',
-\   'filehist': s:cbhttps.'."/commits/".cs.hex."/".file',
-\     'bundle': s:cbhttps.'."/archive/zip/".cs.hex',
-\  'changeset': s:cbhttps.'."/commit/".cs.hex',
+\ {     'html': s:cbhttps.'."/blob/".hex."/".file', 'hline': '"L".line',
+\        'raw': s:cbhttps.'."/raw/".hex."/".file',
+\   'annotate': s:cbhttps.'."/blame/".hex."/".file',
+\   'filehist': s:cbhttps.'."/commits/".hex."/".file',
+\     'bundle': s:cbhttps.'."/archive/zip/".hex',
+\  'changeset': s:cbhttps.'."/commit/".hex',
 \        'log': s:cbhttps.'."/commits/tip"',
 \      'clone': '"https://".domain.path',
 \       'push': '"ssh://hg@".matchstr(domain, ''\v\.@<=.*$'')."/".matchstr(domain, "\\v^[^.]+").path',}],
 \['domain =~? "\\V\\^hg\\d\\+.codeplex.com\\$"',
-\ {     'html': s:cpbase.'"/changeset/view/".cs.hex[:11]."#".substitute(file, "/", "%2f", "g")',
+\ {     'html': s:cpbase.'"/changeset/view/".hex[:11]."#".substitute(file, "/", "%2f", "g")',
 \     'bundle': '"http://download.codeplex.com/Download/SourceControlFileDownload.ashx'.
-\                       '?ProjectName=".path[1:]."&changeSetId=".cs.hex[:11]',
-\  'changeset': s:cpbase.'"/changeset/changes/".cs.hex[:11]',
+\                       '?ProjectName=".path[1:]."&changeSetId=".hex[:11]',
+\  'changeset': s:cpbase.'"/changeset/changes/".hex[:11]',
 \        'log': s:cpbase.'"/list/changesets"',
 \      'clone': '"https://".domain.path',
 \       'push': '"https://".domain.path',}],
 \['domain =~? "\\Vkilnhg.com\\$"',
-\ {     'html': '"https://".domain.path."/File/".file."?rev=".cs.hex',               'hline': 'line',
-\        'raw': '"https://".domain.path."/FileDownload/".file."?rev=".cs.hex',
-\   'annotate': '"https://".domain.path."/File/".file."?rev=".cs.hex&view=annotate', 'aline': 'line',
-\   'filehist': '"https://".domain.path."/FileHistory/".file."?rev=".cs.hex',
-\  'changeset': '"https://".domain.path."/History/".cs.hex',
+\ {     'html': '"https://".domain.path."/File/".file."?rev=".hex',               'hline': 'line',
+\        'raw': '"https://".domain.path."/FileDownload/".file."?rev=".hex',
+\   'annotate': '"https://".domain.path."/File/".file."?rev=".hex&view=annotate', 'aline': 'line',
+\   'filehist': '"https://".domain.path."/FileHistory/".file."?rev=".hex',
+\  'changeset': '"https://".domain.path."/History/".hex',
 \        'log': '"https://".domain.path',
 \      'clone': '"https://".domain.path',}],
 \['domain =~? ''\V\%(project\)\?kenai.com\$'' && (path[:2] is? "/hg" || domain[:2] is? "hg.")',
-\ {     'html': s:pkbase.'."/content/".file."?rev=".cs.rev',
-\        'raw': s:pkbase.'."/content/".file."?raw=true&rev=".cs.rev',
+\ {     'html': s:pkbase.'."/content/".file."?rev=".repo.functions.getcsprop(repo, hex, "rev")',
+\        'raw': s:pkbase.'."/content/".file."?raw=true&rev=".repo.functions.getcsprop(repo, hex, "rev")',
 \   'filehist': s:pkbase.'."/history/".file',
-\  'changeset': s:pkbase.'."/revision/".cs.rev',
+\  'changeset': s:pkbase.'."/revision/".repo.functions.getcsprop(repo, hex, "rev")',
 \        'log': s:pkbase.'."/history"',
 \      'clone': '"https://".domain."/hg/".matchstr(path, "\\v[^/]+$")',
 \       'push': '"ssh://".domain."/".matchstr(path, "\\v[^/]+$")',}],
 let s:hyp.git=[
 \['domain is? "bitbucket.org"', s:bbdict],
 \['domain is? "github.com"',
-\ {     'html': '"https://".domain."/".'.s:ghpath.'."/blob/".cs.hex."/".file',   'hline': '"L".line',
-\        'raw': '"https://".domain."/".'.s:ghpath.'."/raw/". cs.hex."/".file',
-\   'annotate': '"https://".domain."/".'.s:ghpath.'."/blame/". cs.hex."/".file', 'aline': '"LID".line',
-\   'filehist': '"https://".domain."/".'.s:ghpath.'."/commits/".cs.hex."/".file',
-\     'bundle': '"https://".domain."/".'.s:ghpath.'."/zipball/".cs.hex',
-\  'changeset': '"https://".domain."/".'.s:ghpath.'."/commit/".cs.hex',
+\ {     'html': '"https://".domain."/".'.s:ghpath.'."/blob/".hex."/".file',   'hline': '"L".line',
+\        'raw': '"https://".domain."/".'.s:ghpath.'."/raw/". hex."/".file',
+\   'annotate': '"https://".domain."/".'.s:ghpath.'."/blame/". hex."/".file', 'aline': '"LID".line',
+\   'filehist': '"https://".domain."/".'.s:ghpath.'."/commits/".hex."/".file',
+\     'bundle': '"https://".domain."/".'.s:ghpath.'."/zipball/".hex',
+\  'changeset': '"https://".domain."/".'.s:ghpath.'."/commit/".hex',
 \        'log': '"https://".domain."/".'.s:ghpath.'."/commits"',
 \      'clone': '"git://".domain."/".'.s:ghpath,
 \       'push': '"ssh://git@".domain.":".'.s:ghpath.'.".git"',}],
 \['domain =~? "\\Vgit.sourceforge.net\\$"',
-\ {     'html': '"http://".domain."/git/gitweb.cgi?p=".path[9:].";a=blob;hb=".cs.hex.";f=".file', 'hline': '"l".line',
-\        'raw': '"http://".domain."/git/gitweb.cgi?p=".path[9:].";a=blob_plain;hb=".cs.hex.";f=".file',
-\   'filehist': '"http://".domain."/git/gitweb.cgi?p=".path[9:].";a=history;hb=".cs.hex.";f=".file',
-\  'changeset': '"http://".domain."/git/gitweb.cgi?p=".path[9:].";a=commitdiff;hb=".cs.hex',
+\ {     'html': '"http://".domain."/git/gitweb.cgi?p=".path[9:].";a=blob;hb=".hex.";f=".file', 'hline': '"l".line',
+\        'raw': '"http://".domain."/git/gitweb.cgi?p=".path[9:].";a=blob_plain;hb=".hex.";f=".file',
+\   'filehist': '"http://".domain."/git/gitweb.cgi?p=".path[9:].";a=history;hb=".hex.";f=".file',
+\  'changeset': '"http://".domain."/git/gitweb.cgi?p=".path[9:].";a=commitdiff;hb=".hex',
 \        'log': '"http://".domain."/git/gitweb.cgi?p=".path[9:].";a=log"',
 \      'clone': '"http://".domain.":8000".path',
 \       'push': '"ssh://".user."@".domain.path',}],
 \['domain is? "code.google.com"',
-\ {     'html': '"http://code.google.com/".substitute(path, "/$", "", "")."/source/browse/".file."?r=".cs.hex',}],
+\ {     'html': '"http://code.google.com/".substitute(path, "/$", "", "")."/source/browse/".file."?r=".hex',}],
 \['domain =~? ''\v^%(git\.)?gitorious\.org$''',
-\ {     'html': s:gobase.'."/blobs/".cs.hex."/".file',       'hline': '"line".line',
-\        'raw': s:gobase.'."/blobs/raw/".cs.hex."/".file',
-\   'annotate': s:gobase.'."/blobs/blame/".cs.hex."/".file', 'aline': '"line".line',
-\   'filehist': s:gobase.'."/blobs/history/".cs.hex."/".file',
-\  'changeset': s:gobase.'."/commit/".cs.hex',
-\        'log': s:gobase.'."/commits/".cs.hex',
+\ {     'html': s:gobase.'."/blobs/".hex."/".file',       'hline': '"line".line',
+\        'raw': s:gobase.'."/blobs/raw/".hex."/".file',
+\   'annotate': s:gobase.'."/blobs/blame/".hex."/".file', 'aline': '"line".line',
+\   'filehist': s:gobase.'."/blobs/history/".hex."/".file',
+\  'changeset': s:gobase.'."/commit/".hex',
+\        'log': s:gobase.'."/commits/".hex',
 \      'clone': '"git://".'.s:godomain.'."/".'.s:ghpath,
 \       'push': '"ssh://git@".'.s:godomain.'.":".'.s:ghpath.'.".git"',}],
 \['domain is? "repo.or.cz"',
-\ {     'html': s:robase.'."/blob/".cs.hex.":/".file',       'hline': '"l".line',
-\        'raw': s:robase.'."/blob_plain/".cs.hex.":/".file',
-\   'annotate': s:robase.'."/blame/".cs.hex.":/".file',      'aline': '"l".line',
-\   'filehist': s:robase.'."/history/".cs.hex.":/".file',
-\  'changeset': s:robase.'."/commit/".cs.hex',
-\        'log': s:robase.'."/log/".cs.hex',
+\ {     'html': s:robase.'."/blob/".hex.":/".file',       'hline': '"l".line',
+\        'raw': s:robase.'."/blob_plain/".hex.":/".file',
+\   'annotate': s:robase.'."/blame/".hex.":/".file',      'aline': '"l".line',
+\   'filehist': s:robase.'."/history/".hex.":/".file',
+\  'changeset': s:robase.'."/commit/".hex',
+\        'log': s:robase.'."/log/".hex',
 \      'clone': '"git://".domain."/".'.s:roproj,
 \       'push': '"ssh://".domain."/srv/git/".'.s:roproj,}],
 \]
 let s:svngcfile='path[5:]."/".file'
 let s:hyp.svn=[
 \['domain =~? "\\Vsvn.sourceforge.net\\$"',
-\ {     'html': '"http://".domain."/viewvc".path[8:]."/".file."?view=markup&pathrev=".cs.rev',
-\        'raw': '"http://".domain."/viewvc".path[8:]."/".file."?pathrev=".cs.rev',
-\   'annotate': '"http://".domain."/viewvc".path[8:]."/".file."?annotate=".cs.rev',
-\     'bundle': '"http://".domain."/viewvc".path[8:]."?view=tar&pathrev=".cs.rev',
+\ {     'html': '"http://".domain."/viewvc".path[8:]."/".file."?view=markup&pathrev=".hex', 'hline': '"l".line',
+\        'raw': '"http://".domain."/viewvc".path[8:]."/".file."?pathrev=".hex',             'aline': '"l".line',
+\   'annotate': '"http://".domain."/viewvc".path[8:]."/".file."?annotate=".hex',
+\     'bundle': '"http://".domain."/viewvc".path[8:]."?view=tar&pathrev=".hex',
 \        'log': '"http://".domain."/viewvc".path[8:]."?view=log"',
 \      'clone': 'url',}],
 \['domain =~? "\\Vgooglecode.com\\$" && path[:3] is? "/svn"',
-\ {     'html': s:svngcbase.'."/source/browse/".'.s:svngcfile.'."?rev=".cs.rev', 'hline': 'line',
-\        'raw': '"http://".domain."/svn-history/r".cs.rev.'.s:svngcfile,
-\   'filehist': s:svngcbase.'."/source/list?path=/".'.s:svngcfile.'."&r=".cs.rev',
+\ {     'html': s:svngcbase.'."/source/browse/".'.s:svngcfile.'."?rev=".hex', 'hline': 'line',
+\        'raw': '"http://".domain."/svn-history/r".hex.'.s:svngcfile,
+\   'filehist': s:svngcbase.'."/source/list?path=/".'.s:svngcfile.'."&r=".hex',
 \        'log': s:svngcbase.'."/source/list"',
 \      'clone': 'url',}],
 \]

plugin/aurum/drivers/mercurial.vim

         \}
 "▶1 s:hypsites
 let s:hypsites=[]
-let s:gitrev='((!empty(cs.bookmarks))?'.
-            \      '(cs.bookmarks[0]):'.
-            \   '((!empty(cs.tags))?'.
-            \      '(get(filter(copy(cs.tags), "v:val[:7] is# ''default/''"), 0, '.
-            \           '"default/master")[8:])'.
+let s:bookmarks='repo.functions.getcsprop(repo, hex, "bookmarks")'
+let s:tags='repo.functions.getcsprop(repo, hex, "tags")'
+let s:gitrev='((!empty('.s:bookmarks.'))?'.
+            \      '('.s:bookmarks.'[0]):'.
+            \   '((!empty('.s:tags.'))?'.
+            \      '(matchstr(get(filter(copy('.s:tags.'), "stridx(v:val, ''/'')!=-1"), 0, '.
+            \           '"master"), "\\v[^/]+$"))'.
             \   ':'.
             \      '("master")))'
+unlet s:bookmarks s:tags
 let s:hypsites+=map(copy(s:_r.hypsites.git), '["protocol[:2] is# ''git'' && (".v:val[0].")", '.
             \                                 'map(copy(v:val[1]), '.
             \                                     '''(v:key is# "clone" || v:key is# "push")?'.
             \                                           '(substitute(v:val, "\\v^\"%(git)@!", "\"git+", "")):'.
-            \                                           '(substitute(v:val, "\\Vcs.hex", s:gitrev, "g"))'')]')
+            \                                           '(substitute(v:val, "\\v<hex>", s:gitrev, "g"))'')]')
 unlet s:gitrev
 let s:hypsites+=s:_r.hypsites.mercurial
 let s:svnrev='"HEAD"'
 let s:hypsites+=map(copy(s:_r.hypsites.svn), '[v:val[0], map(copy(v:val[1]), '.
-            \                                               '''substitute(v:val, "\\Vcs.rev", s:svnrev, "g")'')]')
+            \                                               '''substitute(v:val, "\\v<hex>", s:svnrev, "g")'')]')
 unlet s:svnrev
 "▶1 removechangesets :: repo, start_rev_num → + repo
 function s:F.removechangesets(repo, start)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.