25853
|
1 # This defines a bash command named `edit' which contacts/resumes an
|
|
2 # existing emacs or starts a new one if none exists.
|
|
3 #
|
|
4 # One way or another, any arguments are passed to emacs to specify files
|
|
5 # (provided you have loaded `resume.el').
|
|
6 #
|
|
7 # This function assumes the emacs program is named `emacs' and is somewhere
|
|
8 # in your load path. If either of these is not true, the most portable
|
|
9 # (and convenient) thing to do is to make an alias called emacs which
|
|
10 # refers to the real program, e.g.
|
|
11 #
|
|
12 # alias emacs=/usr/local/bin/gemacs
|
|
13 #
|
|
14 # Written by Noah Friedman.
|
|
15
|
|
16 function edit ()
|
|
17 {
|
|
18 local windowsys="${WINDOW_PARENT+sun}"
|
|
19
|
|
20 windowsys="${windowsys:-${DISPLAY+x}}"
|
|
21
|
|
22 if [ -n "${windowsys:+set}" ]; then
|
|
23 # Do not just test if these files are sockets. On some systems
|
|
24 # ordinary files or fifos are used instead. Just see if they exist.
|
|
25 if [ -e "${HOME}/.emacs_server" -o -e "/tmp/esrv${UID}-"* ]; then
|
|
26 emacsclient "$@"
|
|
27 return $?
|
|
28 else
|
|
29 echo "edit: starting emacs in background..." 1>&2
|
|
30 fi
|
|
31
|
|
32 case "${windowsys}" in
|
|
33 x ) (emacs "$@" &) ;;
|
|
34 sun ) (emacstool "$@" &) ;;
|
|
35 esac
|
|
36 else
|
|
37 if jobs %emacs 2> /dev/null ; then
|
|
38 echo "$(pwd)" "$@" >| ${HOME}/.emacs_args && fg %emacs
|
|
39 else
|
|
40 emacs "$@"
|
|
41 fi
|
|
42 fi
|
|
43 }
|
|
44
|
|
45
|