What is the most elegant way to deal with sourced files that themselves source (relative) source files in VIM?
vim
Solution
Maybe you could modify your runtimepath in your vimrc or elsewhere:
set runtimepath+=/other/path/to/vim/files
Then use :runtime instead of :source in your sourceA.vim file:
runtime lib/sourceB.vim
You can then use the same ":so /../../../sourceA.vim" command as before...
Problem
I am editing a file like `/path/to/file.txt` with vim, hence the current directory is `/path/to`. Now, I have a directory `/other/path/to/vim/files` that contains `sourceA.vim`. Also, there is a `sourceB.vim` file in `/other/path/to/vim/files/lib/sourceB.vim` In `sourceA.vim`, I want to source `sourceB.vim`, so I put a `so lib/sourceB.vim` into it. Now, in my file.txt, I do a `:so /other/path/to/vim/files/sourceA.vim` which fails, because the sourcing system is obviously not prepared for relative path names along with sourcing from another directory. In order to fix this, I put a `execute "so " . expand("<sfile>:p:h") . "/lib/sourceB.vim"` into `sourceA.vim` which does what I want. However, I find the solution a bit clumsy and was wondering if there is a more elegant solution to it. I cannot put the sourceA.vim nor sourceB.vim into vim's `plugin` folder.