#!/bin/bash ## This script takes care of the vim configuration. if [ -z "$BASE_DIR" ]; then echo "BASE_DIR wasn't set." exit 1 fi # Add .vimrc {{{ ###### # OK # ###### echo "Adding .vimrc..." make_symlink ~/.vimrc "$BASE_DIR"/dotfiles/vim/vimrc # }}} # Add colors {{{ ###### # OK # ###### echo "Adding colors..." mkdir -p ~/.vim/colors color_files=$(ls "$BASE_DIR"/dotfiles/vim/colors) for color_file in $color_files; do make_symlink ~/.vim/colors/"$color_file" "$BASE_DIR"/dotfiles/vim/colors/"$color_file" done # }}} # Install or update Vundle {{{ ###### # OK # ###### echo "Setting up Vundle..." if [ ! -e ~/.vim/bundle/Vundle.vim ]; then echo "Cloning Vundle from Github..." if git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim; then echo "${GREEN}Successfully cloned Vundle${NC}" else echo "${RED}There was a problem while setting up Vundle${NC}" exit 1 fi else echo "Vundle is already installed, updating" if cd ~/.vim/bundle/Vundle.vim && git pull; then echo "${GREEN}Successfully updated Vundle${NC}" else echo "${RED}There was a problem while updating Vundle${NC}" exit 1 fi fi # }}} # Update Vundle plugins {{{ ###### # OK # ###### echo "Checking Vundle Plugins..." if vim +PluginInstall +qall; then echo "${GREEN}All Vundle Plugins are enabled.${NC}" else echo "${RED}There was a problem while checking Vundle Plugins.${NC}" exit 1 fi if [ "$UPDATE" = 'true' ]; then echo "Updating Vundle Plugins..." if vim +PluginUpdate +qall; then echo "${GREEN}Successfully updated Vundle Plugins${NC}" else echo "${RED}There was a problem while updating Vundle Plugins${NC}" exit 1 fi fi # }}} # Setup git-submodules for python-mode {{{ ###### # OK # ###### echo "Setting up Python-mode folder for git submodules..." if [ -e ~/.vim/bundle/python-mode ]; then cd ~/.vim/bundle/python-mode || exit 1 if git submodule update --init --recursive; then echo "${GREEN}Successfully set up submodules for python-mode${NC}" else echo "${RED}There was a problem while setting up submodules for python-mode${NC}" exit 1 fi fi # }}} # Install linters {{{ ###### # OK # ###### echo "Installing linters..." if [ "$OS" = 'debian' ]; then sudo apt install flake8 pylint3 mypy shellcheck elif [ "$OS" = 'arch' ]; then sudo pacman -S --needed flake8 python-pylint mypy if ! sudo pacman -S --needed shellcheck; then echo "${ORANGE}Shellcheck was not found with pacman, downloading pre-compiled binary${NC}" scversion="stable" architechture=$(uname -m) if [ -e ~/Downloads/shellcheck-${scversion} ]; then rm -r ~/Downloads/shellcheck-${scversion} && echo "${ORANGE}Found and removed pre-existing shellcheck folder${NC}" fi cd ~/Downloads || exit 1 echo "Downloading shellcheck ${scversion} binary for ${architechture}..." if wget -qO- "https://storage.googleapis.com/shellcheck/shellcheck-${scversion?}.linux.${architechture?}.tar.xz" | tar -xJv; then echo "${GREEN}Successfully downloaded and extracted shellcheck.${NC}" echo "Copying executable to /usr/bin/ ..." sudo cp "shellcheck-${scversion}/shellcheck" /usr/bin/ && shellcheck --version if rm -r ~/Downloads/shellcheck-${scversion}; then echo "${GREEN}Removed shellcheck installation folder${NC}" else echo "${RED}Was unable to remove shellcheck installation folder${NC}" exit 1 fi else echo "${RED}Was unable to download shellcheck binary${NC}" fi fi else echo "${RED}Was unable to determine which OS you use${NC}" exit 1 fi # }}} # Install YouCompleteMe {{{ ###### # OK # ###### echo "Setting up YouCompleteMe..." if [ ! -e ~/.vim/ycm_installed ]; then if [ "$OS" = 'debian' ]; then sudo apt install build-essential cmake python3-dev elif [ "$OS" = 'arch' ]; then sudo pacman -S --needed base-devel clang cmake else echo "${RED}Was unable to determine which OS you use${NC}" exit 1 fi cd ~/.vim/bundle/YouCompleteMe || exit 1 if /usr/bin/python3 install.py --clang-completer --rust-completer; then echo "${GREEN}Successfully set up YouCompleteMe${NC}" cd ~/.vim || exit 1 touch ycm_installed else echo "${RED}There was a problem while setting up YouCompleteMe${NC}" exit 1 fi else echo "YouCompleteMe is already installed, skipping..." fi # }}} # Add YouCompleteMe extra conf files {{{ ###### # OK # ###### echo "Adding YouCompleteMe extra_conf files..." make_symlink ~/.ycm_extra_conf.py "$BASE_DIR"/dotfiles/vim/ycm_extra_conf.py make_symlink ~/.global_extra_conf.py "$BASE_DIR"/dotfiles/vim/global_extra_conf.py # }}} exit 0