chiark / gitweb /
dot/emacs: Tell Emacs about my dictionaries.
[profile] / setup
CommitLineData
65ff0e8c 1#! /bin/bash
f617db13
MW
2
3set -e
4
ce178f96
MW
5###--------------------------------------------------------------------------
6### Basic setup.
7
f617db13
MW
8umask 002
9
4aa875e9 10sub=
f617db13
MW
11mkdir -p $HOME$sub
12
8ba15f37 13: ${REPO=http://ftp.distorted.org.uk/ftp/pub/mdw/profile}
f617db13
MW
14
15export PATH=/usr/local/bin:$HOME$sub/bin:/usr/bin:/usr/ccs/bin:/bin
16
ce178f96
MW
17###--------------------------------------------------------------------------
18### Sort out command line.
19
f617db13
MW
20xstuff= false=
21while [ $# -gt 0 ]; do
22 case "$1" in
23 -x) xstuff=t;;
24 -n) false=false;;
25 --) shift; break;;
26 -*) echo >&2 "$0: bad option"; exit 1;;
27 *) break;;
28 esac
29 shift
30done
31
ce178f96
MW
32###--------------------------------------------------------------------------
33### Environment autoconfiguration.
34
35## Find out where I am
f617db13 36here=$(pwd)
f617db13 37
ce178f96 38## Suss out how to print things
f617db13
MW
39out=$(echo -n "foo"; echo "bar")
40if [ "$out" = "foobar" ]; then
41 echon="echo -n"
42 echoc=""
43else
44 echon="echo"
45 echoc='\c'
46fi
47
ce178f96 48## Find out how to fetch things over the net
f617db13
MW
49$echon "Finding URL fetcher:$echoc"
50if curl >/dev/null 2>&1 --version || [ $? -eq 2 ]; then
51 GETURL="curl -fs -o"
52 echo " curl."
53elif wget >/dev/null 2>&1 --version; then
54 GETURL="wget -q -O"
55 echo " wget."
56else
57 echo " failed!"
58 echo >&2 "$0: failed to find URL fetcher"
59 exit 1
60fi
61
ce178f96
MW
62###--------------------------------------------------------------------------
63### Create the necessary directories.
64
65echo "Creating directories..."
66for i in bin lib/emacs src; do
67 $echon " $i:$echoc"
68 if [ -d $HOME$sub/$i ]; then
69 echo " already exists."
70 else
71 mkdir -p $HOME$sub/$i
72 echo " done."
73 fi
74done
75echo " all done."
76
ce178f96
MW
77###--------------------------------------------------------------------------
78### Install some more complicated programs.
79
f617db13
MW
80echo "Installing packages..."
81systems="
285a1386
MW
82 mlib:crc-mktab
83 checkpath:tmpdir
f617db13
MW
84"
85[ "$xstuff" ] && systems="$systems
285a1386 86 xtoys:xatom
f617db13
MW
87"
88for system in $systems; do
89 set -- $(echo $system | tr : ' ')
285a1386 90 sys=$1 prog=$2
f617db13
MW
91 $echon " $sys:$echoc"
92 if $false $prog >/dev/null 2>&1 --version; then
93 echo " already installed."
94 else
95 ( set -e
96 $echon " downloading$echoc"
97 cd $HOME$sub/src
285a1386
MW
98 rm -rf $sys.tar.gz $sys-$ver
99 $GETURL $sys.tar.gz $REPO/$sys.tar.gz
f617db13 100 $echon " unpacking$echoc"
285a1386
MW
101 dir=$(gzip -cd $sys.tar.gz | tar tf - | head -1)
102 gzip -cd $sys.tar.gz | tar xf -
f617db13 103 $echon " configuring$echoc"
285a1386 104 cd $dir
f617db13
MW
105 mkdir build
106 cd build
107 ../configure --prefix=$HOME$sub >>buildlog 2>&1
108 $echon " building$echoc"
109 make >>buildlog 2>&1
110 $echon " installing$echoc"
111 make install >>buildlog 2>&1
112 echo " done."
113 )
114 fi
115done
852cd5fb 116echo " all done."
f617db13 117
ce178f96
MW
118###--------------------------------------------------------------------------
119### Install global configuration.
120
f141fe0f
MW
121echo -n "Installing dotfile configuration:"
122if [ -f $HOME$sub/.mdw.conf ]; then
123 echo " already installed."
124else
125 cp mdw.conf $HOME$sub/.mdw.conf
126 echo " done."
127fi
128
ce178f96 129## Symlink the various dotfiles into place
852cd5fb 130dotfiles="
be7dba95 131 bash_profile bash_logout bashrc inputrc bash_completion
a3bdb4d9 132 emacs emacs-calc vm gnus.el
b0d8acbe 133 vimrc mg zile
b3468c3b 134 mailrc signature
ce178f96 135 cgrc tigrc
e7d23024 136 gdbinit
8a7e906d 137 guile
5d25e440 138 toprc
cbffcf2b 139 aspell.conf
ccaac00b
MW
140 lisp-init.lisp:.cmucl-init.lisp
141 lisp-init.lisp:.sbclrc
142 lisp-init.lisp:.clisprc.lisp
f6335a0c 143 lisp-init.lisp:.eclrc
b5bf3445 144 swank.lisp
2425eca9 145 dircolors colordiffrc screenrc cvsrc indent.pro"
739bccbf 146[ "$xstuff" ] && dotfiles="$dotfiles
eae29a8c 147 xinitrc xsession Xdefaults vncrc vncsession
5e23020b 148 fonts.conf
e517857c 149 stalonetrayrc
1c6b19d4 150 putty-defaults:.putty/sessions/Default%20Settings
7cfa1f1a 151 eterm-theme.cfg:.Eterm/themes/Eterm/theme.cfg
739bccbf 152 e-keybindings.cfg:.enlightenment/keybindings.cfg
eae29a8c 153 evnc-keybindings.cfg:.enlightenment-vnc/keybindings.cfg
f4e43257 154 e16-bindings:.e16/bindings.cfg"
f617db13
MW
155echo "Installing dotfiles..."
156for d in $dotfiles; do
739bccbf
MW
157 target=.$d
158 case $d in
159 *:*) target=${d#*:} d=${d%%:*};;
160 esac
161 ft=$HOME$sub/$target
162 dir=${ft%/*}
163 mkdir -p $dir
99063107 164 ln -s $here/dot/$d $ft.new
739bccbf
MW
165 mv $ft.new $ft
166 echo " $target"
f617db13 167done
852cd5fb 168echo " all done."
f617db13 169
403dc178
MW
170## Substitute things which need substituting.
171dotfilessubst="
172 gitconfig
173 pulse-default.pa.in:.pulse/default.pa"
174echo "Installing dotfiles with substitutions..."
175for d in $dotfilessubst; do
176 case $d in
177 *:*) target=${d#*:} d=${d%%:*};;
178 *) target=.$d d=$d.in;;
179 esac
180 ft=$HOME$sub/$target
181 dir=${ft%/*}
182 mkdir -p $dir
183 sed "
1841i\
185### generated by $here/setup; do not edit!\
186
187/@home@/ s\a\a$HOME\ag
188/@releasekey@/ s\a\a$(bin/mdw-conf release-key 481334C2)\ag
189/@gitignore@/ s\a\a$(bin/mdw-conf gitignore $here/git/gitignore)\ag
190" dot/$d >$ft.new
191 mv $ft.new $ft
192 echo " $target"
193done
194echo " all done."
195
f4e43257 196## Symlink backgrounds.
960af1a5
MW
197backgrounds="
198 jue-peek.jpg
199 medusa.jpg
5236501e 200 bsg-supper.jpg
960af1a5 201 rayne.jpg
56c871ef 202 hypatia.jpg
e1ca556b
MW
203 noodly.jpg
204 lovelace.jpg"
f4e43257
MW
205if [ "$xstuff" ]; then
206 echo "Installing backgrounds..."
207 for b in $backgrounds; do
208 for e in enlightenment e16; do
209 dir=$HOME$sub/.$e/backgrounds
210 t=$dir/$b
211 mkdir -p $dir
99063107 212 ln -s $here/bg/$b $t.new
f4e43257
MW
213 mv $t.new $t
214 done
215 echo " $b"
216 done
217 echo " all done."
218fi
219
ce178f96
MW
220###--------------------------------------------------------------------------
221### Install useful scripts included in this package.
222
e04c4857 223scripts="
547fb8af 224 mdw-editor
b20bfd83 225 mdw-pager
b056f5c4 226 mdw-conf
7ee12623 227 mdw-build
c4e84cb1 228 emacsclient-hack
8e08f814 229 movemail-hack
68b2e9e6 230 aspell-hack
285a1386
MW
231 emerge-hack
232 lesspipe.sh
233 start-ssh-agent
4cdeb0d0
MW
234 svnwrap
235 hyperspec"
8e08f814 236[ "$xstuff" ] && scripts="$scripts
3bdada49 237 xinitcmd
34a5ea4e 238 un-backslashify-selection
c02999e8 239 lock-screen
8e08f814 240 xshutdown"
e04c4857
MW
241echo "Installing scripts..."
242mkdir -p $HOME$sub/bin
243for s in $scripts; do
244 ft=$HOME$sub/bin/$s
99063107 245 ln -s $here/bin/$s $ft.new
e04c4857
MW
246 mv $ft.new $ft
247 echo " $s"
248done
249echo " all done."
250
ce178f96
MW
251###--------------------------------------------------------------------------
252### Set up the Emacs config.
253
65ff0e8c
MW
254$echon "Finding a suitable emacs:$echoc"
255emacs=no
5fe24792 256for i in emacs22 emacs23 emacs21 emacs; do
65ff0e8c
MW
257 if type -p >/dev/null $i; then
258 emacs=$i
259 break
260 fi
261done
262if [ $emacs = no ]; then
263 echo " failed."
264 emacs=:
265else
266 echo " $emacs."
267fi
268
f617db13 269echo "Installing Emacs packages..."
400223a1
MW
270emacspkg="
271 make-regexp
a1293ade 272 ew-hols
a3bdb4d9 273 mdw-gnus-patch
1778b496 274 git git-blame vc-git stgit
400223a1
MW
275 quilt"
276for elib in $emacspkg; do
f617db13 277 $echon " $elib:$echoc"
65ff0e8c 278 if $false $emacs >/dev/null 2>&1 --no-site-file --batch --eval '
20eb0692 279 (progn
852cd5fb
MW
280 (setq load-path (nconc load-path (list "~/lib/emacs")))
281 (kill-emacs (condition-case nil
282 (progn (load-library "'"$elib"'") 0)
20eb0692 283 (error 1))))'; then
f617db13
MW
284 echo " already installed."
285 else
99063107
MW
286 if [ -f el/$elib.el ]; then
287 cp el/$elib.el $HOME$sub/lib/emacs/$elib.el
a3bdb4d9
MW
288 else
289 $echon " downloading$echoc"
290 $GETURL $HOME$sub/lib/emacs/$elib.el $REPO/$elib.el
291 fi
f617db13
MW
292 $echon " compiling$echoc"
293 (cd $HOME$sub/lib/emacs;
65ff0e8c 294 $emacs >/dev/null 2>&1 --no-site-file --batch \
20eb0692 295 --eval '(byte-compile-file "'"$elib.el"'")')
f617db13
MW
296 echo " done."
297 fi
298done
852cd5fb 299echo " all done."
f617db13
MW
300
301$echon "Setting up Emacs configuration:$echoc"
302$echon " linking$echoc"
99063107 303for f in dot-emacs.el Makefile; do
f617db13 304 set -- $(echo $link | tr : ' ')
99063107
MW
305 ln -s $here/el/$f $HOME$sub/lib/emacs/$f.new
306 mv $HOME$sub/lib/emacs/$f.new $HOME$sub/lib/emacs/$f
f617db13
MW
307done
308$echon " compiling$echoc"
65ff0e8c 309make >/dev/null 2>&1 -C $HOME$sub/lib/emacs EMACS=$emacs
f617db13 310echo " done."
ce178f96
MW
311
312###----- That's all, folks --------------------------------------------------