holzschu / a-shell

A terminal for iOS, with multiple windows
BSD 3-Clause "New" or "Revised" License
2.74k stars 117 forks source link

Cannot install vim plugins with Vundle #678

Open A-tA-v opened 1 year ago

A-tA-v commented 1 year ago

Hi All, I am trying to install Vim plugins (NerdTree, Tagbar, etc) using Vundle package manager. I downloaded Vundle into $HOME/Documents/.vim/bundle/ and placed .vimrc in $HOME/Documents/.vim/ What I can figure out from the error messages is that Vundle attempts to install plugins at “$HOME/.vim” directory which is inaccessible (no permission to create $HOME/.vim). Then I added in .vimrc: set rtp+=$HOME/Documents/.vim/bundle/Vundle.vim Still does not work. Then tried without “+=“: set rtp=$HOME/Documents/.vim/bundle/Vundle.vim Still the same. It turns out Vundle always wants to reach out the folder “$HOME/.vim” instead of accessible “$HOME/Documents/.vim”. I am wondering, if there is a workaround.

holzschu commented 1 year ago

Thanks for the detailed report. You have identified the cause of the problem. I am not a Vundle user myself, mainly because on recent Vim versions, the plugin manager is very efficient.

I looked at the source of Vundle, and it defines a global variable in ‎autoload/vundle.vim‎:

let vundle#bundle_dir = expand('$HOME/.vim/bundle', 1)

You can try overriding this variable in your .vimrc. If that doesn't work, you can edit the source of Vundle on your own device.

A-tA-v commented 1 year ago

Thank you, Nicolas. You suggestion does work. The only problem happens with ctags, which is used as a backend by Tagbar plugin. It turns out ctags has difficulty to create temporary files:

"work/my_script.py" 372L, 12297B                                                                     
Tagbar: Could not execute ctags for /private/var/mobile/Containers/Data/Application/<Some Long Number>/Documents/work
/my_script.py!
Executed command: "'/private/var/containers/Bundle/Application/<Some Long Number>/a-Shell.app/bin/ctags' '--extras=+F
' '-f' '-' '--format=2' '--excmd=pattern' '--fields=nksSafet' '--sort=no' '--append=no' '--language-force=python' '--python-kinds=icfmv
' '/private/var/mobile/Containers/Data/Application/<Some Long Number>/tmp/v515ZN8/19.py'"
Command output:
ctags: Warning: cannot open input file "/private/var/mobile/Containers/Data/Application/<Some Long Number>/tmp/v515ZN
8/19.py" : No such file or directory
Exit code: 0
Press ENTER or type command to continue
holzschu commented 1 year ago

That one is going to be more challenging. I've seen something similar with some other commands, where:

The solution is not obvious, as I want command 1 to still erase the file, but only after command 2 is done, and at the same time I don't want command 1 to wait for command 2. It's the first time I see it in Vim, though.

holzschu commented 1 year ago

Hi, i was running some tests on this issue, and even if I set "g:tagbar_use_cache" to 0, it still fails with the same error. Which means it thinks that the original file does not exist. I'll keep investigating.

holzschu commented 1 year ago

Hi, I should have looked into it earlier. It was an issue with the way WebAssembly was accessing distant files, which was the reason why tagbar was reporting that it could not access those files. It is fixed in the latest TestFlight version: https://testflight.apple.com/join/REdHww5C but now I'm going to run tests to check why if I haven't broken something else.

holzschu commented 1 year ago

Update: yes, that "fix" was breaking everything else. The solution was to recompile ctags and readtags with the newest wask SDK. You can try at: https://testflight.apple.com/join/REdHww5C but it works on my test machines.