Commit | Line | Data |
---|---|---|
a933dad1 DL |
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 | |
177c0ea7 | 10 | # refers to the real program, e.g. |
a933dad1 DL |
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 | |
177c0ea7 | 36 | else |
a933dad1 DL |
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 | ||
ab5796a9 | 46 | # arch-tag: 1e1b74b9-bf2c-4b23-870f-9eebff7515cb |