Add Enlightenment configuration stuff.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 6 Mar 2006 11:12:46 +0000 (11:12 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Mon, 6 Mar 2006 11:12:46 +0000 (11:12 +0000)
e-keybindings.cfg [new file with mode: 0644]
eterm-theme.cfg [new file with mode: 0644]
jue-peek.jpg [new file with mode: 0644]
mailrc
setup

diff --git a/e-keybindings.cfg b/e-keybindings.cfg
new file mode 100644 (file)
index 0000000..a6e5f07
--- /dev/null
@@ -0,0 +1,387 @@
+#include <definitions>
+
+__E_CFG_VERSION 0
+
+/*
+ * Global button bindings... specially named actionclass that applies to
+ * all client windows - so you can bind "alt - left click" to move the
+ * window, raise it or something.... 
+ */
+
+__ACLASS __BGN
+  __NAME BUTTONBINDINGS
+  __TYPE __TYPE_NORMAL
+    __EVENT __MOUSE_PRESS
+    __BUTTON 1
+    __MODIFIER_KEY __CTRL_ALT
+    __ACTION __A_MOVE
+  __NEXT_ACTION
+    __EVENT __DOUBLE_CLICK
+    __BUTTON 1
+    __MODIFIER_KEY __CTRL_ALT
+    __ACTION __A_SHADE
+  __NEXT_ACTION
+    __EVENT __MOUSE_PRESS
+    __BUTTON 2
+    __MODIFIER_KEY __CTRL_ALT
+    __ACTION __A_RESIZE
+  __NEXT_ACTION
+    __EVENT __DOUBLE_CLICK
+    __BUTTON 2
+    __MODIFIER_KEY __CTRL_ALT
+    __ACTION __A_MAX_HEIGHT available
+  __NEXT_ACTION
+    __EVENT __MOUSE_PRESS
+    __BUTTON 3
+    __MODIFIER_KEY __CTRL_ALT
+    __ACTION __A_SHOW_MENU "named WINOPS_MENU"
+__END
+
+/* what mouse presses do on the desktop background .... */
+__ACLASS __BGN
+  __NAME DESKBINDINGS
+  __TYPE __TYPE_NORMAL
+  __TOOLTIP_TEXT "Clicking your mouse on the desktop will perform"
+  __TOOLTIP_TEXT "the following actions"
+    __TOOLTIP_ACTION_TEXT "Display User Menus"
+    __EVENT __MOUSE_PRESS
+    __BUTTON 1
+    __MODIFIER_KEY __NONE
+    __ACTION __A_SHOW_MENU "named APPS_SUBMENU"
+  __NEXT_ACTION
+    __TOOLTIP_ACTION_TEXT "Display Enlightenment Menu"
+    __EVENT __MOUSE_PRESS
+    __BUTTON 1
+    __MODIFIER_KEY __CTRL
+    __ACTION __A_SHOW_MENU "named ROOT_2"
+  __NEXT_ACTION
+    __TOOLTIP_ACTION_TEXT "Display Settings Menu"
+    __EVENT __MOUSE_PRESS
+    __BUTTON 1
+    __MODIFIER_KEY __WINDOWS_KEY
+    __ACTION __A_SHOW_MENU "named CONFIG_SUBMENU"
+  __NEXT_ACTION
+    __TOOLTIP_ACTION_TEXT "Display Enlightenment Menu"
+    __EVENT __MOUSE_PRESS
+    __BUTTON 2
+    __MODIFIER_KEY __NONE
+    __ACTION __A_SHOW_MENU "named ROOT_2"
+  __NEXT_ACTION
+    __TOOLTIP_ACTION_TEXT "Display Task List Menu"
+    __EVENT __MOUSE_PRESS
+    __BUTTON 2
+    __MODIFIER_KEY __ALT
+    __ACTION __A_SHOW_MENU "taskmenu"
+  __NEXT_ACTION
+    __TOOLTIP_ACTION_TEXT "Display Desktop Menu"
+    __EVENT __MOUSE_PRESS
+    __BUTTON 2
+    __MODIFIER_KEY __CTRL
+    __ACTION __A_SHOW_MENU "deskmenu"
+  __NEXT_ACTION
+    __TOOLTIP_ACTION_TEXT "Display Group Menu"
+    __EVENT __MOUSE_PRESS
+    __BUTTON 2
+    __MODIFIER_KEY __SHIFT
+    __ACTION __A_SHOW_MENU "groupmenu"
+  __NEXT_ACTION
+    __TOOLTIP_ACTION_TEXT "Display Settings Menu"
+    __EVENT __MOUSE_PRESS
+    __BUTTON 3
+    __MODIFIER_KEY __NONE
+    __ACTION __A_SHOW_MENU "named CONFIG_SUBMENU"
+  __NEXT_ACTION
+    __TOOLTIP_ACTION_TEXT "Go Back a Desktop"
+    __EVENT __MOUSE_PRESS
+    __BUTTON 4
+    __ALLOW_ANY_MODIFIER_KEYS __ON
+    __ACTION __A_DESKTOP_PREV
+  __NEXT_ACTION
+    __TOOLTIP_ACTION_TEXT "Go Forward a Desktop"
+    __EVENT __MOUSE_PRESS
+    __BUTTON 5
+    __ALLOW_ANY_MODIFIER_KEYS __ON
+    __ACTION __A_DESKTOP_NEXT
+__END
+
+
+/*
+******************************************************************************
+* Actionclasses used for global keybindings
+******************************************************************************
+*
+* Some Keys you can use to bind to (mainly standard English PC keyboard here)
+* This is a SMALL list to make this file readable. it in no way lists ALL 
+* possible keys that can be bound. This is just the useful keys from a normal
+* PC-style 101 key keyboard.
+*
+* BackSpace
+* Tab
+* Return
+* Pause
+* Scroll_Lock
+* Sys_Req
+* Escape
+* Delete
+* Home
+* Left
+* Up
+* Right
+* Down
+* Page_Up
+* Page_Down
+* End
+* Print
+* Insert
+* Num_Lock
+* KP_Enter
+* KP_Multiply
+* KP_Add
+* KP_Separator
+* KP_Subtract
+* KP_Decimal
+* KP_Divide
+* KP_0
+* KP_1
+* KP_2
+* KP_3
+* KP_4
+* KP_5
+* KP_6
+* KP_7
+* KP_8
+* KP_9
+* F1
+* F2
+* F3
+* F4
+* F5
+* F6
+* F7
+* F8
+* F9
+* F10
+* F11
+* F12
+* space
+* quoteright
+* comma
+* minus
+* slash
+* semicolon
+* equal
+* bracketleft
+* bracketright
+* backslash
+* quoteleft
+*
+* There are more keys. please see /usr/X11R6/include/X11/keysymdef.h for a
+* complete list fo keys (LOTS of them)
+*/
+
+__ACLASS __BGN
+/*
+* The action name is what you use to bind an actionclass to an
+* object elsewhere in the configuration
+*/
+  __NAME KEYBINDINGS
+  __TYPE __TYPE_GLOBAL
+/*  
+* The following key should be pretty self explanitory, but you should
+* really see how the Keysym is set. in your keysym.h file in your X11
+* distribution
+*/
+    __KEY Home
+/*  
+* Can I use this with any modifier? (default is no)
+*/
+    __MODIFIER_KEY __CTRL_ALT
+/*  
+* you can also use modifier to specify a specific mod mask (alt,ctrl,qshift,etc)
+*/
+    __EVENT __KEY_PRESS
+    __ACTION __A_CLEANUP size
+  __NEXT_ACTION
+    __KEY Insert
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __CTRL_ALT
+    __ACTION __A_EXEC Eterm
+  __NEXT_ACTION
+    __KEY v
+    __MODIFIER_KEY __CTRL_ALT
+    __EVENT __KEY_PRESS
+    __ACTION __A_DESKRAY
+  __NEXT_ACTION
+    __KEY Delete
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __CTRL_ALT
+    __ACTION __A_EXIT logout
+  __NEXT_ACTION
+    __KEY End
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __CTRL_ALT
+    __ACTION __A_EXIT restart
+  __NEXT_ACTION
+    __KEY Right
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __CTRL_ALT
+    __ACTION __A_DESKTOP_NEXT
+  __NEXT_ACTION
+    __KEY Left
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __CTRL_ALT
+    __ACTION __A_DESKTOP_PREV
+  __NEXT_ACTION
+    __KEY Down
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT_SHIFT
+    __ACTION __A_AREA_MOVE_BY 0 1
+  __NEXT_ACTION
+    __KEY Up
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT_SHIFT
+    __ACTION __A_AREA_MOVE_BY 0 -1
+  __NEXT_ACTION
+    __KEY Left
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT_SHIFT
+    __ACTION __A_AREA_MOVE_BY -1 0
+  __NEXT_ACTION
+    __KEY Right
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT_SHIFT
+    __ACTION __A_AREA_MOVE_BY 1 0
+  __NEXT_ACTION
+    __KEY F1
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT
+    __ACTION __A_GOTO_DESK 0
+  __NEXT_ACTION
+    __KEY F2
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT
+    __ACTION __A_GOTO_DESK 1
+  __NEXT_ACTION
+    __KEY F3
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT
+    __ACTION __A_GOTO_DESK 2
+  __NEXT_ACTION
+    __KEY F4
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT
+    __ACTION __A_GOTO_DESK 3
+  __NEXT_ACTION
+    __KEY F5
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT
+    __ACTION __A_GOTO_DESK 4
+  __NEXT_ACTION
+    __KEY F6
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT
+    __ACTION __A_GOTO_DESK 5
+  __NEXT_ACTION
+    __KEY F7
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT
+    __ACTION __A_GOTO_DESK 6
+  __NEXT_ACTION
+    __KEY F8
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT
+    __ACTION __A_EXEC Eterm
+  __NEXT_ACTION
+    __KEY F9
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT
+    __ACTION __A_EXEC xrun
+  __NEXT_ACTION
+    __KEY F10
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT
+    __ACTION __A_EXEC panel
+  __NEXT_ACTION
+    __KEY F11
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT
+    __ACTION __A_EXEC xscreensaver-command -lock
+  __NEXT_ACTION
+    __KEY F12
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __ALT
+    __ACTION __A_EXEC xshutdown -a XWAIT_DIE -m XWAIT_DIE_NOW
+  __NEXT_ACTION
+    __KEY Tab
+    __MODIFIER_KEY __ALT
+    __EVENT __KEY_PRESS
+    __ACTION __A_FOCUS_NEXT
+  __NEXT_ACTION
+    __MODIFIER_KEY __CTRL_ALT
+    __KEY Up
+    __EVENT __KEY_PRESS
+    __ACTION __A_RAISE
+  __NEXT_ACTION
+    __MODIFIER_KEY __CTRL_ALT
+    __KEY Down
+    __EVENT __KEY_PRESS
+    __ACTION __A_LOWER
+  __NEXT_ACTION
+    __MODIFIER_KEY __CTRL_ALT
+    __KEY x
+    __EVENT __KEY_PRESS
+    __ACTION __A_KILL
+  __NEXT_ACTION
+    __MODIFIER_KEY __CTRL_ALT
+    __KEY k
+    __EVENT __KEY_PRESS
+    __ACTION __A_KILL_NASTY
+  __NEXT_ACTION
+    __MODIFIER_KEY __CTRL_ALT
+    __KEY s
+    __EVENT __KEY_PRESS
+    __ACTION __A_STICK
+  __NEXT_ACTION
+    __MODIFIER_KEY __CTRL_ALT
+    __KEY i
+    __EVENT __KEY_PRESS
+    __ACTION __A_ICONIFY
+  __NEXT_ACTION
+    __MODIFIER_KEY __CTRL_ALT
+    __KEY r
+    __EVENT __KEY_PRESS
+    __ACTION __A_SHADE
+__END
+
+/*
+ * These keybindings cant be edited because they aren't called "KEYBINDINGS" thus
+ * they also can never be lost or accidentally deleted by users
+ */
+__ACLASS __BGN
+  __NAME KEYBINDINGS_UNCHANGABLE
+  __TYPE __TYPE_GLOBAL
+    __KEY d
+    __EVENT __KEY_PRESS
+    __MODIFIER_KEY __CTRL_ALT
+    __ACTION __A_DRAGDIR_SET
+  __NEXT_ACTION
+    __KEY o
+    __MODIFIER_KEY __CTRL_ALT
+    __EVENT __KEY_PRESS
+    __ACTION __A_DRAGBAR_ORDER_SET
+  __NEXT_ACTION
+    __KEY c
+    __MODIFIER_KEY __CTRL_ALT
+    __EVENT __KEY_PRESS
+    __ACTION __A_HIDESHOW_BUTTON buttons CONFIG*
+  __NEXT_ACTION
+    __KEY b
+    __MODIFIER_KEY __CTRL_ALT
+    __EVENT __KEY_PRESS
+    __ACTION __A_HIDESHOW_BUTTON
+  __NEXT_ACTION
+    __KEY a
+    __MODIFIER_KEY __CTRL_ALT
+    __EVENT __KEY_PRESS
+    __ACTION __A_HIDESHOW_BUTTON all
+__END
diff --git a/eterm-theme.cfg b/eterm-theme.cfg
new file mode 100644 (file)
index 0000000..4852f50
--- /dev/null
@@ -0,0 +1,243 @@
+<Eterm-0.8>
+# ^- This must be the first line of any Eterm config file!
+# Format is:  <Eterm-VERSION>  where VERSION is replaced by
+#                              the version it was written for,
+#                              minus the "DR-" if any.
+#
+# This is a sample Eterm config file.  It should be placed in
+# ~/.Eterm/themes/Eterm/MAIN and modified to suit your needs
+#
+# As always, the authors guarantee absolutely nothing and take
+# no responsibility for anything that might happen to you, your
+# computer, your dog, your sex life, or anyone or anything else
+# directly or indirectly through the use of, or inability to use,
+# this program.  Use at your OWN risk.
+
+# Define the color properties
+begin color
+
+# Foreground, background, cursor, scrollbar, pointer colors
+  foreground white
+  background black
+  cursor #ff0000
+  cursor_text #008888
+  pointer white
+
+# video attribute can either be "normal" or "reverse"
+  video normal
+
+# Redefine the 16 basic colors, if you really feel the need
+# First word is "color", next is the number (0-15, BD, or UL),
+# then the values for red, green, and blue separated by spaces
+# Numbers are base 10 unless preceded by "0x" (base 16) or '0'
+# (base 8).  Alternatively, you can use color names or #xxxxxx
+# format.
+
+# The colors below are taken from Rasterman's .Xdefaults file.  They are intended to
+# display ANSI art properly when combined with a good ANSI-art font (like vga or
+# Rasterman's nexus font).
+  color  0 #000000
+  color  1 #aa0000
+  color  2 #008800
+  color  3 #aa5522
+  color  4 #0000cc
+  color  5 #aa00aa
+  color  6 #00aaaa
+  color  7 #dddddd
+  color  8 #444444
+  color  9 #ff4444
+  color 10 #44ff44
+  color 11 #ffff44
+  color 12 #4466ff
+  color 13 #ff44ff
+  color 14 #44ffff
+  color 15 #ffffff
+  color bd #ffffff
+  color ul #ffffff
+
+# This ends the color section.  Any text after the word "end" is
+# assumed to be a comment and ignored.
+end color
+
+begin image
+  type background
+  state normal
+#  mode trans
+  mode solid
+  color #ffffff #000000
+#  colormod image 102
+
+  type anchor
+  state disabled
+    color #000000 #808080
+  state normal
+    color #000000 #d0d0d0
+
+  type trough
+  state disabled
+    color #000000 #808080
+  state normal
+    color #000000 #d0d0d0
+
+  type down_arrow
+  state disabled
+    color #000000 #808080
+  state normal
+    color #000000 #d0d0d0
+
+  type up_arrow
+  state disabled
+    color #000000 #808080
+  state normal
+    color #000000 #d0d0d0
+end image
+  
+
+#  menu_text black
+#  scrollbar #d0d0d0
+#  unfocusedscrollbar #808080
+
+# The X11 attributes section.  Should be fairly self-explanatory,
+# but if not, consult the X man page.
+  begin attributes
+
+# Geometry == widthxheight+x_offset+y_offset, offsets from top left
+#             if +, bottom right if -
+#    geometry 132x50+100+100
+    title Eterm
+    name %appname()
+    geometry 80x50
+#    iconname Eterm
+
+# Set the fonts.  These must be monospace fonts.  The values shown are
+# the Eterm defaults.  The "bold" font is the font used if color BD has
+# not been set and Eterm cannot map the foreground color to one of the
+# high-intensity colors (8-15).
+    font 0 fixed
+    font 1 6x10
+    font 2 fixed
+    font 3 8x13
+    font 4 9x15
+#    font bold 7x14
+    scrollbar_type next
+    scrollbar_width 12
+    font default 2
+  end attributes
+
+# This section is for pixmap definitions.  The only one used currently
+# is "background".  The supplied numbers work just like they do for
+# Enlightenment:  first is X (width), second is Y (height).  -1 to
+# scale 100%, 0 to tile, any other number specifies W/H in pixels
+#  begin pixmaps
+#    background %random(`cat pixmaps.list 2>/dev/null`)
+#    path "./pix/:~/.Eterm/:~/.Eterm/themes/Eterm/pix:~/.Eterm/pix/:/usr/share/Eterm/pix/"
+
+# Support for these is forthcoming
+#    scroll_up -1 -1 ~/.Eterm/up_arrow.ppm
+#    scroll_down -1 -1 ~/.Eterm/down_arrow.ppm
+#    scroll_background 0 0 ~/.Eterm/scroll.ppm
+#    scroll_anchor -1 -1 ~/.Eterm/anchor.ppm
+#  end
+
+# The Kanji support options.  Same goes for these fonts as for the normal
+# ones.  The "encoding" attribute can be either "eucj" or "sjis".
+#  begin kanji
+#    font 0 k14
+#    font 1 jiskan16
+#    font 2 jiskan18
+#    font 3 jiskan24
+#    font 4 jiskan26
+#    encoding eucj
+#  end kanji
+
+# Boolean variables.  The values can be "1", "on", or "true" for TRUE, or "0",
+# "off", or "false" for FALSE.
+  begin toggles
+
+# If true, Eterm will un-iconify itself when it receives a beep (ASCII 0x07)
+    map_alert on
+
+# If true, Eterm will flash rather than sending a beep.
+    visual_bell off
+
+# If true, Eterm will prepend '-' to the shell name when calling it.
+    login_shell false
+
+# If true, Eterm will display the scroll bar
+    scrollbar on
+#    menubar off
+
+# If true, Eterm will attempt to make an entry in the utmp file to record the
+# login information.  Eterm *must* run privileged to do this.
+    utmp_logging on
+
+# If true, Eterm will handle the Meta (Alt) + keypress to set the 8th bit.
+# If false, Eterm will handle the Meta + keypress as an escape prefix. (default)
+#    meta8 false
+
+# If true, Eterm will start iconified.
+    iconic false
+
+# If true, Eterm will jump to the bottom of the window when something is echoed
+# to the terminal, either by program output or user input.
+    home_on_output 0
+    home_on_input 1
+
+# If true, Eterm will put the scrollbar on the right of the window (default is left).
+    scrollbar_right true
+
+# If true, the scrollbar will have no trough.
+    scrollbar_floating false
+
+# If true, Eterm will run with no window borders.
+    borderless false
+
+    select_line true
+
+  end toggles
+
+  begin keyboard
+
+# Use the supplied keysym to reduce/enlarge the font
+    smallfont_key LessThan
+    bigfont_key GreaterThan
+
+# You can also associate a given keysym (0xff00 - 0xffff) with a string
+#    keysym 0xffff "\r\n\e\007\t"
+
+# uncomment these two lines if your home and end keys are having problems
+#    keysym 0xff50 "\eOH"
+#    keysym 0xff57 "\eOF"
+    keysym 0xff08 "^?"
+    keysym 0xffff "\e[3\~"
+
+# Greek keyboard mode.  First the word "greek", then its boolean
+# state, then its mode (either "iso" or "ibm").
+#    greek off iso
+  end keyboard
+
+  begin misc
+
+# The command to which to pipe print requests (printscreen)
+#    print_pipe "lpr"
+
+# The number of lines in the scrollback buffer.  More lines, more memory needed.
+    save_lines 1000
+
+# The characters to use as word delimiters for double-click selection
+    cut_chars "\t\\\`\\\"\'&() *,;<=>?@[]{|}"
+
+# Defines the width of the border between the terminal window and the client window.
+# (Default is 5).
+    border_width 5
+
+# Value to use for $TERM
+    term_name xterm
+
+# Program to exec (intended for use with themes)
+#    exec bash
+
+  border_width 0
+
+end misc
+
diff --git a/jue-peek.jpg b/jue-peek.jpg
new file mode 100644 (file)
index 0000000..029d573
Binary files /dev/null and b/jue-peek.jpg differ
diff --git a/mailrc b/mailrc
index 59fe250..56378bb 100644 (file)
--- a/mailrc
+++ b/mailrc
@@ -12,3 +12,4 @@ alias spam spam@distorted.org.uk
 alias ham ham@distorted.org.uk
 alias band hibachi-dealers-members@chiark.greenend.org.uk
 alias vicky vicky@harlequin.org.uk
 alias ham ham@distorted.org.uk
 alias band hibachi-dealers-members@chiark.greenend.org.uk
 alias vicky vicky@harlequin.org.uk
+alias bug submit@bugs.distorted.org.uk
diff --git a/setup b/setup
index 03f5671..d7dd890 100755 (executable)
--- a/setup
+++ b/setup
@@ -134,14 +134,24 @@ dotfiles="
   vm mailrc
   cmucl-init.lisp clisprc.lisp sbclrc
   dircolors screenrc"
   vm mailrc
   cmucl-init.lisp clisprc.lisp sbclrc
   dircolors screenrc"
-[ "$xstuff" ] && dotfiles="$dotfiles xinitrc xsession Xdefaults"
+[ "$xstuff" ] && dotfiles="$dotfiles
+  xinitrc xsession Xdefaults
+  eterm-theme.cfg:.Eterm/themes/Eterm/theme.cfg
+  e-keybindings.cfg:.enlightenment/keybindings.cfg
+  jue-peek.jpg:.enlightenment/backgrounds/jue-peek.jpg"
 mkdir -p $HOME/test
 echo "Installing dotfiles..."
 for d in $dotfiles; do
 mkdir -p $HOME/test
 echo "Installing dotfiles..."
 for d in $dotfiles; do
-  [ -f $d ]
-  rm -f "$HOME$sub/.$d"
-  ln -s $here/$d $HOME$sub/.$d
-  echo "  .$d"
+  target=.$d
+  case $d in
+    *:*) target=${d#*:} d=${d%%:*};;
+  esac
+  ft=$HOME$sub/$target
+  dir=${ft%/*}
+  mkdir -p $dir
+  ln -s $here/$d $ft.new
+  mv $ft.new $ft
+  echo "  $target"
 done
 echo "  all done."
 
 done
 echo "  all done."
 
@@ -171,8 +181,8 @@ $echon " linking$echoc"
 for link in dot-emacs.el:dot-emacs.el emacs-Makefile:Makefile; do
   set -- $(echo $link | tr : ' ')
   from=$1 to=$2
 for link in dot-emacs.el:dot-emacs.el emacs-Makefile:Makefile; do
   set -- $(echo $link | tr : ' ')
   from=$1 to=$2
-  rm -f $HOME$sub/lib/emacs/$to
-  ln -s $here/$from $HOME$sub/lib/emacs/$to
+  ln -s $here/$from $HOME$sub/lib/emacs/$to.new
+  mv $HOME$sub/lib/emacs/$to.new $HOME$sub/lib/emacs/$to
 done
 $echon " compiling$echoc"
 make >/dev/null 2>&1 -C $HOME$sub/lib/emacs
 done
 $echon " compiling$echoc"
 make >/dev/null 2>&1 -C $HOME$sub/lib/emacs