vim-settings/vim-sync-append.sh

119 lines
3.4 KiB
Bash
Executable File

############################
# Vim Settings Setup script by ViViDboarder (Ian)
# http://github.com/ViViDboarder/Vim-Settings
############################
#! /bin/bash
# Try to load .bashrc to load rvm functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# Get current directory for future use in links
VIM_SYNC_DIR=$(dirname $0)
cd $VIM_SYNC_DIR
VIM_SYNC_DIR=$(pwd)
# Verify git is installed (although needed to checkout
command -v git >/dev/null 2>&1 || {
echo "Error: git required for install";
exit 1;
}
# Clone vundle if not done already
if [ ! -d ~/.vim/bundle/vundle ]; then
echo "Installing vundle"
mkdir -p ~/.vim/bundle
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
fi
# Make backup and tmp dirs
echo "Building temp and backup dirs"
mkdir -p ~/.vim/backup
mkdir -p ~/.vim/tmp
mkdir -p ~/.vim/doc
# If a .vimrc_sync doesn't exist, link it
if [[ ! ( -f ~/.vimrc_sync ) ]]; then
echo "Linking sync'd vimrc"
ln -s $VIM_SYNC_DIR/vimrc ~/.vimrc_sync
fi
# If a .vim_drpobox dir doesn't exist, link it
if [[ ! ( -d ~/.vim_sync ) ]]; then
echo "Linking sync'd vim runtime"
ln -s $VIM_SYNC_DIR/vim ~/.vim_sync
fi
# if there is no .vimrc file already, make a blank one
if [[ ( ! -f ~/.vimrc ) ]]; then
echo "No ~/.vimrc found, creating one"
touch ~/.vimrc
fi
# if not already sourcing the synced version, source it
if ! ( grep -q 'source ~/.vimrc_sync' ~/.vimrc ); then
echo "Source sync'd vimrc in vimrc"
echo '' >> ~/.vimrc
echo '"import vimrc from synced' >> ~/.vimrc
echo 'source ~/.vimrc_sync' >> ~/.vimrc
fi
if ! ( grep -q 'set runtimepath+=$HOME/.vim_sync' ~/.vimrc ); then
echo "Add sync'd vim dir to runtime"
echo '' >> ~/.vimrc
echo '"add vim directory from synced' >> ~/.vimrc
echo 'set runtimepath+=$HOME/.vim_sync' >> ~/.vimrc
fi
# Install all bundles
echo "Install all bundles"
vim +BundleInstall! +qall
echo "Compile vimproc"
cd ~/.vim/bundle/vimproc.vim && make
cd -
# Compile CommandT if possible
# See if ruby is installed
if command -v ruby >/dev/null 2>&1; then
# Make sure GCC is installed
if command -v gcc >/dev/null 2>&1; then
# Use system ruby
command -v rvm >/dev/null 2>&1 && { rvm use system; }
echo "Compile Command T's C extension"
cd ~/.vim/bundle/Command-T/ruby/command-t
ruby extconf.rb
make
fi
fi
# Display warning methods related to Command T
vim --version | grep -q '\+ruby' || { echo "Warning: Default vim does not include ruby as needed for Command T"; }
command -v ruby >/dev/null 2>&1 || { echo "Warning: ruby required for Command T"; }
command -v gcc >/dev/null 2>&1 || { echo "Warning: gcc required for Command T"; }
# Execute vim's update of the helptags
VIM_RESULT=$(vim +"helptags ~/.vim/doc" +"q")
if [[ "$VIM_RESULT" == *SEGV* ]]; then
echo "Seg Faulted. Retry with different ruby"
cd ~/.vim/bundle/Command-T/ruby/command-t && /opt/local/bin/ruby* extconf.rb && make && cd -
# Retry
vim +"helptags ~/.vim/doc" +"q"
fi
# Warn if ctags does not exist
command -v ctags >/dev/null 2>&1 || { echo "Warning: ctags required for Tag List
--- Debian: apt-get install ctags
--- OSX (MacPorts): port install ctags"; }
echo "Note: If VIM Segfaults try the following:"
echo " cd ~/.vim/bundle/Command-T/ruby/command-t && /opt/local/bin/ruby* extconf.rb && make && cd -"
echo ""
echo "All done!"
exit 0