-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathextend_vim_with_go_plugins.sh
executable file
·74 lines (64 loc) · 1.76 KB
/
extend_vim_with_go_plugins.sh
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
#!/usr/bin/env bash
set -euo pipefail
function print_message()
{
echo "####################"
echo $1
echo "####################"
}
sudo snap install gopls --classic
sudo snap install go --classic
sudo snap install universal-ctags
# Install tagbar
print_message "Install tagbar"
cd ~/.vim/bundle
git clone https://github.com/majutsushi/tagbar
# Install vim-go
print_message "Install vim-go"
cd ~/.vim/bundle
git clone https://github.com/fatih/vim-go
# Install gotags go binary
go install github.com/jstemmer/gotags@latest
# Append .profile with PATH update
if ! grep -q "go/bin" ${HOME}/.profile; then
cat <<EOF >>${HOME}/.profile
# (added by extend_vim_with_go_plugins.sh)
# set PATH so it includes user's go bin for using golang binaries
if [ -d "\$HOME/go/bin" ] ; then
PATH="\$HOME/go/bin:\$PATH"
fi
EOF
fi
# Append .vimrc with gotagbar
if ! grep -q "tagbar_type_go" ${HOME}/.vimrc; then
cat <<EOF >>${HOME}/.vimrc
" gotags integration
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }
EOF
fi