aboutsummaryrefslogtreecommitdiffstats
path: root/tools/compile_vim.sh
blob: 47115a91d792a9c06800aaa89f34e3605708e6d5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/bash

set -e # exit when error
# environment variables here

VIMRUNTIME=/usr/share/vim/vim91
color_file=industry.vim

# write a function to install sth,the parameter of the func is the packages
function install() {
	sudo apt update
	sudo apt upgrade
	sudo apt remove vim*
	sudo apt install -y git libatk1.0-dev libcairo2-dev liblua5.1-0-dev \
		libncurses5-dev libperl-dev libx11-dev libxpm-dev \
		libxt-dev lua5.1 python3-dev ruby-dev
	}

# check current user is root or not, if is, warn the user
if [ $UID -eq 0 ]; then
	echo -e "\033[31mYou are root, I recommand to use a normal user to run this script.\033[0m"
	exit
fi

cd ~
# if this is the first time to compile vim
if [ $# -eq 1 ] && [ $1 == "first" ]; then
	install
	if ! [ -d app ]; then
		mkdir app
	fi
	cd app
	echo -e "\033[32mGetting vim source code...\033[0m"
	git clone https://github.com/vim/vim
	cd vim/src
else
	cd app/vim/src
	sudo make uninstall
	make distclean
	echo -e "\033[32mGetting vim source code...\033[0m"
	git pull
fi

# get the default python version
python_version=$(python3 -V 2>&1 | awk '{print $2}' | awk -F '.' '{print $1"."$2}')
if [ -z $python_version ]; then
	echo -e "\033[31mInstalling python3...\033[0m"
	sudo apt update && sudo apt upgrade
	sudo apt install python3
	python_version=$(python3 -V 2>&1 | awk '{print $2}' | awk -F '.' '{print $1"."$2}')
fi
# if gtk installed, remove it
if [ -d /usr/local/include/gtk-2.0 ]; then
	sudo apt remove libgtk2.0-dev
fi

echo -e "\033[32mPython version: $python_version\033[0m"

echo -e "\033[32mConfiguring compile environment...\033[0m"
./configure \
	--with-features=huge \
	--enable-multibyte \
	--enable-rubyinterp=dynamic \
	--with-ruby-command=/usr/bin/ruby \
	--enable-luainterp\
	--enable-python3interp=dynamic \
	--with-python3-command=$(which python$python_version) \
	--with-python3-config-dir=$(python$python_version-config --configdir) \
	--enable-perlinterp=dynamic \
	--enable-largefile \
	--enable-cscope \
	--with-compiledby="An Ordinary Communist weunite1848@gmail.com" \
	--enable-fail-if-missing \
	--disable-gui \
	--prefix=/usr

echo -e "\033[32mCompiling vim...\033[0m"
make

echo -e "\033[32mInstalling vim...\033[0m"
sudo make install

echo -e "\033[32;36mCompile done!\033[0m"
vim --version | head -n 3

# test if the terminal support 256 colors, if so, configure the color file
if [ $(tput colors) -ge 256 ]; then
	color_file=$VIMRUNTIME/colors/$color_file
	echo -e "\033[32mConfiguring $color_file as transparent...\033[0m"
	sudo sed -i '/if s:t_Co >= 256/,/hi Normal/{s/hi Normal/" hi/}' $color_file
	sudo sed -i '/if s:t_Co >= 256/,/hi EndOfBuffer/{s/hi EndOfBuffer/" hi/}' $color_file
fi

echo -e "\033[32;36mDone.\033[0m"