forked from cknadler/vim-anywhere
-
Notifications
You must be signed in to change notification settings - Fork 0
/
install
executable file
·140 lines (113 loc) · 3.65 KB
/
install
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/bin/bash
#
# vim-anywhere - use Vim whenever, wherever
# Author: Chris Knadler
# Homepage: https://www.github.com/cknadler/vim-anywhere
#
# Installs vim-anywhere. Intended for use via curl:
#
# $ curl -fsSL https://raw.github.com/cknadler/vim-anywhere/master/install | bash
set -e
###
# opts
###
while getopts ":v" opt; do
case "$opt" in
v) set -x ;;
\?) echo "Invalid option: -$OPTARG" >&2 ;;
esac
done
###
# defs
###
err() { echo -e "$@" 1>&2; }
check_installed() { hash $1 &> /dev/null; }
require_installed() {
if ! check_installed $1; then
err "vim-anywhere requires $1 to function"
if [[ "$2" != "" ]]; then echo $2; fi
exit 1
fi
}
require_one_installed() {
for file in $*; do
check_installed $file && return
done
err "vim-anywhere requires one of the following to be installed:\n$*"
exit 1
}
AW_PATH=$HOME/.vim-anywhere
AW_URL='https://github.com/cknadler/vim-anywhere'
###
# pre-installation checks
###
# Check if vim-anywhere is already installed. If so, remove the previous
# installation.
if [ -a $AW_PATH ]; then
echo 'Cleaning up previous installation...'
rm -rf $AW_PATH
# TODO: It would be nice to have an option for user input here
# Reinstall vim-anywhere (y/n)? ... or something like that
fi
require_installed git
# if we are in a git repo, unset env vars
if git rev-parse --git-dir &> /dev/null; then
unset $(git rev-parse --local-env-vars) &> /dev/null
fi
# Linux specific checks
if [[ $OSTYPE == "linux-gnu" ]]; then
require_one_installed gconftool gsettings
require_installed gvim
require_installed xclip
# OSX specific checks
elif [[ $OSTYPE == "darwin"* ]]; then
require_installed mvim 'Run `brew install macvim`.'
# Unsupported OS
else
echo "OS '$OSTYPE' is not supported!"
exit 1
fi
###
# installation
###
echo "Installing vim-anywhere..."
git clone $AW_URL $AW_PATH
# Linux install
if [[ $OSTYPE == "linux-gnu" ]]; then
name="vim-anywhere"
binding="<CTRL><ALT>v"
action=$AW_PATH/bin/run
# We always try gconftool first. It is deprecated so it won't be on newer
# installs. If it's installed, we know we are on older versions of Gnome.
if check_installed gconftool; then
kbd_path=/desktop/gnome/keybindings/vim-anywhere
gconftool -t str --set $kbd_path/name $name
gconftool -t str --set $kbd_path/binding $binding
gconftool -t str --set $kbd_path/action $action
# At this point, we know we are using dconf, the currently supported settings
# manager. gsettings is the gnome client for dconf.
else
media_keys=org.gnome.settings-daemon.plugins.media-keys
custom_kbd=org.gnome.settings-daemon.plugins.media-keys.custom-keybindings
kbd_path=/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/vim-anywhere
gsettings set $media_keys custom-keybindings "['others', '$kbd_path']"
gsettings set $custom_kbd:$kbd_path name $name
gsettings set $custom_kbd:$kbd_path binding $binding
gsettings set $custom_kbd:$kbd_path command $action
fi
# OSX install
elif [[ $OSTYPE == "darwin"* ]]; then
# store the absolute path to the mvim executable
which mvim > $AW_PATH/.path
# install the workflow as a service
mkdir -p $HOME/Library/Services
cp -R $AW_PATH/VimAnywhere.workflow $HOME/Library/Services
# TODO: add shortcut
# It would be great if there was a way to set the keyboard shortcut for
# vim-anywhere programatically (without GUI scripting). If there ends up being a
# way to do this, it would go here.
# As a partial workaround, run a script that opens the shortcut options
echo "Opening System Preferences..."
osascript $AW_PATH/script/open_shortcuts.scpt &> /dev/null
fi
echo "vim-anywhere has been successfully installed!"