Added functions to calculate relative path
This commit is contained in:
parent
184fca889a
commit
c98b178377
44
autoload/vimtex/paths.vim
Normal file
44
autoload/vimtex/paths.vim
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
" vimtex - LaTeX plugin for Vim
|
||||||
|
"
|
||||||
|
" Maintainer: Karl Yngve Lervåg
|
||||||
|
" Email: karl.yngve@gmail.com
|
||||||
|
"
|
||||||
|
|
||||||
|
function! vimtex#paths#shorten_relative(path) " {{{1
|
||||||
|
" Input: An absolute path
|
||||||
|
" Output: Relative path with respect to the vimtex root, path relative to
|
||||||
|
" vimtex root (unless absolute path is shorter)
|
||||||
|
|
||||||
|
let l:relative = vimtex#paths#relative(a:path, b:vimtex.root)
|
||||||
|
return strlen(l:relative) < strlen(a:path)
|
||||||
|
\ ? l:relative : a:path
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" }}}1
|
||||||
|
function! vimtex#paths#relative(path, current) " {{{1
|
||||||
|
" Note: This algorithm is based on the one presented by @Offirmo at SO,
|
||||||
|
" http://stackoverflow.com/a/12498485/51634
|
||||||
|
let l:target = a:path
|
||||||
|
|
||||||
|
let l:common = a:current
|
||||||
|
let l:result = ''
|
||||||
|
while substitute(l:target, '^' . l:common, '', '') ==# l:target
|
||||||
|
let l:common = fnamemodify(l:common, ':h')
|
||||||
|
let l:result = empty(l:result) ? '..' : '../' . l:result
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
if l:common ==# '/'
|
||||||
|
let l:result .= '/'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:forward = substitute(l:target, '^' . l:common, '', '')
|
||||||
|
if !empty(l:forward)
|
||||||
|
let l:result = empty(l:result)
|
||||||
|
\ ? l:forward[1:]
|
||||||
|
\ : l:result . l:forward
|
||||||
|
endif
|
||||||
|
|
||||||
|
return l:result
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" }}}1
|
Loading…
Reference in New Issue
Block a user