--- /dev/null
+#
+
+install:
+ infra/makelinks setup
+
+import:
+ infra/makelinks import
+
+check:
+ infra/makelinks list
+
+.PHONY: install
--- /dev/null
+# ~/.bash_logout: executed by bash(1) when login shell exits.
+
+# when leaving the console clear the screen to increase privacy
+
+if [ "$SHLVL" = 1 ]; then
+ [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
+fi
--- /dev/null
+# Ian Jackson's shell rc
+
+if [ "x$TRNINIT" = x ]; then
+ . $HOME/.configs/setenvir
+fi
+
+hostname_completion_file=~/.hosts
+
+export PWD
+
+# My own functions
+ls() { /bin/ls -FC "$@"; }
+ll() { /bin/ls -FCla "$@"; }
+setprompt() {
+ if [ "x$SCHROOT_SESSION_ID" = x ]; then
+ PS1=`autotitle`; export PS1;
+ fi
+ }
+rs() { eval `/usr/openwin/bin/resize` ; setprompt ; }
+cd() { builtin cd "$@"; setprompt; }
+pu() { builtin pushd "$@"; setprompt; }
+po() { builtin popd "$@"; setprompt; }
+
+# Set up history and prompt
+if [ "$PS1" ]
+then
+ HISTFILE=$HOME/.history/$HOST~$$~
+ AUTOTITLE_STDOUT="%?u%U%!%?g(%G)%!%?u@%!%h:%d1~.> "
+ AUTOTITLE_WINDOW="%h - %d~. %Y.[U..[M..[D./..%X.L]..M]..R]./.. %U%?G(%G)%!"
+ AUTOTITLE_ICON="%h: %d3~. %Y.[U..[M..[D./..%X.L]..M]..R]./.."
+ export AUTOTITLE_STDOUT AUTOTITLE_WINDOW AUTOTITLE_ICON
+ setprompt
+fi
--- /dev/null
+*cut: none | left
+*paste: none | middle
+*enter: none | right
+
+epoch.nonlocal.minibuf: false
+
+xv*geometry: +10+10
+
+wish*foreground: grey90
+wish*background: grey25
+wish*activeForeground: white
+wish*activeBackground: grey35
+wish*disabledForeground: black
+wish*disabledBackground: grey25
+
+povray*geometry: +40+10
+povray*background: black
+povray*foreground: black
+
+xbiff*title: xb iwj
+xbiff*geometry: -0-0
+xbiff*foreground: red3
+xbiff*background: white
+xbiff*fullPixmap: bitmap/mail.bitmap
+xbiff*fullPixmapMask: bitmap/mail.mask
+xbiff*emptyPixmap: bitmap/nomail.bitmap
+xbiff*emptyPixmapMask: bitmap/nomail.mask
+xbiff*shapeWindow: true
+
+xbiffc*title: xb chiark
+xbiffc*geometry: -52-0
+xbiffc*foreground: black
+xbiffc*background: white
+xbiffc*fullPixmap: bitmap/mail.bitmap
+xbiffc*fullPixmapMask: bitmap/mail.mask
+xbiffc*emptyPixmap: bitmap/nomail.bitmap
+xbiffc*emptyPixmapMask: bitmap/nomail.mask
+xbiffc*shapeWindow: true
+xbiffc*volume: -100
+
+xbiffs*title: xb sysadmin
+xbiffs*geometry: -104-0
+xbiffs*foreground: #203000
+xbiffs*background: #f0fff0
+xbiffs*fullPixmap: bitmap/mail.bitmap
+xbiffs*fullPixmapMask: bitmap/mail.mask
+xbiffs*emptyPixmap: bitmap/nomail.bitmap
+xbiffs*emptyPixmapMask: bitmap/nomail.mask
+xbiffs*shapeWindow: true
+xbiffs*volume: -100
+
+xbiffp*title: xb ian
+xbiffp*geometry: -156-0
+xbiffp*foreground: #400050
+xbiffp*background: #ffe0ff
+xbiffp*fullPixmap: bitmap/mail.bitmap
+xbiffp*fullPixmapMask: bitmap/mail.mask
+xbiffp*emptyPixmap: bitmap/nomail.bitmap
+xbiffp*emptyPixmapMask: bitmap/nomail.mask
+xbiffp*shapeWindow: true
+xbiffp*volume: -100
+
+xclock*update: 1
+xclock*analog: true
+
+xlock.mode: qix
+
+xman*verticalList: true
+xman*topBox: false
+
+xterm*multiScroll: True
+xterm*pointerMode: 0
+xterm*saveLines: 512
+xterm*scrollBar: TRUE
+xterm*scrollKey: TRUE
+xterm*scrollTtyOutput: false
+xterm*visualBell: False
+xterm*reverseWrap: TRUE
+xterm*metaSendsEscape: TRUE
+
+xlbiff*resetSaver: TRUE
+
+mwm*XCalc*clientDecoration: -minimize -maximize
+mwm*XClock*clientDecoration: -minimize
+mwm*XLoad*clientDecoration: -minimize
+mwm*iconPlacement: top left
+mwm*interactivePlacement: false
+mwm*keyboardFocusPolicy: pointer
+mwm*resizeBorderWidth: 10
+
+Mosaic*confirmExit: false
+Mosaic*editCommand: emacs
+Mosaic*editCommandUseXterm: false
+Mosaic*trackFullURLs: true
+Mosaic*urlExpired: 100000000
+Mosaic*homeDocument: http://www.cl.cam.ac.uk/users/iwj10/
+Mosaic*bodyColors: false
+Mosaic*bodyImages: false
+
+Xarchie.archieHost: archie.doc.ic.ac.uk
+!# archie.doc.ic.ac.uk
+Xarchie.ftpDir: /home/quince/iwj/out
+Xarchie.expert: TRUE
+Xarchie.searchType: regexp
+! Xgopher resources
+
+Emacs.internalBorder: 1
+Emacs.verticalScrollBars: off
+Emacs.menuBar: off
+
+emacs.font: -misc-fixed-medium-r-semicondensed--0-0-75-75-c-0-iso8859-1
+!-misc-fixed-medium-r-semicondensed--0-0-75-75-c-0-iso8859-1
+!emacs.font: fixed
+!Emacs.font: fixed
+!emacs19.font: fixed
+
+xacpi-simple*geometry: 150x50-52-0
--- /dev/null
+!# Ian Jackson's X Resources file
+!# Colour specifications for colour displays
+
+!# *foreground: white
+!# *background: black
+!# *borderColor: brown
+!# *cursorColor: white
+!# *topShadowColor: red
+!# *bottomShadowColor: firebrick
+
+nfast-manager*foreground: grey90
+nfast-manager*background: grey22
+nfast-manager*HighlightBackground: grey22
+nfast-manager*activeForeground: white
+nfast-manager*activeBackground: grey35
+nfast-manager*DisabledForeground: black
+nfast-manager*DisabledBackground: grey22
+
+nfast-wish8*foreground: grey90
+nfast-wish8*background: grey22
+nfast-wish8*HighlightBackground: grey22
+nfast-wish8*activeForeground: white
+nfast-wish8*activeBackground: grey35
+nfast-wish8*DisabledForeground: black
+nfast-wish8*DisabledBackground: grey22
+
+gnuplot*background: black
+gnuplot*textColor: white
+gnuplot*borderColor: white
+gnuplot*axisColor: white
+gnuplot*line1Color: blue
+gnuplot*line2Color: green
+gnuplot*line3Color: orange
+gnuplot*line4Color: magenta
+gnuplot*line5Color: cyan
+gnuplot*line6Color: sienna
+gnuplot*line7Color: red
+gnuplot*line8Color: coral
+
+emacs.background: Black
+emacs.foreground: White
+emacs.pointerColor: Cyan
+emacs18.background: Black
+emacs18.foreground: White
+emacs18.pointerColor: Cyan
+emacs19.background: Black
+emacs19.foreground: White
+emacs19.pointerColor: Cyan
+
+xcalc.FKeyFore: White
+xcalc.FKeyBack: LightGray
+
+xclock*highlight: white
+xclock*foreground: white
+xclock*background: black
+xclock*hands: light blue
+xclock*hourColor: orange
+xclock*minuteColor: blue
+
+xload*highlight: white
+xload*foreground: light blue
+xload*background: black
+
+xterm*background: black
+xterm*cursorColor: white
+xterm*pointerColor: red
+xterm*pointerColorBackground: white
+xterm*foreground: white
+xterm*borderColor: brown
+
+xlbiff*foreground: white
+xlbiff*background: red4
+
+mwm*activeBackground: light steel blue
+mwm*activeBottomShadowColor: dark slate blue
+mwm*activeForeground: cyan
+mwm*activeTopShadowColor: medium blue
+mwm*background: brown
+mwm*backgroundTile: background
+mwm*bottomShadowColor: black
+mwm*bottomShadowTile: background
+mwm*foreground: cyan
+mwm*foregroundTile: background
+mwm*iconImageBackground: dark grey
+mwm*iconImageForeground: White
+mwm*makeActiveColors: all
+mwm*makeColors: shadow
+mwm*makeIconColors: shadow
+mwm*menu*background: black
+mwm*menu*foreground: goldenrod
+mwm*topShadowColor: dark blue
+mwm*topShadowTile: background
+
+xeyes*foreground: black
+
+bitmap*customization:
+bitmap*grid: TRUE
+bitmap*frame: blue
+
+Emacs.region.attributeForeground: white
+Emacs.highlight.attributeBackground: blue4
+Emacs.region.attributeBackground: #005000
+Emacs.secondary-selection.attributeBackground: red4
--- /dev/null
+!# Ian Jackson's X Resources file
+!# Colour specifications for colour displays
+
+!# *foreground: white
+!# *background: black
+!# *borderColor: brown
+!# *cursorColor: white
+!# *topShadowColor: red
+!# *bottomShadowColor: firebrick
+
+nfast-manager*foreground: grey90
+nfast-manager*background: grey22
+nfast-manager*HighlightBackground: grey22
+nfast-manager*activeForeground: white
+nfast-manager*activeBackground: grey35
+nfast-manager*DisabledForeground: black
+nfast-manager*DisabledBackground: grey22
+
+nfast-wish8*foreground: grey90
+nfast-wish8*background: grey22
+nfast-wish8*HighlightBackground: grey22
+nfast-wish8*activeForeground: white
+nfast-wish8*activeBackground: grey35
+nfast-wish8*DisabledForeground: black
+nfast-wish8*DisabledBackground: grey22
+
+emacs.background: Black
+emacs.foreground: White
+emacs.pointerColor: Cyan
+emacs18.background: Black
+emacs18.foreground: White
+emacs18.pointerColor: Cyan
+emacs19.background: Black
+emacs19.foreground: White
+emacs19.pointerColor: Cyan
+
+xcalc.FKeyFore: White
+xcalc.FKeyBack: LightGray
+
+xclock*highlight: white
+xclock*foreground: white
+xclock*background: black
+xclock*hands: light blue
+xclock*hourColor: orange
+xclock*minuteColor: blue
+
+xload*highlight: white
+xload*foreground: light blue
+xload*background: black
+
+xterm*background: black
+xterm*cursorColor: white
+xterm*pointerColor: red
+xterm*pointerColorBackground: white
+xterm*foreground: white
+xterm*borderColor: brown
+
+xlbiff*foreground: white
+xlbiff*background: red4
+
+mwm*activeBackground: light steel blue
+mwm*activeBottomShadowColor: dark slate blue
+mwm*activeForeground: cyan
+mwm*activeTopShadowColor: medium blue
+mwm*background: brown
+mwm*backgroundTile: background
+mwm*bottomShadowColor: black
+mwm*bottomShadowTile: background
+mwm*foreground: cyan
+mwm*foregroundTile: background
+mwm*iconImageBackground: dark grey
+mwm*iconImageForeground: White
+mwm*makeActiveColors: all
+mwm*makeColors: shadow
+mwm*makeIconColors: shadow
+mwm*menu*background: black
+mwm*menu*foreground: goldenrod
+mwm*topShadowColor: dark blue
+mwm*topShadowTile: background
+
+xeyes*foreground: black
+
+bitmap*customization:
+bitmap*grid: TRUE
+bitmap*frame: blue
+
+Emacs.region.attributeForeground: white
+Emacs.highlight.attributeBackground: blue4
+Emacs.region.attributeBackground: #005000
+Emacs.secondary-selection.attributeBackground: red4
--- /dev/null
+!# Ian Jackson's X Resources file
+!# Colour specifications for monochrome displays
+
+X-ray*WindowForeground: black
+X-ray*WindowBackground: white
+X-ray.ForegroundColor: black
+X-ray.BackgroundColor: white
+X-ray.CursorForeground: black
+X-ray.CursorBackground: white
+
+*foreground: black
+*background: white
+*borderColor: brown
+*cursorColor: white
+*topShadowColor: red
+*bottomShadowColor: firebrick
+
+xdvi*cursorColor: black
+
+emacs*background: black
+emacs*foreground: white
+emacs*PaneBackground: black
+emacs*PaneForeground: white
+emacs.pointerColor: Cyan
+
+emacs18*background: black
+emacs18*foreground: white
+emacs18*PaneBackground: black
+emacs18*PaneForeground: white
+emacs18.pointerColor: Cyan
+
+xcalc.FKeyFore: White
+xcalc.FKeyBack: LightGray
+
+xclock*highlight: white
+xclock*foreground: white
+xclock*background: black
+xclock*hands: light blue
+xclock*hourColor: orange
+xclock*minuteColor: blue
+
+xload*background: black
+xload*highlight: white
+xload*foreground: light blue
+
+xterm*background: white
+xterm*cursorColor: black
+xterm*pointerColor: white
+xterm*pointerColorBackground: black
+xterm*foreground: black
+
+xlbiff*foreground: black
+xlbiff*background: white
+
+xab*foreground: white
+xab*background: black
+other-xab*foreground: white
+other-xab*background: black
--- /dev/null
+!# Ian Jackson X resources file
+!# Font specifications for small fonts (fixed by default)
+
+emacs.font: -trad-fixed-medium-r-semicondensed--0-0-75-75-c-0-iso8859-1
+
+xlock.font: fr-25
+
+xlbiff*font: -*-courier-bold-r-*-*-14-*-*-*-*-*-*-*
+
+mwm*font: r14
--- /dev/null
+!# Ian Jackson X resources file
+!# Font specifications for small fonts (fixed by default)
+
+emacs.font: -misc-fixed-medium-r-semicondensed--0-0-75-75-c-0-iso8859-1
+
+xlock.font: fr-25
+
+xlbiff*font: -*-courier-bold-r-*-*-14-*-*-*-*-*-*-*
+
+mwm*font: r14
--- /dev/null
+*cut: none | left
+*paste: none | middle
+*enter: none | right
+
+epoch.nonlocal.minibuf: false
+
+xv*geometry: +10+10
+
+wish*foreground: grey90
+wish*background: grey25
+wish*activeForeground: white
+wish*activeBackground: grey35
+wish*disabledForeground: black
+wish*disabledBackground: grey25
+
+povray*geometry: +40+10
+povray*background: black
+povray*foreground: black
+
+xbiff*title: xb iwj
+xbiff*geometry: -0-0
+xbiff*foreground: red3
+xbiff*background: white
+xbiff*fullPixmap: bitmap/mail.bitmap
+xbiff*fullPixmapMask: bitmap/mail.mask
+xbiff*emptyPixmap: bitmap/nomail.bitmap
+xbiff*emptyPixmapMask: bitmap/nomail.mask
+xbiff*shapeWindow: true
+
+xbiffc*title: xb chiark
+xbiffc*geometry: -52-0
+xbiffc*foreground: black
+xbiffc*background: white
+xbiffc*fullPixmap: bitmap/mail.bitmap
+xbiffc*fullPixmapMask: bitmap/mail.mask
+xbiffc*emptyPixmap: bitmap/nomail.bitmap
+xbiffc*emptyPixmapMask: bitmap/nomail.mask
+xbiffc*shapeWindow: true
+xbiffc*volume: -100
+
+xbiffs*title: xb sysadmin
+xbiffs*geometry: -104-0
+xbiffs*foreground: #203000
+xbiffs*background: #f0fff0
+xbiffs*fullPixmap: bitmap/mail.bitmap
+xbiffs*fullPixmapMask: bitmap/mail.mask
+xbiffs*emptyPixmap: bitmap/nomail.bitmap
+xbiffs*emptyPixmapMask: bitmap/nomail.mask
+xbiffs*shapeWindow: true
+xbiffs*volume: -100
+
+xbiffp*title: xb ian
+xbiffp*geometry: -156-0
+xbiffp*foreground: #400050
+xbiffp*background: #ffe0ff
+xbiffp*fullPixmap: bitmap/mail.bitmap
+xbiffp*fullPixmapMask: bitmap/mail.mask
+xbiffp*emptyPixmap: bitmap/nomail.bitmap
+xbiffp*emptyPixmapMask: bitmap/nomail.mask
+xbiffp*shapeWindow: true
+xbiffp*volume: -100
+
+xclock*update: 1
+xclock*analog: true
+
+xlock.mode: qix
+
+xman*verticalList: true
+xman*topBox: false
+
+xterm*multiScroll: True
+xterm*saveLines: 512
+xterm*scrollBar: TRUE
+xterm*scrollKey: TRUE
+xterm*scrollTtyOutput: false
+xterm*visualBell: False
+xterm*reverseWrap: TRUE
+xterm*metaSendsEscape: TRUE
+
+xlbiff*resetSaver: TRUE
+
+mwm*XCalc*clientDecoration: -minimize -maximize
+mwm*XClock*clientDecoration: -minimize
+mwm*XLoad*clientDecoration: -minimize
+mwm*iconPlacement: top left
+mwm*interactivePlacement: false
+mwm*keyboardFocusPolicy: pointer
+mwm*resizeBorderWidth: 10
+
+Mosaic*confirmExit: false
+Mosaic*editCommand: emacs
+Mosaic*editCommandUseXterm: false
+Mosaic*trackFullURLs: true
+Mosaic*urlExpired: 100000000
+Mosaic*homeDocument: http://www.cl.cam.ac.uk/users/iwj10/
+Mosaic*bodyColors: false
+Mosaic*bodyImages: false
+
+Xarchie.archieHost: archie.doc.ic.ac.uk
+!# archie.doc.ic.ac.uk
+Xarchie.ftpDir: /home/quince/iwj/out
+Xarchie.expert: TRUE
+Xarchie.searchType: regexp
+! Xgopher resources
+
+Emacs.internalBorder: 1
+Emacs.verticalScrollBars: off
+Emacs.menuBar: off
+
+emacs.font: -misc-fixed-medium-r-semicondensed--0-0-75-75-c-0-iso8859-1
+!emacs.font: fixed
+!Emacs.font: fixed
+!emacs19.font: fixed
+
+xacpi-simple*geometry: 150x50-52-0
--- /dev/null
+ xauth=false printer=wind arch=Linux2
+ mm_x=406 font=fixed size=normal pixels_x=1600 display=liberator colours=colour bvolume=100 pixels_y=1200 echo=echo mm_y=305 brokenserver=false visual=TrueColor brokenbadges=true mthresh=5 kb=liberator maccel=3 depth=24 lxtermopts=-rv host=liberator dpi_x=100 bduration=150 dpi_y=100 keycodes=8-255 bpitch=500
--- /dev/null
+ xauth=false printer=wind arch=Linux2
+ mm_x=406 font=fixed size=normal pixels_x=1600 display=liberator colours=colour bvolume=100 pixels_y=1200 echo=echo mm_y=305 brokenserver=false visual=TrueColor brokenbadges=true mthresh=5 kb=liberator maccel=3 depth=24 lxtermopts=-rv host=liberator dpi_x=100 bduration=150 dpi_y=100 keycodes=8-255 bpitch=500
--- /dev/null
+ xauth=false printer=wind arch=Linux2
+ mm_x=542 font=fixed size=normal pixels_x=1600 display=liberator colours=colour bvolume=100 pixels_y=1200 echo=echo mm_y=406 brokenserver=false visual=TrueColor brokenbadges=true mthresh=5 kb=liberator maccel=4 depth=24 lxtermopts=-rv host=liberator dpi_x=75 bduration=150 dpi_y=75 keycodes=8-255 bpitch=500
--- /dev/null
+ xauth=true printer=wind arch=Linux2
+ mm_x=542 font=fixed size=normal pixels_x=1600 display=liberator colours=colour bvolume=100 pixels_y=1200 echo=echo mm_y=406 brokenserver=false visual=TrueColor brokenbadges=true mthresh=5 kb=liberator maccel=4 depth=24 lxtermopts=-rv host=liberator dpi_x=75 bduration=150 dpi_y=75 keycodes=8-255 bpitch=500
--- /dev/null
+ xauth=false printer=wind arch=Linux2
+ mm_x=361 font=fixed size=normal pixels_x=1366 display=zealot colours=colour bvolume=100 pixels_y=768 echo=echo mm_y=203 brokenserver=false visual=TrueColor brokenbadges=true mthresh=5 kb=liberator maccel=4 depth=24 lxtermopts=-rv host=zealot dpi_x=96 bduration=150 dpi_y=96 keycodes=8-255 bpitch=500
--- /dev/null
+ xauth=false printer=wind arch=Linux2
+ mm_x=361 font=fixed size=normal pixels_x=1366 display=zealot colours=colour bvolume=100 pixels_y=768 echo=echo mm_y=203 brokenserver=false visual=TrueColor brokenbadges=true mthresh=5 kb=liberator maccel=4 depth=24 lxtermopts=-rv host=zealot dpi_x=96 bduration=150 dpi_y=96 keycodes=8-255 bpitch=500
--- /dev/null
+ brokenserver=false xauth=false printer=wind lxtermopts=-rv colours=colour bpitch=500 host=zealot pixels_x=1366 dpi_y=96 bvolume=100 echo=echo dpi_x=96 depth=24 pixels_y=768 keycodes=8-255 font=fixed kb=liberator mm_x=361 visual=TrueColor size=normal display=zealot brokenbadges=true bduration=150 arch=Linux3
+ mm_y=203 maccel=4 mthresh=5
--- /dev/null
+default : kb=none colours=mono font=fixed maccel=2 mthresh=1 size=normal
+default : lxtermopts=-rv printer=wind brokenserver=false brokenbadges=true
+default : echo=echo bvolume=100 bpitch=500 bduration=150
+
+keycodes=8-108 : kb=pericom
+keycodes=8-114 : kb=pc
+keycodes=8-134 : kb=pc
+keycodes=8-157 : kb=pc
+keycodes=8-119 : kb=archim bvolume=70 bpitch=900 bduration=70
+keycodes=8-132 : kb=sun4
+keycodes=8-144 : kb=dsxt
+keycodes=8-254 : kb=tektronix
+keycodes=8-255 : kb=liberator
+keycodes=10-135 : kb=hp
+keycodes=86-251 : kb=ds
+
+depth>3 : colours=colour
+pixels_x<1024 : size=small
+dpi_x>104 : font=larger
+pixels_x>1024 : maccel=4 mthresh=5
+dpi_x>99 : maccel=3 mthresh=5
+
+display=lettuce : font=fixed
+display=flamingo : font=fixed
+
+display=mint : maccel=15 kb=mint printer=gas
+display=parsley : maccel=15 kb=mint printer=gas
+display=ufford : kb=ds3100
+display=grover : maccel=10
+
+display=puffball : font=puffball brokenserver=true
--- /dev/null
+default : kb=none colours=mono font=fixed maccel=2 mthresh=1 size=normal
+default : lxtermopts=-rv printer=wind brokenserver=false brokenbadges=true
+default : echo=echo bvolume=100 bpitch=500 bduration=150
+
+keycodes=8-108 : kb=pericom
+keycodes=8-114 : kb=pc
+keycodes=8-134 : kb=pc
+keycodes=8-157 : kb=pc
+keycodes=8-119 : kb=archim bvolume=70 bpitch=900 bduration=70
+keycodes=8-132 : kb=sun4
+keycodes=8-144 : kb=dsxt
+keycodes=8-254 : kb=tektronix
+keycodes=10-135 : kb=hp
+keycodes=86-251 : kb=ds
+
+depth>3 : colours=colour
+pixels_x<1024 : size=small
+dpi_x>104 : font=larger
+pixels_x>1024 : maccel=4 mthresh=5
+
+display=lettuce : font=fixed
+display=flamingo : font=fixed
+
+display=mint : maccel=15 kb=mint printer=gas
+display=parsley : maccel=15 kb=mint printer=gas
+display=ufford : kb=ds3100
+display=grover : maccel=10
+
+display=puffball : font=puffball brokenserver=true
--- /dev/null
+#!/bin/sh
+# Set up the environment:
+
+PATH=$HOME/personal/linux-i386/bin:$HOME/personal/scripts/bin
+
+
+CVS_RSH=ssh
+
+
+
+DEBEMAIL=ijackson@chiark.greenend.org.uk
+EMAIL=ijackson@chiark.greenend.org.uk
+export DEBEMAIL EMAIL
+
+
+
+PATH=$PATH:/usr/lib/ccache
+PATH=$PATH:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/sbin:/usr/sbin
+PATH=$PATH:/usr/lib/git-core
+
+
+
+
+
+PATH=$PATH:/usr/bin/X11
+
+export PATH
+
+CDPATH=:..:$HOME:$HOME/things
+
+unset MAILPATH
+
+
+
+
+
+EDITOR=emacs
+HISTORY=256
+HOST=`hostname`
+#LANG=C
+LESS="-eMfQj10"
+# NNTPAUTH="md5cookie1way ian"
+PAGER=less
+# PERLLIB=$HOME/personal/linux/lib/perl5
+PS1="$ "
+TRNINIT=$HOME/.trninit
+WWW_HOME=http://www.chiark.greenend.org.uk/~ijackson/
+
+export CDPATH CVS_RSH CVSROOT EDITOR ESHELL HISTORY HOST LANG LESS
+export PAGER PERLLIB PS1 TRNINIT WWW_HOME
+
+# NNTPAUTH
+
+
+
+unset ignoreeof
+
+umask 002
--- /dev/null
+#!/bin/sh
+# Set up the environment:
+
+PATH=$HOME/personal/linux-i386/bin:$HOME/personal/scripts/bin
+
+
+
+
+
+
+
+PATH=$PATH:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/sbin:/usr/sbin
+
+
+
+
+
+PATH=$PATH:/usr/bin/X11
+
+export PATH
+
+CDPATH=:..:$HOME:$HOME/things
+CVS_RSH=ssh
+
+unset MAILPATH
+
+
+
+
+
+EDITOR=emacs
+HISTORY=256
+HOST=`hostname`
+LANG=C
+LESS="-eMfQj10"
+# NNTPAUTH="md5cookie1way ian"
+PAGER=less
+# PERLLIB=$HOME/personal/linux/lib/perl5
+PS1="$ "
+TRNINIT=$HOME/.trninit
+WWW_HOME=http://www.chiark.greenend.org.uk/~ijackson/
+
+export CDPATH CVS_RSH CVSROOT EDITOR ESHELL HISTORY HOST LANG LESS
+export PAGER PERLLIB PS1 TRNINIT WWW_HOME
+
+# NNTPAUTH
+
+
+
+unset ignoreeof
+
+umask 002
--- /dev/null
+#!/bin/sh
+# Set up the environment:
+
+PATH=$HOME/personal/linux-i386/bin:$HOME/personal/scripts/bin
+
+
+CVS_RSH=ssh
+
+
+
+DEBEMAIL=ijackson@chiark.greenend.org.uk
+EMAIL=ijackson@chiark.greenend.org.uk
+export DEBEMAIL EMAIL
+
+
+
+PATH=$PATH:/usr/lib/ccache
+PATH=$PATH:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/sbin:/usr/sbin
+PATH=$PATH:/usr/lib/git-core
+
+
+
+
+
+PATH=$PATH:/usr/bin/X11
+
+export PATH
+
+CDPATH=:..:$HOME:$HOME/things
+
+unset MAILPATH
+
+
+
+
+
+EDITOR=emacs
+HISTORY=256
+HOST=`hostname`
+LANG=C
+LESS="-eMfQj10"
+# NNTPAUTH="md5cookie1way ian"
+PAGER=less
+# PERLLIB=$HOME/personal/linux/lib/perl5
+PS1="$ "
+TRNINIT=$HOME/.trninit
+WWW_HOME=http://www.chiark.greenend.org.uk/~ijackson/
+
+export CDPATH CVS_RSH CVSROOT EDITOR ESHELL HISTORY HOST LANG LESS
+export PAGER PERLLIB PS1 TRNINIT WWW_HOME
+
+# NNTPAUTH
+
+
+
+unset ignoreeof
+
+umask 002
--- /dev/null
+#!/bin/bash
+set -e
+cd $HOME
+tmp=.Xauthority.unprivtmp
+
+xauth nlist $DISPLAY | \
+with-lock-ex -w $tmp.fcntllock bash -xec "
+ xauth -f $tmp nmerge -
+ exec </dev/null
+ xauth -f $tmp generate $DISPLAY . untrusted timeout 1000000
+ xauth -f $tmp nlist $DISPLAY
+" | \
+HOME=/home/ijackson really -u ijackson xauth nmerge -
--- /dev/null
+#!/bin/bash
+set -e
+cd $HOME
+tmp=.Xauthority.unprivtmp
+
+xauth nlist $DISPLAY | \
+with-lock-ex -w $tmp.fcntllock bash -xec "
+ xauth -f $tmp nmerge -
+ exec </dev/null
+ xauth -f $tmp generate $DISPLAY . untrusted timeout 100000000
+ xauth -f $tmp nlist $DISPLAY
+" | \
+HOME=/home/ijackson really -u ijackson xauth nmerge -
--- /dev/null
+#!/bin/sh
+
+eval `.configs/configure`
+
+#PATH=/u/ian/tricks:$PATH
+
+>".counters/v.$DISPLAY"
+
+echo -n 'starting clients '
+
+#.configs/unpriv-xauth
+
+# xsetroot -fg '#883030' -bg '#204050' -bitmap bitmap/root
+# xsetroot -cursor bitmap/circle bitmap/circle-inv -fg white -bg black
+# xset b 75 300
+#if [ "x$1" != "xnotwm" ]; then
+# echo -n . ; twm &
+#fi
+#echo -n . ; xload &
+#echo -n . ; xterm -n 'xterm d' -T xterm -geometry 80x25+0-10 &
+#echo -n . ; emacs -f make-session &
+#echo -n . ; unclutter -noevents &
+#echo -n . ; xbiff -name xbiffs & xbiff & xbiff -name xbiff2 &
+#echo -n . ; stty -isig
+#echo -n . ; (while cat /dev/xconsole; do sleep 10; done) & sleep 1
+#really start-stop-daemon --stop --exec /usr/bin/X11/xconsole --user root --quie
+#
+#echo . ; exec xclock
+
+echo -n .
+
+sh .configs/x11start-colours=$colours
+
+echo -n .
+
+.configs/xclients &
+# /usr/bin/X11/xload -geometry 120x120+34+0 &
+
+.configs/startemacs
+# if [ "x$HOST" != xquince ]
+# then
+# xrsh quince /usr/bin/X11/xload -geometry 120x120+432+0 &
+# fi
+
+xsetroot -cursor bitmap/circle bitmap/circle-inv -bg black -fg white
+#xset b $bvolume $bpitch $bduration
+echo x11start
+xset m $maccel $mthresh c off
+# b 60
+
+echo -n .
+
+# xterm -T "local" -sb -iconic -geometry 80x25-0-0 &
+
+# if [ "x$thost" = x ]
+# then
+# .configs/xtools &
+# else
+# cat .configs/setenvir - .configs/xtools <<END | rsh $thost sh &
+# DISPLAY=$display:0 export DISPLAY
+# END
+# $echo -n .
+# fi
+
+.configs/xtools &
+
+echo -n .
+
+exec xclock
--- /dev/null
+#!/bin/sh
+
+eval `.configs/configure`
+
+#PATH=/u/ian/tricks:$PATH
+
+>".counters/v.$DISPLAY"
+
+echo -n 'starting clients '
+
+# xsetroot -fg '#883030' -bg '#204050' -bitmap bitmap/root
+# xsetroot -cursor bitmap/circle bitmap/circle-inv -fg white -bg black
+# xset b 75 300
+#if [ "x$1" != "xnotwm" ]; then
+# echo -n . ; twm &
+#fi
+#echo -n . ; xload &
+#echo -n . ; xterm -n 'xterm d' -T xterm -geometry 80x25+0-10 &
+#echo -n . ; emacs -f make-session &
+#echo -n . ; unclutter -noevents &
+#echo -n . ; xbiff -name xbiffs & xbiff & xbiff -name xbiff2 &
+#echo -n . ; stty -isig
+#echo -n . ; (while cat /dev/xconsole; do sleep 10; done) & sleep 1
+#really start-stop-daemon --stop --exec /usr/bin/X11/xconsole --user root --quie
+#
+#echo . ; exec xclock
+
+echo -n .
+
+sh .configs/x11start-colours=$colours
+
+echo -n .
+
+.configs/xclients &
+# /usr/bin/X11/xload -geometry 120x120+34+0 &
+
+.configs/startemacs
+# if [ "x$HOST" != xquince ]
+# then
+# xrsh quince /usr/bin/X11/xload -geometry 120x120+432+0 &
+# fi
+
+xsetroot -cursor bitmap/circle bitmap/circle-inv -bg black -fg white
+#xset b $bvolume $bpitch $bduration
+echo x11start
+xset m $maccel $mthresh c off
+# b 60
+
+echo -n .
+
+# xterm -T "local" -sb -iconic -geometry 80x25-0-0 &
+
+# if [ "x$thost" = x ]
+# then
+# .configs/xtools &
+# else
+# cat .configs/setenvir - .configs/xtools <<END | rsh $thost sh &
+# DISPLAY=$display:0 export DISPLAY
+# END
+# $echo -n .
+# fi
+
+.configs/xtools &
+
+echo -n .
+
+exec xclock
--- /dev/null
+#!/bin/bash
+
+echo -n @
+
+d="$DISPLAY"
+if [ "x$d" = "x:0.0" ]; then d="`hostname -f`$DISPLAY"; fi
+
+
+#rsh dover <<END sh
+echo -n @
+. ./.configs/setenvir
+#DISPLAY="$d"
+#export DISPLAY
+#exec 2>>.remoteshell-errors
+#xbiff &
+#MAILHOST=login.chiark.greenend.org.uk xbiff1339 -name xbiffc -user ijackson &
+#MAILHOST=login.chiark.greenend.org.uk xbiff1339 -name xbiffp -user ian &
+#MAILHOST=login.chiark.greenend.org.uk xbiff1339 -name xbiffs -user sysadmin &
+echo -n @
+#END
--- /dev/null
+#!/bin/bash
+
+echo -n @
+
+d="$DISPLAY"
+if [ "x$d" = "x:0.0" ]; then d="`hostname -f`$DISPLAY"; fi
+
+
+#rsh dover <<END sh
+echo -n @
+. ./.configs/setenvir
+#DISPLAY="$d"
+#export DISPLAY
+#exec 2>>.remoteshell-errors
+xbiff &
+MAILHOST=login.chiark.greenend.org.uk xbiff1339 -name xbiffc -user ijackson &
+MAILHOST=login.chiark.greenend.org.uk xbiff1339 -name xbiffp -user ian &
+MAILHOST=login.chiark.greenend.org.uk xbiff1339 -name xbiffs -user sysadmin &
+echo -n @
+#END
--- /dev/null
+#!/bin/bash
+
+eval `cd $HOME && .configs/configure`
+
+#xconsole -geometry -0-0 &
+#
+#echo -n :
+
+(sleep 1; exec vtwm) &
+
+echo -n :
+
+xloadt &
+
+echo -n :
+
+xterm -n 'xterm d' -T xterm -geometry 80x25+0-10 &
+
+
+trayer --SetDockType true --widthtype request --edge top --align left --margin 30 &
+xfce4-power-manager &
+(sleep 1; exec nm-applet) &
+
+
+.configs/chiarks
+
+
+#
+#if test -d /proc/acpi/battery; then
+# xacpi-simple &
+#fi
+#
+
+
+
+.configs/xbiffs
+
+(while sleep 590; do xrefresh -geometry 200x100-0-0; done) &
+
+echo -n :
--- /dev/null
+#!/bin/bash
+
+eval `cd $HOME && .configs/configure`
+
+#xconsole -geometry -0-0 &
+#
+#echo -n :
+
+(sleep 1; exec vtwm) &
+
+echo -n :
+
+xloadt &
+
+echo -n :
+
+xterm -n 'xterm d' -T xterm -geometry 80x25+0-10 &
+
+
+nm-applet &
+trayer --SetDockType true --widthtype request --edge top --align left --margin 30 &
+(sleep 1; exec xfce4-power-manager) &
+
+
+.configs/chiarks
+
+
+#
+#if test -d /proc/acpi/battery; then
+# xacpi-simple &
+#fi
+#
+
+
+
+.configs/xbiffs
+
+(while sleep 590; do xrefresh -geometry 200x100-0-0; done) &
+
+echo -n :
--- /dev/null
+pointer = 1 3 2
+
+keycode 11 = 2 quotedbl
+keycode 12 = 3 numbersign
+keycode 22 = BackSpace
+keycode 48 = apostrophe at
+keycode 51 = numbersign asciitilde
+keycode 94 = backslash bar
+
+keycode 133 = Super_L
+remove Mod1 = Alt_L
+remove mod4 = Super_L
+add Mod1 = Alt_L Super_L
+
+! keycode 234 = Prior
+! keycode 233= Next
+! keycode 166 = Prior
+! keycode 167 = Next
+! keycode 113 = Alt_R Meta_R
+
+remove Lock = Caps_Lock
+remove Control = Control_L
+keycode 37 = Caps_Lock
+keycode 66 = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
--- /dev/null
+pointer = 1 3 2
+
+keycode 11 = 2 quotedbl
+keycode 12 = 3 numbersign
+keycode 22 = BackSpace
+keycode 48 = apostrophe at
+keycode 51 = numbersign asciitilde
+keycode 94 = backslash bar
+! keycode 234 = Prior
+! keycode 233= Next
+keycode 166 = Prior
+keycode 167 = Next
+! keycode 113 = Alt_R Meta_R
+
+remove Lock = Caps_Lock
+remove Control = Control_L
+keycode 37 = Caps_Lock
+keycode 66 = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
--- /dev/null
+xsession running
+BASH=/bin/bash
+BASHOPTS=cmdhist:complete_fullquote:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
+BASH_ALIASES=()
+BASH_ARGC=()
+BASH_ARGV=()
+BASH_CMDS=()
+BASH_LINENO=([0]="0")
+BASH_SOURCE=([0]="/home/ian/.xsession")
+BASH_VERSINFO=([0]="4" [1]="3" [2]="30" [3]="1" [4]="release" [5]="i586-pc-linux-gnu")
+BASH_VERSION='4.3.30(1)-release'
+CDPATH=:..:/home/ian:/home/ian/things
+CVS_RSH=ssh
+DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-jgpFSKd17T,guid=b38ef9a6ac8dbe5b4e2f9dde56621543
+DEBEMAIL=ijackson@chiark.greenend.org.uk
+DESKTOP_SESSION=default
+DIRSTACK=()
+DISPLAY=:1
+EDITOR=emacs
+EMAIL=ijackson@chiark.greenend.org.uk
+EUID=1000
+GDMSESSION=default
+GDM_LANG=en_GB.UTF-8
+GROUPS=()
+HISTORY=256
+HOME=/home/ian
+HOST=zealot
+HOSTNAME=zealot
+HOSTTYPE=i586
+IFS=$' \t\n'
+LANG=en_GB.UTF-8
+LESS=-eMfQj10
+LOGNAME=ian
+MACHTYPE=i586-pc-linux-gnu
+OPTERR=1
+OPTIND=1
+OSTYPE=linux-gnu
+PAGER=less
+PATH=/home/ian/personal/linux-i386/bin:/home/ian/personal/scripts/bin:/usr/lib/ccache:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/sbin:/usr/sbin:/usr/lib/git-core:/usr/bin/X11
+PIPESTATUS=([0]="0")
+PPID=19548
+PS1='$ '
+PS4='+ '
+PWD=/home/ian
+SHELL=/bin/bash
+SHELLOPTS=braceexpand:hashall:interactive-comments
+SHLVL=1
+SSH_AGENT_PID=19605
+SSH_AUTH_SOCK=/tmp/ssh-POvjkXvYlZyL/agent.19562
+TERM=dumb
+TRNINIT=/home/ian/.trninit
+UID=1000
+USER=ian
+USERNAME=ian
+WINDOWPATH=7:7
+WWW_HOME=http://www.chiark.greenend.org.uk/~ijackson/
+XAUTHORITY=/var/run/gdm3/auth-for-ian-BTPbYG/database
+XDG_RUNTIME_DIR=/run/user/1000
+XDG_SEAT=seat0
+XDG_SESSION_DESKTOP=default
+XDG_SESSION_ID=2416
+XDG_VTNR=7
+_=mthresh=5
+arch=Linux3
+bduration=150
+bpitch=500
+brokenbadges=true
+brokenserver=false
+bvolume=100
+colours=colour
+depth=24
+display=zealot
+dpi_x=96
+dpi_y=96
+echo=echo
+font=fixed
+host=zealot
+kb=liberator
+keycodes=8-255
+lxtermopts=-rv
+maccel=4
+mm_x=361
+mm_y=203
+mthresh=5
+pixels_x=1366
+pixels_y=768
+printer=wind
+size=normal
+visual=TrueColor
+xauth=false
+Warning: Only changing the first 3 of 12 buttons.
+.configs/Xresources-colours=colour:1:15: warning: missing terminating ' character
+ !# Ian Jackson's X Resources file
+ ^
+.configs/Xresources-size=normal:1:15: warning: missing terminating ' character
+ !# Ian Jackson's X Resources file
+ ^
--- /dev/null
+#!/bin/bash
+
+eval `.configs/configure`
+
+echo -n +
+# xlbiff &
+echo -n +
+#unclutter -noevents &
+echo -n +
+echo xtools
--- /dev/null
+#!/bin/bash
+
+eval `.configs/configure`
+
+echo -n +
+# xlbiff &
+echo -n +
+#unclutter -noevents &
+echo -n +
+echo xtools
+xset q |grep bell
--- /dev/null
+; Ian Jackson's Emacs startup file - runs ~ian/emacs/ian.el
+;
+(custom-set-variables
+ ;; custom-set-variables was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ '(blink-cursor-mode nil)
+ '(font-use-system-font t)
+ '(send-mail-function (quote sendmail-send-it)))
+(custom-set-faces
+ ;; custom-set-faces was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ )
+
+(setq load-path (append '("~ian/emacs") load-path))
+(load-library "ian")
+(menu-bar-mode -1)
+(put 'dired-find-alternate-file 'disabled nil)
--- /dev/null
+[user]
+ name = Ian Jackson
+ email = ijackson@chiark.greenend.org.uk
+[sendemail]
+ smtpdomain = zealot.relativity.greenend.org.uk
+ smtpserver = tunnel.chiark.greenend.org.uk
+ smtpserverport = 25
+ envelopesender = ijackson@chiark.greenend.org.uk
+ bcc = ijackson@chiark.greenend.org.uk
+[dgit-distro "debian"]
+ username = iwj
+# mirror = http://mirror.relativity.greenend.org.uk/mirror/debian-ftp/
+ keyid = 0x48B50D39
+[color]
+ diff = false
+ ui = false
+[push]
+ default = simple
--- /dev/null
+#
+# Ian's twm configuration file.
+#
+
+# RandomPlacement
+DecorateTransients
+TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
+ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
+MenuFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
+IconFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*"
+IconManagerFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*"
+IconifyByUnmapping
+NoCaseSensitive
+IconManagerGeometry "119x286+0+0"
+NoDefaults
+DontMoveOff
+OpaqueMove
+Zoom
+NoRaiseOnMove
+NoRaiseOnResize
+SortIconManager
+SqueezeTitle
+RestartPreviousState
+WarpCursor
+Function "select" { f.iconify f.deiconify }
+WindowFunction f.function "select"
+WindowRing { "emacs" "emacs18" "XTerm" }
+OldFashionedTwmWindowsMenu
+
+NoStackMode {
+ "Iceweasel"
+}
+
+VirtualDesktop "8228x3848-0-0" 48
+
+#VirtualDesktop "6432x3608-208-0" 48
+
+#VirtualDesktop "6400x3600-208-0" 48
+# +32,+8
+
+#VirtualDesktop "5136x3076-208-0" 48
+#VirtualDesktop "5120x3072-237-0" 48
+# +16,+4
+
+#VirtualDesktop "4x3-208-0" 48
+
+NotVirtualGeometries
+PanDistanceX 100
+PanDistanceY 100
+
+FixManagedVirtualGeometries
+FixTransientVirtualGeometries
+SnapRealScreen
+
+NoTitle {
+ "TWM Icon Manager"
+ "VTWM Desktop"
+ "xclock"
+ "panel"
+ "xload"
+ "xacpi-simple"
+}
+
+DontSqueezeTitle {
+ "emacs"
+ "emacs18"
+ "epoch"
+ "Emacs"
+}
+
+DontShowInDisplay {
+ "VTWM Desktop"
+ "xb ian"
+ "xb sysadmin"
+ "xb chiark"
+ "xb iwj"
+ "xclock"
+ "xload"
+ "XLoad"
+ "panel"
+ "xacpi-simple"
+}
+
+NailedDown {
+ "VTWM Desktop"
+ "xb ian"
+ "xb sysadmin"
+ "xb chiark"
+ "xb iwj"
+ "xclock"
+ "xwrits"
+ "xload"
+ "XLoad"
+ "panel"
+ "xacpi-simple"
+}
+
+Cursors
+{
+ Frame "crosshair"
+ Title "crosshair"
+ Icon "crosshair"
+ IconMgr "crosshair"
+ Move "fleur"
+ Resize "fleur"
+ Menu "sb_left_arrow"
+ Button "hand2"
+ Wait "watch"
+ Select "dot"
+ Destroy "pirate"
+}
+
+Color
+{
+ BorderColor "yellow"
+ DefaultBackground "black"
+ DefaultForeground "white"
+ TitleBackground "midnight blue"
+ TitleForeground "light steel blue"
+ MenuBackground "midnight blue"
+ MenuForeground "light steel blue"
+ MenuTitleBackground "midnight blue"
+ MenuTitleForeground "light steel blue"
+ IconBackground "midnight blue"
+ IconForeground "light steel blue"
+ IconBorderColor "red"
+ IconManagerBackground "orange1"
+ IconManagerForeground "black"
+ BorderTileForeground "red"
+ BorderTileBackground "red"
+
+ VirtualBackground "midnight blue"
+ DesktopDisplayBackground "black"
+ DesktopDisplayBorder "light steel blue"
+ RealScreenBackground "white"
+}
+
+Monochrome
+{
+ BorderColor "black"
+ DefaultBackground "black"
+ DefaultForeground "white"
+ TitleBackground "white"
+ TitleForeground "black"
+ MenuBackground "black"
+ MenuForeground "white"
+ MenuTitleBackground "black"
+ MenuTitleForeground "white"
+ IconBackground "black"
+ IconForeground "white"
+ IconBorderColor "white"
+ IconManagerBackground "white"
+ IconManagerForeground "black"
+ BorderTileForeground "black"
+ BorderTileBackground "white"
+}
+
+# Define some useful functions for motion-based actions.
+MoveDelta 3
+Function "forcemove-or-lower" { f.forcemove f.deltastop f.lower }
+Function "move-or-raise" { f.move f.deltastop f.raise }
+
+# Root window buttons
+Button1 = : root : f.menu "hosts"
+Button2 = : root : f.menu "TwmWindows"
+Button3 = : root : f.menu "programs"
+Button1 = m : root : f.unfocus
+
+Button1 = : desktop : f.movescreen
+Button2 = : desktop : f.movescreen
+#Button3 = : desktop : f.iconify
+
+# Per window buttons
+Button1 = : icon|iconmgr|frame|title : f.function "move-or-raise"
+Button2 = : icon|iconmgr|frame|title : f.function "forcemove-or-lower"
+Button3 = : icon|iconmgr|frame|title : f.menu "windowmenu"
+Button1 = shift : icon|iconmgr|frame|title : f.iconify
+Button2 = shift : icon|iconmgr|frame|title : f.resize
+Button3 = shift : icon|iconmgr|frame|title : f.zoom
+Button1 = m : icon|iconmgr|frame|title : f.focus
+Button3 = m : icon|iconmgr|frame|title : f.saveyourself
+Button1 = control : icon|iconmgr|frame|title : f.forcemove
+Button3 = control : icon|iconmgr|frame|title : f.delete
+Button3 = control|shift : icon|iconmgr|frame|title : f.destroy
+Button1 = control|shift|m : window|frame|title : f.destroy
+Button2 = control|shift|m : window|frame|title : f.forcemove
+Button3 = control|shift|m : window|frame|title : f.menu "windowmenu"
+
+"Up" = m : all : f.function "pan-up"
+"Down" = m : all : f.function "pan-down"
+"Left" = m : all : f.function "pan-left"
+"Right" = m : all : f.function "pan-right"
+
+Function "pan-up" {
+ !"raise-mini-desktop"
+ f.panup "100"
+}
+Function "pan-down" {
+ !"raise-mini-desktop"
+ f.pandown "100"
+}
+Function "pan-left" {
+ !"raise-mini-desktop"
+ f.panleft "100"
+}
+Function "pan-right" {
+ !"raise-mini-desktop"
+ f.panright "100"
+}
+
+Function "drag-with-up" {
+ f.nail
+ f.panup "100"
+ f.raise
+ f.nail
+ !"raise-mini-desktop"
+}
+
+Function "drag-with-down" {
+ f.nail
+ f.pandown "100"
+ f.raise
+ f.nail
+ !"raise-mini-desktop"
+}
+Function "drag-with-left" {
+ f.nail
+ f.panleft "100"
+ f.raise
+ f.nail
+ !"raise-mini-desktop"
+}
+Function "drag-with-right" {
+ f.nail
+ f.panright "100"
+ f.raise
+ f.nail
+ !"raise-mini-desktop"
+}
+
+"Up" = m|shift : window|frame|title : f.function "drag-with-up"
+"Down" = m|shift : window|frame|title : f.function "drag-with-down"
+"Left" = m|shift : window|frame|title : f.function "drag-with-left"
+"Right" = m|shift : window|frame|title : f.function "drag-with-right"
+
+# Accelerators out of icon manager
+# "F1" = : icon|window|frame|title : f.iconify
+"F2" = : icon|window|frame|title : f.raise
+"F3" = : icon|window|frame|title : f.lower
+"F1" = : iconmgr : f.hideiconmgr
+"F2" = : iconmgr : f.hideiconmgr
+"F7" = : all : f.warpring "prev"
+"F8" = : all : f.warpring "next"
+"Menu" = : icon|window|frame|title : f.showiconmgr
+
+# Accelerators in icon manager
+"F7" = : iconmgr : f.previconmgr
+"F8" = : iconmgr : f.nexticonmgr
+"Menu" = : iconmgr : f.function "select"
+
+# Accelerators everywhere for new clients
+"F4" = : all : !"xtrlock &"
+"F6" = : all : !"LC_CTYPE=en_GB.utf-8 xterm &"
+
+menu "windowmenu"
+{
+ "Window Menu" f.title
+ "Close" f.delete
+ "Destroy" f.destroy
+ "" f.nop
+ "Icon" f.iconify
+ "Nail" f.nail
+ "Zoom" f.zoom
+ "Resize" f.resize
+ "Identify" f.identify
+ "Forced move" f.forcemove
+ "" f.nop
+ "Mouse help" f.menu "windowmice"
+}
+
+menu "windowmice"
+{
+ "Modifiers Leftbutton Middle Right" f.nop
+ "" f.nop
+ " Move/Raise Move/Lower Menu" f.nop
+ " Shift: Iconify Resize Zoom" f.nop
+ " Meta: Focus/Unfocus Checkpoint" f.nop
+ " Control: Forced Move Delete" f.nop
+ "Control+Shift: Destroy" f.nop
+}
+
+menu "special"
+{
+ "Management" f.title
+ "Refresh" f.refresh
+ "Restart" f.function "restart"
+ "" f.nop
+ "Kill twm" f.quit
+ "" f.nop
+ "Show icon list" f.showiconmgr
+ "Hide icon list" f.hideiconmgr
+}
+
+Function "restart" {
+ !"rm .configs/mini-desktop-window-id"
+ f.restart
+}
+
+menu "programs"
+{
+ "Programs" f.title
+ "Emacs restart" !".configs/startemacs"
+ "Emacs left" !"emacs -geometry 79x40+0+35 &"
+ "" f.nop
+ "IRC Diziet" !"xterm -geometry 80x24+24-0 -T ' IRC' -e sh -c 'ssh -vt ijackson@tunnel.chiark.greenend.org.uk screen -x irc; read x' &"
+# "IRC iwj" !"xterm -geometry 80x70+340-0 -T 'IRC iwj' -e irc iwj cam.irc.devel.ncipher.com &"
+ "" f.nop
+ "Trn" !"xterm -geometry 80x45+240+95 -e trn &"
+ "Archie" !"xarchie &"
+ "Calc" !"xcalc &"
+# "Xab large" !"xab &"
+# "Xab small" !"perl -e '$xab=\"xab\"; exec $xab \"other-xab\"' &"
+ "" f.nop
+ "Management" f.menu "special"
+ "Hosts" f.menu "hosts"
+ "Games" f.menu "games"
+ "Demos" f.menu "demos"
+}
+
+
+Menu "hosts"
+{
+ "Hosts" f.title
+
+
+
+
+ "" f.nop
+ "Relativity" !"xterm-CT 'Relativity' -e ssh -p24 r-ian@relativity.dynamic.greenend.org.uk &"
+ "" f.nop
+ "Lewes" !"xterm-CT 'lewes rlogin' -e rlogin lewes &"
+ "Scunthorpe" !"xterm-CT 'scunthorpe rlogin' -e rlogin scunthorpe &"
+ "Saintpaul" !"xterm-CT 'saintpaul rlogin' -e rlogin saintpaul &"
+ "Slough" !"xterm-CT 'slough rlogin' -e rlogin slough &"
+ "Guildford" !"xterm-CT 'guildford rlogin' -e rlogin guildford &"
+ "York" !"xterm-CT 'york rlogin' -e rlogin york &"
+# "Greenock" !"xterm-CT 'greenock rlogin' -e rlogin greenock &"
+ "" f.nop
+ "Ursa" !"xterm-CT 'ursa rlogin' -e rlogin ursa.cus.cam.ac.uk -l iwj10 &"
+ "Taurus" !"xterm-CT 'taurus ssh' -e ssh taurus.cus.cam.ac.uk -l iwj10 &"
+ "Taurus rlogin" !"xterm-CT 'taurus rlogin' -e rlogin taurus.cus.cam.ac.uk -l iwj10 &"
+ "Bootes" !"xterm-CT 'bootes rlogin' -e rlogin bootes.cus.cam.ac.uk -l iwj10 &"
+ "Thor" !"xterm-CT 'thor rlogin' -e rlogin hammer.thor.cam.ac.uk -l iwj10 &"
+ "" f.nop
+ "Leek" !"xterm-CT 'leek rlogin' -e rlogin leek.cam-orl.co.uk -l iwj&"
+ "Lobster" !"xterm-CT 'lobster rlogin' -e rlogin lobster.cam-orl.co.uk -l iwj&"
+ "" f.nop
+ "Shep" !"xterm-CT 'shep ssh' -e ssh shep.cl.cam.ac.uk -l iwj10 &"
+ "Ouse" !"xterm-CT 'ouse ssh' -e ssh ouse.cl.cam.ac.uk -l iwj10 &"
+ "" f.nop
+ "Chiark" !"xterm-CT 'chiark ssh' -e ssh chiark.greenend.org.uk -l ijackson &"
+ "Chiark ian" !"xterm-CT 'chiark ssh ian' -e ssh chiark.greenend.org.uk -l ian &"
+ "Chiark II" !"xterm-CT 'chiark ssh II' -e ssh chiark.greenend.org.uk -t -l ijackson personal/linux/bin/II &"
+ "Iguana" !"xterm-CT 'iguana ssh' -e ssh iguana.ucam.org -l ijackson &"
+ "Utter" !"xterm-CT 'utter ssh' -e ssh utter.chaos.org.uk -l ijackson &"
+ "" f.nop
+ "Club" !"xterm-CT 'club rlogin' -e rlogin club.damtp.cam.ac.uk -l iwj10 &"
+ "Greed" !"xterm-CT 'greed rlogin' -e rlogin greed.damtp.cam.ac.uk -l iwj10 &"
+ "Enghp" !"xterm -geometry 80x50 -T 'enghp' -e rlogin enghp.chu.cam.ac.uk -l iwj10 &"
+ "Impren" !"xterm-CT 'impren rlogin' -e rlogin impren.al.cl.cam.ac.uk -l ijackson &"
+ "" f.nop
+ "Novare -v" !"xterm-CT 'novare -v' -e ssh -v debian.novare.net -l iwj &"
+ "Novare" !"xterm-CT 'novare' -e ssh debian.novare.net -l iwj &"
+ "Debian" !"xterm-CT 'debian' -e rlogin ftp.debian.org -l iwj &"
+ "Debra" !"xterm-CT 'debra' -e rlogin debra.debian.org -l iwj &"
+ "GNU" !"xterm-CT 'gnu' -e rlogin mescaline.gnu.org -l ijackson &"
+ "GNU dist" !"xterm-CT 'gnudist' -e rlogin gnudist.gnu.org -l ijackson &"
+ "Master" !"xterm-CT 'master' -e ssh master.debian.org -l iwj &"
+ "Va" !"xterm-CT 'va' -e ssh va.debian.org -l iwj &"
+ "Nyx" !"xterm-CT 'nyx - rlogin' -e rlogin nyx.cs.du.edu -l ijackson &"
+ "Sunsite" !"xterm-CT 'sunsite' -e rlogin sunsite.unc.edu -l iwj &"
+ "White" !"xterm-CT 'white' -geometry 80x25 -e sh -c \
+ 'rlogin white.dogwood.com; line >/dev/null' &"
+}
+
+Menu "demos"
+{
+ "Demos - probably broken" f.title
+ "Ico" !"ico &"
+ "Maze" !"maze &"
+ "Muncher" !"muncher &"
+ "Plaid" !"plaid &"
+ "Worm" !"worm &"
+ "Colors" !"xcolors &"
+ "Eyes" !"xeyes &"
+ "Life" !"xlife &"
+ "XLogo" !"xlogo &"
+}
+
+Menu "games"
+{
+ "Games - probably broken" f.title
+ "Chomp" !"xchomp &"
+ "Cbzone" !"cbzone &"
+ "MazeWar" !"xterm -e mazewar &"
+ "Mille" !"xmille &"
+ "Reversi" !"reversi &"
+ "Roids" !"roids &"
+ "Robots" !"xrobots &"
+ "Shanghai" !"xmj &"
+ "Solitaire" !"xsol &"
+ "Spider" !"spider &"
+}
--- /dev/null
+#!/bin/bash
+
+exec >>.configs/xsession-errors 2>&1
+echo xsession running
+
+. .configs/setenvir
+
+rm .configs/mini-desktop-window-id
+
+eval `.configs/configure`
+
+set
+
+if [ -x .configs/xmodmap-kb=$kb ]
+then
+ .configs/xmodmap-kb=$kb | xmodmap -
+else
+ xmodmap .configs/xmodmap-kb=$kb
+fi
+
+xrdb -merge .configs/Xresources
+xrdb -merge .configs/Xresources-colours=$colours
+xrdb -merge .configs/Xresources-font=$font
+xrdb -merge .configs/Xresources-size=$size
+
+xset b off
+
+${lxtermpath}xterm -C $lxtermopts -T "login" -e .configs/xprofile
+echo xterm done logging out again
+rm .configs/xsession-errors
+.configs/eliforp
--- /dev/null
+!# Ian Jackson's X Resources file
+!# Colour specifications for monochrome displays
+
+X-ray*WindowForeground: black
+X-ray*WindowBackground: white
+X-ray.ForegroundColor: black
+X-ray.BackgroundColor: white
+X-ray.CursorForeground: black
+X-ray.CursorBackground: white
+
+*foreground: black
+*background: white
+*borderColor: brown
+*cursorColor: white
+*topShadowColor: red
+*bottomShadowColor: firebrick
+
+xdvi*cursorColor: black
+
+emacs*background: black
+emacs*foreground: white
+emacs*PaneBackground: black
+emacs*PaneForeground: white
+emacs.pointerColor: Cyan
+
+emacs18*background: black
+emacs18*foreground: white
+emacs18*PaneBackground: black
+emacs18*PaneForeground: white
+emacs18.pointerColor: Cyan
+
+xcalc.FKeyFore: White
+xcalc.FKeyBack: LightGray
+
+xclock*highlight: white
+xclock*foreground: white
+xclock*background: black
+xclock*hands: light blue
+
+xload*background: black
+xload*highlight: white
+xload*foreground: light blue
+
+xterm*background: white
+xterm*cursorColor: black
+xterm*pointerColor: white
+xterm*pointerColorBackground: black
+xterm*foreground: black
+
+xlbiff*foreground: black
+xlbiff*background: white
+
+xab*foreground: white
+xab*background: black
+other-xab*foreground: white
+other-xab*background: black
--- /dev/null
+!# Ian Jackson's X Resources file
+!# Font specifications for larger fonts
+
+*font: -*-fixed-bold-r-normal-*-15-*-*-*-*-*-*-*
+
+emacs.font: -*-fixed-bold-r-normal-*-15-*-*-*-*-*-*-*
+
+xlock.font: -*-charter-bold-r-*-*-24-*-*-*-*-*-iso8859-*
+
+xterm*font: -*-fixed-bold-r-normal-*-15-*-*-*-*-*-*-*
+
+xab*NewList.font: -*-courier-bold-r-*-*-17-*-*-*-*-*-iso8859-*
+
+xlbiff*font: -*-courier-bold-r-*-*-14-*-*-*-*-*-*-*
--- /dev/null
+!# Ian Jackson's X resources file
+!# Font specifications for small fonts (fixed by default)
+
+*font: fixed
+
+emacs.font: fixed
+
+xlock.font: fr-25
+
+xlbiff*font: -*-courier-bold-r-*-*-14-*-*-*-*-*-*-*
+
+mwm*font: r14
--- /dev/null
+!# Ian Jackson's X Resources file
+!# Geometry specifications for normal-sized screen
+
+emacs.geometry: 80x48-0+0
+emacs18.geometry: 80x48-0+0
+emacs19.geometry: 80x48-0+0
+epoch*geometry: 80x48-0+0
+
+xcalc.Geometry: 130x230+710+0
+
+xclock*geometry: 120x120+163+0
+
+xdvi*geometry: 865x714+98-0
+
+xload*geometry: 120x120+295+0
+
+xeyes*geometry: 150x100+179+280
+
+Ups.Geometry: 650x875+382+0
+
+Xarchie.toplevel.geometry: 1042x322+52+52
+Xarchie.hostList.geometry: 300x300+0+0
+
+xlbiff*geometry: -0-0
+xlbiff*bottom: TRUE
+
+other-xab*geometry: +-14--95
--- /dev/null
+!# Ian Jackson's X Resources file
+!# Geometry specifications for small-sized screen
+
+emacs.geometry: 80x31-0+0
+emacs18.geometry: 80x31-0+0
+
+xcalc.Geometry: 130x230+710+0
+
+xload*geometry: 120x120+295+0
+
+xclock*geometry: 120x120+163+0
+
+xeyes*geometry: 150x100+150+250
+
+xlbiff*geometry: -0+0
--- /dev/null
+#!/usr/bin/perl
+# New configuration script
+
+$ENV{'PATH'}.= ':/usr/openwin/bin';
+
+$_= $ENV{'DISPLAY'};
+$_= $ENV{'HOST'}.':0' if m/^:/ || m/^unix:/;
+s/:.*$//;
+s/\.[^0-9].*$//;
+
+$pfx= shift @ARGV;
+@ARGV && warn "arguments beyond the first ignored\n";
+
+if ($_) {
+ $c{'display'}= $_;
+ $_= `xauth -i extract /dev/null $c{'display'}:0 2>&1`;
+ $c{'xauth'}= length($_) ? 'false' : 'true';
+ $_= `xdpyinfo`;
+ $c{'keycodes'}="$1-$2" if m/range:\s+minimum (\d+), maximum (\d+)\s/;
+ if (m/default screen number:\s+(\d+)\s/) {
+ $defscreen= $1;
+ $_=$' if m/\nscreen \#$defscreen:/;
+ $_="$`\n" if m/\n\S/;
+ }
+ ($c{'pixels_x'}, $c{'pixels_y'}) = ($1,$2)
+ if m/dimensions:\s+(\d+)x(\d+) pixels/;
+ ($c{'mm_x'}, $c{'mm_y'}) = ($1,$2)
+ if m/dimensions:.*\D(\d+)x(\d+) millimeters/;
+ ($c{'dpi_x'}, $c{'dpi_y'}) = ($1,$2)
+ if m/resolution:\s+(\d+)x(\d+) dots per inch/;
+ $c{'depth'} = $1 if m/depth of root window:\s+(\d+) planes/;
+ if (m/default visual id:\s+(\w+)\s/) {
+ $defvisual= $1;
+ $_=$' if m/\n visual:\s+visual id:\s+$defvisual\s/;
+ $_="$`\n" if m/\n visual:/;
+ }
+ $c{'visual'} = $1 if m/class:\s+(\w+)\s/;
+ $c{'depth'} = $1 if m/depth:\s+(\d+) planes/;
+}
+
+$c{'host'}= $ENV{'HOST'};
+#$c{'arch'}= $ENV{'ARCH'};
+$_= `uname -sr`; s/\s(\d+)\.\S*/$1/;
+$c{'arch'}= $_;
+
+chdir($ENV{'HOME'});
+chdir('.configs');
+
+open(L, "list") || die "$0: list: $!\n";
+
+while(<L>) {
+ s/\s*$//;
+ next if m/^#/ || m/^$/;
+ $ol= $l= $_;
+ $true=0;
+ while ($l =~ s/\s*(\S+)// && $1 ne ':') {
+ next if $true;
+ $_= $1;
+ if (m/^default$/) {
+ $true= 1;
+ } elsif (m/[<>]=?/) {
+ $lhs= $`;
+ $rhs= $';
+ $op= $&;
+ next unless defined($c{$lhs});
+ $true= eval '$c{$lhs} '.$op.' $rhs';
+ } elsif (m/=/) {
+ $lhs= $`;
+ $rhs= $';
+ next unless defined($c{$lhs});
+ $true= $c{$lhs} eq $rhs;
+ } else {
+ warn "condition `$_' in line $. not understood\n";
+ }
+ }
+ next unless $true;
+ while ($l =~ s/\s*(\S+)//) {
+ unless ($1 =~ m/=/) {
+ warn "consequence `$1' in line $. not understood\n";
+ next;
+ }
+ $c{$`}= $';
+ }
+}
+
+close(L);
+
+while (($k,$v) = each %c) {
+ print " $pfx$k=$v";
+}
+print "\n";
--- /dev/null
+#!/bin/sh
+
+set -e
+cd $HOME/.configs
+HOST=`hostname`
+export HOST
+cache=cache/$HOST%$DISPLAY
+newcache=cache/.$$@$HOST
+trap 'rm -f $newcache; exit 0' 0
+if cat $cache 2>/dev/null; then exit 0; fi
+./checkconfig | tee $newcache
+mv $newcache $cache
--- /dev/null
+#!/bin/sh
+# Configuration script
+
+display=`echo $DISPLAY | sed -e 's/:.*$//' -e 's/\.[^0-9].*$//'`
+[ "x$display" = x ] && display=$HOST
+
+echo `
+
+grep '^host='"$display"' ' $HOME/.configs/list
+[ "x$HOST" = "x$display" ] && grep '^arch='"$ARCH"' ' $HOME/.configs/list
+grep '^default ' $HOME/.configs/list | sed -e 's/^default //'
+
+` | sed -e 's/^/ /' -e 's/ \([a-z][^ =]*\)=/ '$1'\1=/g'
--- /dev/null
+#!/bin/sh
+# logout sequence
+
+cd
+rm -f .history/$HOST~*~
--- /dev/null
+#!/bin/sh
+emacs -f make-session&
+xbiff&
+unclutter -noevents&
+xterm -geometry 80x41-0+130&
--- /dev/null
+#!/bin/sh
+
+. .configs/setenvir
+
+stty cs8 2>/dev/null || :
+
+xloadt&
+cat /etc/motd
+exec $SHELL
--- /dev/null
+#!/bin/sh
+
+. .configs/setenvir
+
+stty cs8 2>/dev/null || :
+
+#xloadt&
+exec really
--- /dev/null
+#!/bin/sh
+
+PATH=$HOME/personal/SunOS4/bin:$HOME/public/SunOS4/bin
+PATH=$PATH:/usr/local/bin:/applic/X11R5/bin:/usr/lang:/usr/ucb:/usr/bin
+PATH=$PATH:/etc:/usr/etc:/usr/local/etc
+
+MANPATH=$HOME/personal/SunOS4/man:$HOME/public/SunOS4/man
+MANPATH=$MANPATH:/usr/local/man:/applic/X11R5/man:/usr/lang/man:/usr/man
--- /dev/null
+#!/bin/sh
+
+PATH=$HOME/personal/SunOS5/bin:$HOME/public/SunOS5/bin
+PATH=$PATH:/opt/local/bin:/opt/gnu/bin:/opt/X11R5/bin:/opt/SUNWspro/bin
+PATH=$PATH:/usr/ccs/bin:/usr/bin:/usr/ucb:/sbin:/usr/sbin
+
+MANPATH=$HOME/personal/SunOS5/man:$HOME/public/SunOS5/man
+MANPATH=$MANPATH:/opt/local/man:/opt/gnu/man:/opt/X11R5/man
+MANPATH=$MANPATH:/opt/SUNWspro/man:/usr/man
--- /dev/null
+#!/bin/bash
+
+echo -n '#'
+
+cd
+eval `cd $HOME && .configs/configure`
+
+emacs -f make-session -geometry 80x60+$(( $pixels_x * 3 - 486 ))+0 &
+
+# if [ "x$chost" = x ]
+# then
+# emacs -f make-session &
+# else
+# (cat .configs/setenvir;
+# echo DISPLAY=$display:0 export DISPLAY
+# echo echo -n ,
+# echo emacs -f make-session &
+# echo echo -n ,) | rsh $chost sh &
+# fi
+
+echo -n '#'
--- /dev/null
+#!/bin/sh
+
+xsetroot -fg dimgrey -bg darkslategrey -bitmap bitmap/root
--- /dev/null
+#!/bin/sh
+
+xsetroot -grey
--- /dev/null
+#!/usr/bin/perl
+
+open(I,"xmodmap -pk |") || die "popen xmodmap -pk: $!\n";
+
+while(<I>) {
+ m/^\s+(\d+)\s+\w+\s+\((\w+)\)\s+\w+\s+\((\w+)\)\s+\w+\s+\(/
+ || next;
+ if ($3 eq 'NoSymbol') {
+ print "keycode $1 = $2\n";
+ } else {
+ print "keycode $1 = $2 $3\n";
+ }
+}
+
+print <<'END'
+keycode 38 = Delete
+keycode 37 = Delete
+keycode 64 = Up
+keycode 80 = Left
+keycode 82 = Right
+keycode 99 = Down
+keycode 40 = F27
+keycode 41 = F29
+keycode 61 = F33
+keycode 62 = F35
+keycode 63 = F27
+keycode 65 = F29
+keycode 81 = F31
+keycode 98 = F33
+keycode 100 = F35
+END
+ ;
--- /dev/null
+! keycode 172 = Multi_key
+! keycode 124 = Escape
+! keycode 140 = Prior
+! keycode 201 = Escape
+! keycode 232 = comma less
+! keycode 237 = period greater
+
+
+! keycode 175 = Caps_Lock
+! keycode 176 = Control_L
+
+! keysym Control_L = Caps_Lock
+! keysym Caps_Lock = Control_L
+! remove Lock = Caps_Lock
+! remove Control = Control_L
+! add Lock = Caps_Lock
+! add Control = Control_L
+! add Mod1 = Multi_key Alt_L
+
+! remove Lock = Caps_Lock
+! remove Control = Control_L
+! keysym Control_L = Caps_Lock
+! keysym Caps_Lock = Control_L
+! add Lock = Caps_Lock
+! add Control = Control_L
+
+
+
+
+
+keycode 176 = Control_L
+clear Lock
+clear Control
+add Control = Control_L
+
+keycode 175 = Caps_Lock
+add Lock = Caps_Lock
--- /dev/null
+remove Lock = Caps_Lock
+remove Control = Control_L
+keysym Control_L = Caps_Lock
+keysym Caps_Lock = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
+
+keycode 124 = Escape
+
+keycode 140 = Prior
+
+keycode 201 = Escape
--- /dev/null
+remove Lock = Caps_Lock
+keycode 101 = Delete
+keycode 55 = Control_L
+keycode 87 = Caps_Lock
+keycode 11 = Multi_Char
+add Control = Control_L
+add Lock = Caps_Lock
--- /dev/null
+keycode 102 = Delete
--- /dev/null
+keycode 11 = 2 quotedbl
+keycode 12 = 3 numbersign
+keycode 22 = BackSpace
+keycode 48 = apostrophe at
+keycode 51 = numbersign asciitilde
+keycode 94 = backslash bar
+keycode 103 = Prior
+keycode 99 = End
+
+remove Lock = Caps_Lock
+remove Control = Control_L
+keycode 37 = Caps_Lock
+keycode 66 = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
--- /dev/null
+keycode 21 = Delete
+remove Lock = Caps_Lock
+remove Control = Control_L
+keysym Control_L = Caps_Lock
+keysym Caps_Lock = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
--- /dev/null
+#!/bin/sh
+xmodmap - <<END
+keycode 49 = grave asciitilde
+keycode 95 = numbersign asciitilde
+keycode 50 = Delete
+
+remove Lock = Caps_Lock
+remove Control = Control_L
+keycode 83 = Caps_Lock
+keycode 126 = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
+
+remove mod4 = Alt_L
+add mod1 = Alt_L
+END
+
+xset r 103
+xset r 130
--- /dev/null
+keycode 17 = Escape Escape
+keycode 73 = comma less
+keycode 81 = period greater
+remove Lock = Caps_Lock
+remove Control = Control_L
+keycode 25 = Caps_Lock
+keycode 28 = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
--- /dev/null
+#!/bin/bash
+# Ian Jackson's .xprofile, mostly copied from.... .profile, from
+# (eng.cam.ac.uk) CUED default .profile for /bin/sh or /bin/ksh initialization,
+# then customised for Engineering dept system. This version copied
+# to cl then customised for cl, thence to cam-orl.co.uk, thence
+# to cus.cam.ac.uk.
+
+echo '\e[10;0H'
+
+echo -n 'Hit return for windows... '
+read inputline
+if [ "x$inputline" = x ]
+then
+ exec .configs/x11start
+else
+ exec $SHELL
+fi
--- /dev/null
+update -d
+diff -u
--- /dev/null
+set confirm off
--- /dev/null
+c1 off
+escape ^]^]
+defescape ^Z^A
+nethack on
--- /dev/null
+; dired-alternate.el
+; (C)1991 Ian Jackson
+; This file is placed under the protection of the GNU General Public Licence.
+;
+; Patch to make "F" in dired-mode replace the current (dired) buffer with
+; a buffer visiting the file the cursor is on.
+;
+; Also new dired-run-file function.
+
+(defun dired-find-alternate-file ()
+ "Like dired-find-file and find-alternate-file put together"
+ (interactive)
+ (find-alternate-file (dired-get-filename)))
+
+(defun dired-run-file ()
+ "Runs the file pointed to in dired - output if any is put in the *Shell Command Output* buffer"
+ (interactive)
+ (let ((file (dired-get-filename))
+ (shelco (get-buffer-create "*Shell Command Output*"))
+ (oldbuf (current-buffer)))
+ (message "Running %s..." file)
+ (set-buffer shelco)
+ (erase-buffer)
+ (set-buffer-modified-p nil)
+ (call-process file nil shelco nil)
+ (if (buffer-modified-p)
+ (display-buffer shelco))
+ (message "Running %s...done" file)
+ (set-buffer oldbuf)
+ (revert-buffer)))
--- /dev/null
+(defun find-alternate-file (filename)
+ "Find file FILENAME, select its buffer, kill previous buffer.
+If the current buffer now contains an empty file that you just visited
+\(presumably by mistake), use this command to visit the file you really want.
+
+This function has been modified by Ian Jackson so as to revert to the
+old (Emacs 18) behaviour of not requiring you to cut out the current
+buffer's filename."
+ (interactive
+ (let ((file buffer-file-name)
+ (file-dir nil))
+ (and file
+ (setq file-dir (file-name-directory file)))
+ (list (read-file-name
+ "Find alternate file: " file-dir nil nil nil))))
+ (and (buffer-modified-p)
+ ;; (not buffer-read-only)
+ (not (yes-or-no-p (format "Buffer %s is modified; kill anyway? "
+ (buffer-name))))
+ (error "Aborted"))
+ (let ((obuf (current-buffer))
+ (ofile buffer-file-name)
+ (onum buffer-file-number)
+ (otrue buffer-file-truename)
+ (oname (buffer-name)))
+ (rename-buffer " **lose**")
+ (setq buffer-file-name nil)
+ (setq buffer-file-number nil)
+ (setq buffer-file-truename nil)
+ (unwind-protect
+ (progn
+ (unlock-buffer)
+ (find-file filename))
+ (cond ((eq obuf (current-buffer))
+ (setq buffer-file-name ofile)
+ (setq buffer-file-number onum)
+ (setq buffer-file-truename otrue)
+ (lock-buffer)
+ (rename-buffer oname))))
+ (or (eq (current-buffer) obuf)
+ (kill-buffer obuf))))
+
+(provide 'find-alternate-18style)
--- /dev/null
+;; Ian Jackson's mail nicknames file. -*- fundamental -*-
+;; (don't edit as elisp)
+
+;; Address translations for PGP
+(setq autopgp-outgoing-address-translation-alist '(
+ ("ian". "Ian Jackson <ijackson@nyx.cs.du.edu>")
+ ("Ian Jackson <ian@chiark>". "Ian Jackson <ijackson@nyx.cs.du.edu>")
+ ("Owen Dunn <O.S.Dunn@cai.cam.ac.uk>". "Owen S. Dunn <O.S.Dunn@cai.cam.ac.uk>")
+ ("Stephen Early <sde1000@cam.ac.uk>". "Stephen Early <sde1000@hermes.cam.ac.uk>")
+ ("Pete.Chown@dale.dircon.co.uk". "Pete Chown <pc@dale.demon.co.uk>")
+ ("(Pete Chown) pc@dale.demon.co.uk". "Pete Chown <pc@dale.demon.co.uk>")
+ ("Richard Brooksby <richard@harlequin.co.uk>".
+ "Richard Brooksby <richard@harlqn.co.uk>")
+ ("Ron Pritchett <pritchet@scsn.net>".
+ "Ron Pritchett <pritchet@usceast.cs.scarolina.edu>")
+ ("szahn%masterix@goesser.sie.siemens.co.at".
+ "Steffen Zahn <szahn@ets5.uebemc.siemens.de>")
+ ("Phil Karn <karn@unix.ka9q.ampr.org>". "Phil Karn <karn@qualcomm.com>")
+ ("Alan Bain <afrb2@hermes.cam.ac.uk>". "Alan F. R. Bain <afrb2@cam.ac.uk>")
+ ("Andrew Burt <aburt@nyx.cs.du.edu>".
+ "Andrew Burt <aburt@cs.du.edu>")
+ ("Grant.Denkinson@nottingham.ac.uk".
+ "Grant W. Denkinson <G.W.Denkinson@geog.nott.ac.uk>")
+ ("Ian Murdock <imurdock@gnu.ai.mit.edu>".
+ "Ian Murdock <imurdock@debian.org>")
+ ("Ian A. Murdock <imurdock@debian.org>"."Ian Murdock <imurdock@debian.org>")
+ ("Tim Morley <tim@island.demon.co.uk>". "Tim Morley <tim@derwent.co.uk>")
+ ("Eva R. Myers <erm1001@phy.cam.ac.uk>". "Eva Rebecca Myers <erm1001@cam.ac.uk>")
+ ("Patrick.Weemeeuw@kulnet.kuleuven.ac.be".
+ "Patrick J.G.C. Weemeeuw <patrick.weemeeuw@kulnet.kuleuven.ac.be>")
+ ("Allen Wheelwright <apw24@hermes.cam.ac.uk>".
+ "Allen Wheelwright <apw24@cam.ac.uk>")
+))
--- /dev/null
+; Ian's X initialisations.
+
+(if (not (string-match "^18\." emacs-version))
+ (require 'ian-x19)
+
+; (require 'x-fix-mouse)
+; (define-key mouse-map x-button-left-up 'x-cut-text-if-moved)
+; (define-key mouse-map x-button-middle 'x-cut-text)
+; (define-key mouse-map x-button-c-middle 'x-cut-and-wipe-text)
+; (define-key mouse-map x-button-right 'x-paste-text))
+)
+
+; (x-set-cursor-color "white")
+; (x-set-foreground-color "white")
+; (x-set-background-color "black")
+
+(if (boundp 'tool-bar-mode)
+ (tool-bar-mode -1))
+
+; End of this file.
--- /dev/null
+; Ian's X initialisations.
+
+(if (not (string-match "^18\." emacs-version))
+ (require 'ian-x19)
+
+ (require 'x-fix-mouse)
+ (define-key mouse-map x-button-left-up 'x-cut-text-if-moved)
+ (define-key mouse-map x-button-middle 'x-cut-text)
+ (define-key mouse-map x-button-c-middle 'x-cut-and-wipe-text)
+ (define-key mouse-map x-button-right 'x-paste-text))
+
+; (x-set-cursor-color "white")
+; (x-set-foreground-color "white")
+; (x-set-background-color "black")
+
+; End of this file.
--- /dev/null
+; Ian's X initialisations.
+
+(if (not (string-match "^18\." emacs-version))
+ (require 'ian-x19)
+
+; (require 'x-fix-mouse)
+; (define-key mouse-map x-button-left-up 'x-cut-text-if-moved)
+; (define-key mouse-map x-button-middle 'x-cut-text)
+; (define-key mouse-map x-button-c-middle 'x-cut-and-wipe-text)
+; (define-key mouse-map x-button-right 'x-paste-text))
+
+; (x-set-cursor-color "white")
+; (x-set-foreground-color "white")
+; (x-set-background-color "black")
+
+(if (boundp 'tool-bar-mode)
+ (tool-bar-mode -1))
+
+; End of this file.
--- /dev/null
+; Ian's X, Emacs-19 (and higher) initialisations
+
+;(setq frame-title-format
+; '(multiple-frames "%b" ("" invocation-name " : "
+; user-real-login-name "@" system-name)))
+
+;(setq default-frame-alist
+; (append '((internal-border-width . 1)) default-frame-alist))
+;(scroll-bar-mode nil)
+;(modify-frame-parameters (selected-frame) '((internal-border-width . 1)))
+;(let ((bd (cdr (assoc 'border-width (frame-parameters)))))
+; (set-frame-position (selected-frame)
+; (- 1024 ; was (string-to-number (ians-configure "pixels_x"))
+; (+ (frame-pixel-width) bd))
+; bd))
+
+(setq mouse-yank-at-point t)
+(setq x-pointer-shape x-pointer-left-ptr)
+(set-mouse-color (cdr (assoc 'mouse-color (frame-parameters))))
+
+(global-set-key [mode-line mouse-1]
+ '(lambda (event) (interactive "e\n")
+ (let ((old-window (selected-window)))
+ (unwind-protect
+ (progn (select-window (posn-window (event-end event)))
+ (scroll-up))
+ (select-window old-window)))))
+
+(global-set-key [mode-line C-mouse-3] 'mouse-delete-window)
+
+(global-set-key [mode-line mouse-3]
+ '(lambda (event) (interactive "e\n")
+ (let ((old-window (selected-window)))
+ (unwind-protect
+ (progn (select-window (posn-window (event-end event)))
+ (scroll-down))
+ (select-window old-window)))))
+
+(global-set-key [mode-line down-mouse-2] 'mouse-buffer-menu)
+
+(global-unset-key [C-down-mouse-1])
+(global-set-key [C-mouse-1] 'save-buffer)
+(global-unset-key [C-down-mouse-2])
+(global-set-key [C-mouse-2] 'mouse-kill)
+
+(fset 'run-programs-menu '(keymap
+ "Programs"
+ ([compile] . ("Quicker Compile" . quicker-compile))
+ ([vm] . ("VM" . vm))))
+
+(global-unset-key [down-C-mouse-3])
+(global-set-key [down-C-mouse-3] 'run-programs-menu)
+
+;(global-set-key [mouse-2] 'mouse-yank-at-click)
+;(global-set-key [mouse-3] 'mouse-save-then-kill)
+
+;(setq interprogram-paste-function
+; '(lambda () (x-get-cut-buffer 0)))
+
+; (append '((vertical-scroll-bars . nil) (horizontal-scroll-bars . nil)
+; (menu-bar-lines . 0))
+; default-frame-alist))
+
+;(if (assoc 'user-position default-frame-alist) t
+; (setq default-frame-alist
+; (append '((top . 0) (left . -1))
+; default-frame-alist))
+; (set-frame-position (selected-frame) -1 0))
+
+;(if (equal (ians-configure "colours") "mono")
+; (progn
+; (setq default-frame-alist
+; (append '((foreground-color . "black") (background-color . "white")
+; (mouse-color . "white") (cursor-color . "black"))
+; default-frame-alist))
+; (set-face-foreground 'modeline "white")
+; (set-face-background 'modeline "black")
+; (modify-frame-parameters (selected-frame) '((cursor-color . "black")))
+; ))
+;(if (equal (ians-configure "colours") "mono")
+; (setq inverse-video t))
+;
+; (append '((foreground-color . "black") (background-color . "white")
+; (mouse-color . "white") (cursor-color . "black"))
+; default-frame-alist)))
+
+(provide 'ian-x19)
--- /dev/null
+; Ian's X, Emacs-19 initialisations
+
+;(setq frame-title-format
+; '(multiple-frames "%b" ("" invocation-name " : "
+; user-real-login-name "@" system-name)))
+
+;(setq default-frame-alist
+; (append '((internal-border-width . 1)) default-frame-alist))
+;(scroll-bar-mode nil)
+;(modify-frame-parameters (selected-frame) '((internal-border-width . 1)))
+;(let ((bd (cdr (assoc 'border-width (frame-parameters)))))
+; (set-frame-position (selected-frame)
+; (- 1024 ; was (string-to-number (ians-configure "pixels_x"))
+; (+ (frame-pixel-width) bd))
+; bd))
+
+(setq mouse-yank-at-point t)
+(setq x-pointer-shape x-pointer-left-ptr)
+(set-mouse-color (cdr (assoc 'mouse-color (frame-parameters))))
+
+(global-set-key [mode-line mouse-1]
+ '(lambda (event) (interactive "e\n")
+ (let ((old-window (selected-window)))
+ (unwind-protect
+ (progn (select-window (posn-window (event-end event)))
+ (scroll-up))
+ (select-window old-window)))))
+
+(global-set-key [mode-line C-mouse-3] 'mouse-delete-window)
+
+(global-set-key [mode-line mouse-3]
+ '(lambda (event) (interactive "e\n")
+ (let ((old-window (selected-window)))
+ (unwind-protect
+ (progn (select-window (posn-window (event-end event)))
+ (scroll-down))
+ (select-window old-window)))))
+
+(global-set-key [mode-line down-mouse-2] 'mouse-buffer-menu)
+
+(global-unset-key [C-down-mouse-1])
+(global-set-key [C-mouse-1] 'save-buffer)
+(global-unset-key [C-down-mouse-2])
+(global-set-key [C-mouse-2] 'mouse-kill)
+
+(fset 'run-programs-menu '(keymap
+ "Programs"
+ ([compile] . ("Quicker Compile" . quicker-compile))
+ ([vm] . ("VM" . vm))))
+
+(global-unset-key [down-C-mouse-3])
+(global-set-key [down-C-mouse-3] 'run-programs-menu)
+
+(global-set-key [mouse-2] 'mouse-yank-at-click)
+(global-set-key [mouse-3] 'mouse-save-then-kill)
+
+(setq interprogram-paste-function
+ '(lambda () (x-get-cut-buffer 0)))
+
+; (append '((vertical-scroll-bars . nil) (horizontal-scroll-bars . nil)
+; (menu-bar-lines . 0))
+; default-frame-alist))
+
+;(if (assoc 'user-position default-frame-alist) t
+; (setq default-frame-alist
+; (append '((top . 0) (left . -1))
+; default-frame-alist))
+; (set-frame-position (selected-frame) -1 0))
+
+;(if (equal (ians-configure "colours") "mono")
+; (progn
+; (setq default-frame-alist
+; (append '((foreground-color . "black") (background-color . "white")
+; (mouse-color . "white") (cursor-color . "black"))
+; default-frame-alist))
+; (set-face-foreground 'modeline "white")
+; (set-face-background 'modeline "black")
+; (modify-frame-parameters (selected-frame) '((cursor-color . "black")))
+; ))
+;(if (equal (ians-configure "colours") "mono")
+; (setq inverse-video t))
+;
+; (append '((foreground-color . "black") (background-color . "white")
+; (mouse-color . "white") (cursor-color . "black"))
+; default-frame-alist)))
+
+(provide 'ian-x19)
--- /dev/null
+; Ian's X, Emacs-19 (and higher) initialisations
+
+;(setq frame-title-format
+; '(multiple-frames "%b" ("" invocation-name " : "
+; user-real-login-name "@" system-name)))
+
+;(setq default-frame-alist
+; (append '((internal-border-width . 1)) default-frame-alist))
+;(scroll-bar-mode nil)
+;(modify-frame-parameters (selected-frame) '((internal-border-width . 1)))
+;(let ((bd (cdr (assoc 'border-width (frame-parameters)))))
+; (set-frame-position (selected-frame)
+; (- 1024 ; was (string-to-number (ians-configure "pixels_x"))
+; (+ (frame-pixel-width) bd))
+; bd))
+
+(setq mouse-yank-at-point t)
+(setq x-pointer-shape x-pointer-left-ptr)
+(set-mouse-color (cdr (assoc 'mouse-color (frame-parameters))))
+
+(global-set-key [mode-line mouse-1]
+ '(lambda (event) (interactive "e\n")
+ (let ((old-window (selected-window)))
+ (unwind-protect
+ (progn (select-window (posn-window (event-end event)))
+ (scroll-up))
+ (select-window old-window)))))
+
+(global-set-key [mode-line C-mouse-3] 'mouse-delete-window)
+
+(global-set-key [mode-line mouse-3]
+ '(lambda (event) (interactive "e\n")
+ (let ((old-window (selected-window)))
+ (unwind-protect
+ (progn (select-window (posn-window (event-end event)))
+ (scroll-down))
+ (select-window old-window)))))
+
+(global-set-key [mode-line down-mouse-2] 'mouse-buffer-menu)
+
+(global-unset-key [C-down-mouse-1])
+(global-set-key [C-mouse-1] 'save-buffer)
+(global-unset-key [C-down-mouse-2])
+(global-set-key [C-mouse-2] 'mouse-kill)
+
+(fset 'run-programs-menu '(keymap
+ "Programs"
+ ([compile] . ("Quicker Compile" . quicker-compile))
+ ([vm] . ("VM" . vm))))
+
+(global-unset-key [down-C-mouse-3])
+(global-set-key [down-C-mouse-3] 'run-programs-menu)
+
+(global-set-key [mouse-2] 'mouse-yank-at-click)
+(global-set-key [mouse-3] 'mouse-save-then-kill)
+
+;(setq interprogram-paste-function
+; '(lambda () (x-get-cut-buffer 0)))
+
+; (append '((vertical-scroll-bars . nil) (horizontal-scroll-bars . nil)
+; (menu-bar-lines . 0))
+; default-frame-alist))
+
+;(if (assoc 'user-position default-frame-alist) t
+; (setq default-frame-alist
+; (append '((top . 0) (left . -1))
+; default-frame-alist))
+; (set-frame-position (selected-frame) -1 0))
+
+;(if (equal (ians-configure "colours") "mono")
+; (progn
+; (setq default-frame-alist
+; (append '((foreground-color . "black") (background-color . "white")
+; (mouse-color . "white") (cursor-color . "black"))
+; default-frame-alist))
+; (set-face-foreground 'modeline "white")
+; (set-face-background 'modeline "black")
+; (modify-frame-parameters (selected-frame) '((cursor-color . "black")))
+; ))
+;(if (equal (ians-configure "colours") "mono")
+; (setq inverse-video t))
+;
+; (append '((foreground-color . "black") (background-color . "white")
+; (mouse-color . "white") (cursor-color . "black"))
+; default-frame-alist)))
+
+(provide 'ian-x19)
--- /dev/null
+; This is my real emacs start-up file (for chiark).
+;
+
+(defalias 'perl-mode 'cperl-mode)
+(setq cperl-invalid-face nil
+ cperl-indent-level 4
+ cperl-continued-statement-offset 4)
+
+(make-variable-buffer-local 'indent-line-function)
+; Un-disable narrow and eval-expression
+(put 'narrow-to-region 'disabled nil)
+(put 'eval-expression 'disabled nil)
+(standard-display-european t)
+;
+(setq browse-url-netscape-program "mozilla")
+(setq common-lisp-hyperspec-root "/usr/share/doc/hyperspec/")
+;
+; Make sure we don't disturb links or change ownership, use numbers
+(setq backup-by-copying-when-mismatch t)
+(setq backup-by-copying-when-linked t)
+;(setq version-control t
+; kept-new-versions 4
+; kept-old-versions 4
+; trim-versions-without-asking t)
+;
+; Various one-liners
+(setq require-final-newline "ask")
+(if (string= window-system 'x) (load-library "ian-x"))
+(load-library "ian-aliases")
+; (load-library "auto-pgp")
+; (load-library "debian-changelog-mode")
+; (if (string= (getenv "TERM") "bbcb32") (setq term-file-prefix nil))
+; (setq explicit-shell-file-name "/usr/local/bin/tcsh")
+(setq inhibit-local-variables t)
+(setq enable-local-variables 'ask-me)
+(setq enable-recursive-minibuffers t)
+(setq compile-command "make")
+(setq next-line-add-newlines t)
+(setq diff-switches "-u")
+(setq line-move-visual nil)
+(display-time)
+;
+(set-variable 'search-repeat-char 28)
+(set-fringe-mode (cons 0 nil))
+(if (string-match "^19\." emacs-version)
+ (progn
+; (setq file-name-handler-alist ; Disable nasty auto-loading of ange-ftp
+; (delq (rassq 'ange-ftp-completion-hook-function file-name-handler-alist)
+; file-name-handler-alist))
+ (require 'find-alternate-18style)
+ (defun unset-down-mouse-23 ()
+ (local-set-key [mouse-2] 'mouse-yank-at-click)
+ (local-unset-key [down-mouse-2])
+ (local-unset-key [down-mouse-3])
+ (local-unset-key [C-down-mouse-3]))
+ (add-hook 'vm-mode-hook 'unset-down-mouse-23)
+ (add-hook 'vm-mail-mode-hook 'unset-down-mouse-23)
+ (add-hook 'text-mode-hook 'unset-down-mouse-23)
+ (add-hook 'Info-mode-hook
+ (function (lambda ()
+ (local-set-key " " 'scroll-up)
+ (local-set-key "\7f" 'scroll-down))))
+ (define-key isearch-mode-map "\1c" 'isearch-repeat-forward)
+ (define-key isearch-mode-map "\1d" 'isearch-quote-char)))
+;
+(menu-bar-mode -1)
+(defun terminal-keybindings ()
+ "This function should be called by the term-setup-hook mechanism"
+ (interactive)
+ ; Set my own keybindings
+ ;
+ ; Set keybindings generally (including I-search on C-\)
+; (global-set-key " " 'self-insert-command)
+ (global-set-key "\1c" 'isearch-forward)
+; (global-set-key "\r" 'newline)
+ (global-set-key "\ f" 'set-mark-command)
+ (global-set-key "\1d" 'quoted-insert)
+ ;
+ ; Set keybindings on esc-map
+ (global-set-key "\e#" 'query-replace-regexp)
+ (global-set-key "\e+" 'toggle-truncate-lines)
+ (global-set-key "\eg" 'goto-line)
+ (global-set-key "\es" 'isearch-forward-regexp)
+ (global-set-key "\e\e" 'eval-expression)
+ ;
+ ; Set keybindings on ^X-map.
+ (global-set-key "\18m" 'vm-mail)
+ (global-set-key "\18\1c" 'save-buffer)
+ (global-set-key "\18\1d" 'toggle-read-only)
+ (global-set-key "\18#" 'recover-file)
+ (global-set-key "\18\12" 'bury-buffer)
+ (global-set-key "\18\v" 'quicker-compile)
+ (global-set-key "\18\18" 'exchange-point-and-mark)
+ (global-set-key "\18\1a" 'load-tramp)
+ (global-set-key "\184\16" 'scroll-other-window)
+ (global-set-key "\184m" 'vm-mail-other-window)
+ (global-set-key "\189" 'vm-visit-folder)
+ (global-set-key "\188" 'rmail-input)
+ (global-set-key "\18p" 'cite-region)
+ (global-set-key "\18F" 'mail-formletter)
+ ;
+ ; Set keybindings for Sun numeric pad.
+ (setq esc-bracket-map (make-keymap))
+ (define-key esc-bracket-map "D" 'backward-char)
+ (define-key esc-bracket-map "C" 'forward-char)
+ (define-key esc-bracket-map "A" 'previous-line)
+ (define-key esc-bracket-map "B" 'next-line)
+ (define-key esc-map "[" esc-bracket-map)
+ (global-set-key "\e[214z" 'beginning-of-buffer)
+ (global-set-key "\e[220z" 'end-of-buffer)
+ (global-set-key "\e[216z" 'scroll-down)
+ (global-set-key "\e[222z" 'scroll-up)
+ (global-set-key "\e[192z" 'save-buffer)
+ (global-set-key "\e[194z" 'save-some-buffers)
+ (global-set-key "\e[195z" 'undo)
+ (global-set-key "\e[193z" 'call-last-kbd-macro)
+ (global-set-key "\e[196z" 'switch-to-buffer-other-window)
+ (global-set-key "\e[197z" 'copy-region-as-kill)
+ (global-set-key "\e[198z" 'find-file)
+ (global-set-key "\e[199z" 'yank)
+ (global-set-key "\e[198z" 'find-alternate-file)
+ (global-set-key "\e[200z" 'find-file)
+ (global-set-key "\e[201z" 'kill-region)
+ (global-set-key "\e[-1z" 'info)
+ ;
+ ; Set keybindings for Chiarks' x11emacs
+ (global-set-key "\e[5~" 'scroll-down)
+ (global-set-key "\e[6~" 'scroll-up)
+ ;
+ ; Set keybindings for knackered vt100-like terminal emulators.
+ (global-set-key "\eOt" 'scroll-down)
+ (global-set-key "\eOu" 'scroll-up)
+ (global-set-key "\eOD" 'backward-char)
+ (global-set-key "\eOC" 'forward-char)
+ (global-set-key "\eOA" 'previous-line)
+ (global-set-key "\eOB" 'next-line))
+(setq term-setup-hook 'terminal-keybindings) ; remap keys in due course
+;
+; Autoload definitions
+(autoload 'tar-mode "tar-mode")
+(autoload 'uncompress-while-visiting "uncompress")
+; (autoload 'c++-mode "c++-mode" "Mode for editing C and C++ programs" t)
+(autoload 'hide-ifdef-mode "hideif" "For editing code with #ifdefs" t)
+;(setq-default indent-tabs-mode nil)
+(autoload 'dired-find-alternate-file "dired-alternate" "Find alternately" t)
+(autoload 'dired-run-file "dired-alternate" "Run this file" t)
+(autoload 'perl-mode "perl-mode" "Mode for Perl code" t)
+; (autoload 'rmail "rmail-fixed" "Patched mail reader" t)
+(autoload 'quicker-compile "quicker-compile" "Patched Compile mode" t)
+
+(autoload 'vm "vm" "Start VM on your primary inbox." t)
+(autoload 'vm-visit-folder "vm" "Start VM on an arbitrary folder." t)
+(autoload 'vm-visit-virtual-folder "vm" "Visit a VM virtual folder." t)
+(autoload 'vm-mode "vm" "Run VM major mode on a buffer" t)
+(autoload 'vm-mail "vm" "Send a mail message using VM." t)
+(autoload 'vm-submit-bug-report "vm" "Send a bug report about VM." t)
+;
+; (autoload 'info "info-fixed" "Patched info browser" t)
+(setq shell-mode-hook
+ '(lambda ()
+ (make-variable-buffer-local 'scroll-step)
+ (setq scroll-step 1)))
+(setq inferior-lisp-program "sbcl")
+;(setq jit-lock-chunk-size 100
+; jit-lock-stealth-time 1.00)
+(setq dired-mode-hook
+ '(lambda ()
+ (define-key dired-mode-map "F" 'dired-find-alternate-file)
+ (define-key dired-mode-map "X" 'dired-run-file)))
+;
+; Prevent loading of default init file and do some of the things it did
+; (setq inhibit-default-init t)
+;
+; Additional alist handling function
+;(defun alist-remove-elem (s s-list)
+; "Delete the element of the alist S-LIST whose car is S"
+; (if s-list (if (equal s (car (car s-list)))
+; (cdr s-list)
+; (cons (car s-list) (alist-remove-elem s (cdr s-list))))
+; (nil)))
+;
+; Load C++ mode and edit Perl in perl mode
+(setq auto-mode-alist
+ (append '(("\\.[ch]$" . c-mode)
+ ("\\.[CH]$" . c++-mode)
+ ("\\.cc$" . c++-mode)
+ ("\\.hh$" . c++-mode)
+; ("\\.tar$" . tar-mode)
+ ("\\.pl$" . perl-mode)
+ ("\\.ci$" . tex-mode)
+ ("\\.asm$" . fundamental-mode)
+ ("\\.Z$" . uncompress-while-visiting))
+ auto-mode-alist))
+(setq interpreter-mode-alist
+ (append '(("sh" . fundamental-mode)
+ ("bash" . fundamental-mode))
+ interpreter-mode-alist))
+;
+; Use auto-fill when editing text
+(add-hook 'text-mode-hook '(lambda () (auto-fill-mode 1)))
+; (add-hook 'text-mode-hook '(lambda () (local-set-key " " 'self-insert-command)))
+;
+; Set up newline to auto-indent & other stuff for perl, c++ and c modes.
+(setq perl-mode-hook '(lambda ()
+ (local-set-key ";" 'self-insert-command)))
+(setq c++-mode-hook '(lambda ()
+ (hide-ifdef-mode 1)
+ (local-set-key "," 'self-insert-command)
+ (local-set-key ":" 'electric-c++-terminator)))
+; c++-electric-colon
+(setq c-mode-hook '(lambda ()
+ (hide-ifdef-mode 1)
+ (c-set-offset 'substatement-open 0 nil)
+ (local-set-key "," 'self-insert-command)
+ (local-set-key ";" 'self-insert-command)
+ (local-set-key "/" 'self-insert-command)
+ (local-set-key "*" 'self-insert-command)
+ (local-set-key "#" 'self-insert-command)
+ (local-set-key "(" 'self-insert-command)
+ (local-set-key ")" 'self-insert-command)
+ (local-set-key "{" 'self-insert-command)
+ (local-set-key "\r" 'newline-and-indent)))
+(setq c-hanging-comment-ender-p nil)
+;
+(defun vm-mail-other-window ()
+ "Like `vm-mail' command, but display buffer in another window."
+ (interactive)
+ (switch-to-buffer-other-window (current-buffer))
+ (vm-mail))
+;
+; mail precedences
+(setq mail-precedence-key-alist
+ '((?0 . "special-delivery")
+ (?1 . "air-mail")
+ (?2 . "first-class")
+ (?3 . "second-class")
+ (?5 . "third-class")
+ (?\ . nil)
+ (?6 . "bulk")
+ (?9 . "junk")))
+;
+(defun mail-precedence-as-key ()
+ "Set precedence by looking up last command char in mail-precedence-key-alist"
+ (interactive)
+ (message "%s" (concat "Precedence ["
+ (mapconcat '(lambda (c) (char-to-string (car c)))
+ mail-precedence-key-alist "")
+ "] ?"))
+ (let* ((key (read-char))
+ (prec (assoc key mail-precedence-key-alist)))
+ (if prec (mail-precedence (cdr prec))
+ (error "mail-precedence-as-key `%s' not found" key))))
+;
+(defun mail-precedence-as-key-send-and-exit (arg)
+ "Set precedence by looking up last command char in mail-precedence-key-alist,
+then call send-and-exit."
+ (interactive "P")
+ (mail-precedence-as-key)
+ (execute-kbd-macro "\ 3\ 3"))
+;
+(defun mail-precedence (prec)
+ (save-excursion
+ (mail-position-on-field "Precedence")
+ (let ((p (point)))
+ (beginning-of-line)
+ (delete-region (point) p)
+ (if prec
+ (insert "Precedence: " prec)
+ (delete-char 1)))))
+;
+(defun mail-mode-setup-keys ()
+ (local-set-key "\ 3\10" 'mail-precedence-as-key)
+ (local-set-key "\ 3p" 'mail-precedence-as-key-send-and-exit))
+(add-hook 'mail-mode-hook 'mail-mode-setup-keys)
+(add-hook 'vm-mail-mode-hook 'mail-mode-setup-keys)
+;
+(defun vm-mail-other-window ()
+ "Like `vm-mail' command, but display buffer in another window."
+ (interactive)
+ (switch-to-buffer-other-window (current-buffer))
+ (vm-mail))
+;
+(defun mail-formletter ()
+ "Run VM-mail with ,Formletter"
+ (interactive)
+ (vm-mail)
+ (rename-buffer (generate-new-buffer-name "form letter") t)
+ (delete-region (point-min) (point-max))
+ (insert-file (concat vm-folder-directory ",Formletter")))
+;
+; This function bound to C-x C-z
+(defun load-tramp ()
+ "Load tramp using require, if it isn't loaded already"
+ (interactive)
+ (message "Loading tramp...")
+ (require 'tramp) ; -extended
+ (message "Loading tramp...done"))
+;
+; This function bound to M-+
+(defun toggle-truncate-lines ()
+ "Toggle truncation or folding of long lines"
+ (interactive)
+ (set-variable 'truncate-lines (not truncate-lines))
+ (redraw-display))
+;
+; RMAIL stuff
+;(setq rmail-file-name "~/mail/RMAIL"
+; mail-archive-file-name "~/mail/Outbound"
+; rmail-primary-inbox-list '("~/mbox" "~/mail/Outbound" "~/mail/Record"
+; "~/mail/Import" "/var/spool/mail/ian")
+; rmail-delete-after-output t
+; rmail-last-rmail-file ""
+; rmail-ignored-headers (concat
+; "^Content-Identifier:\\|^X400-[^O][A-Za-z-]+:\\|"
+; rmail-ignored-headers))
+;
+(defun make-regexps-ignore-non-address (list)
+ (apply 'append (mapcar
+ '(lambda (item)
+ (let ((item (mapconcat
+ '(lambda (ch)
+ (let ((s (char-to-string ch)))
+ (if (string-match "[][.*+?^$\\]" s)
+ (concat "\\" s)
+ s)))
+ item "")))
+ (list
+ (concat "<" item ">")
+ (concat "^" item " *\\((.*)\\)?$"))))
+ list)))
+;
+; BBDB
+(setq bbdb-north-american-phone-numbers-p nil
+ bbdb/mail-auto-create-p t
+ bbdb-auto-revert-p t
+ bbdb-notice-auto-save-file-p t
+ bbdb-message-caching-enabled t)
+;
+; VM stuff
+;(load-file "~/private/private.el")
+(if (file-exists-p "~/private/private2.el")
+ (load-file "~/private/private2.el"))
+(setq vm-included-text-attribution-format "%F writes (\"%s\"):\n"
+ vm-reply-subject-prefix "Re: "
+ vm-folder-directory "~/mail/"
+ vm-delete-after-saving t
+ vm-delete-empty-folders t
+ vm-mutable-windows t
+ vm-auto-get-new-mail nil
+ vm-auto-next-message nil
+ vm-jump-to-new-messages nil
+ vm-jump-to-unread-messages nil
+ vm-mime-digest-discard-header-regexp "only-drop-this-header"
+ vm-preview-lines nil
+ vm-included-text-prefix "> "
+ vm-confirm-quit 1
+ vm-auto-center-summary t
+ vm-confirm-new-folders t
+ vm-circular-folders nil
+ vm-visit-when-saving 0
+ vm-move-after-deleting t
+ vm-keep-sent-messages t
+ vm-follow-summary-cursor t
+ vm-frame-per-composition nil
+ vm-frame-per-edit nil
+ vm-frame-per-summary nil
+ vm-frame-per-folder nil
+ vm-tale-is-an-idiot t
+ vm-primary-inbox (concat vm-folder-directory "INBOX")
+ vm-sinbin-inbox (concat vm-folder-directory "SINBOX")
+ vm-uninteresting-senders "ian"
+ vm-reply-ignored-addresses
+ (make-regexps-ignore-non-address
+ '("ian@chiark.chu.cam.ac.uk" "ian" "iwj10@cus.cam.ac.uk"
+ "ian@chiark.greenend.org.uk"
+ "ijackson@nyx.cs.du.edu" "ijackson@gnu.ai.mit.edu"))
+ vm-primary-inbox (concat vm-folder-directory "INBOX")
+
+ vm-uninteresting-senders "ian"
+ vm-reply-ignored-addresses
+ (make-regexps-ignore-non-address
+ '("ijackson@chiark.chu.cam.ac.uk" "ijackson"
+ "iwj10@thor.cam.ac.uk" "iwj10@hermes.cam.ac.uk" "iwj10@cl.cam.ac.uk"
+ "iwj10@cam.ac.uk" "Ian.Jackson@cl.cam.ac.uk"))
+ mail-archive-file-name "~/mail/Outbound"
+
+
+ vm-spool-files
+ '((vm-primary-inbox "/var/spool/mail/ian"
+ "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/News/r" "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/mbox" "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/mail/Outbound" "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/mail/Import" "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/mail/Record" "~/mail/INBOX.CRASH")
+ (vm-sinbin-inbox "/var/spool/mail/ian" "~/mail/SINBOX.CRASH"))
+ vm-startup-with-summary t
+
+ user-mail-address "ijackson@chiark.greenend.org.uk"
+
+
+; vm-spool-files
+; (list
+; (list vm-primary-inbox "~/mbox" "~/mail/INBOX.CRASH")
+; (list vm-primary-inbox "~/mail/Outbound" "~/mail/INBOX.CRASH")
+; (list vm-primary-inbox "~/mail/Record" "~/mail/INBOX.CRASH")
+; (list vm-primary-inbox "~/mail/Import" "~/mail/INBOX.CRASH")
+; (list vm-primary-inbox "/var/spool/mail/ian" "~/mail/INBOX.CRASH")
+; (list vm-primary-inbox "~/News/r" "~/mail/INBOX.CRASH")
+; (list vm-sysadmin-inbox "~/mbox" "~/mail/SINBOX.CRASH")
+; (list vm-sysadmin-inbox "~/mail/SOutbound" "~/mail/SINBOX.CRASH")
+; (list vm-sysadmin-inbox "~/mail/Import" "~/mail/SINBOX.CRASH")
+; (list vm-sysadmin-inbox "/var/spool/mail/sysadmin" "~/mail/SINBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX" "/u/ijackson/mbox" "/u/ijackson/mail/INBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX" "/u/ijackson/mail/Outbound"
+; "/u/ijackson/mail/INBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX" "/u/ijackson/mail/Record" "/u/ijackson/mail/INBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX" "/u/ijackson/mail/Import" "/u/ijackson/mail/INBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX"
+; (concat "localhost:110:pass:ijackson:" ijackson-pop-password)
+; "/u/ijackson/mail/INBOX.CRASH"))
+ vm-startup-with-summary nil
+ vm-summary-format "%3n %a %2d %3m %-19.19F %s\n"
+ mail-archive-file-name "~/mail/Outbound"
+ vm-mime-8bit-text-transfer-encoding '8bit)
+;
+(add-hook 'vm-mode-hook
+ '(lambda ()
+ (local-set-key "Q" 'vm-quit)
+ (local-set-key "q" "###Q")))
+(add-hook 'mail-mode-hook
+ '(lambda ()
+ (if (and (boundp 'folder-buffer)
+ folder-buffer
+ (string= (buffer-file-name folder-buffer)
+ (file-truename vm-sysadmin-inbox)))
+ (progn
+ (make-local-variable 'vm-mail-header-from)
+ (setq vm-mail-header-from
+ "sysadmin@chiark.greenend.org.uk (Ian Jackson)")
+ (make-local-variable 'mail-archive-file-name)
+ (setq mail-archive-file-name
+ "~/mail/SOutbound")))))
+;
+;(defun vmi ()
+; (interactive)
+; (vm "/u/ijackson/mail/INBOX"))
+;;
+(defun vms ()
+ (interactive)
+ (vm vm-sinbin-inbox))
+;
+(defun make-session ()
+ "Makes this emacs hard to kill by requiring ^X^Cy to kill it
+instead of just ^X^C."
+ (interactive)
+ (global-unset-key "\18\ 3")
+ (global-set-key "\18\ 3y" 'save-buffers-kill-emacs))
+;
+; Fix problems with M-| setting window title of emacs' parent xterm
+(defun envdelete-term-termcap-windowid (list)
+ (let ((l list))
+ (mapcar '(lambda (x)
+ (if x (delq x l)))
+ (mapcar '(lambda (x)
+ (if (or (string-match "^TERM=" x)
+ (string-match "^TERMCAP=" x)
+ (string-match "^WINDOWID=" x))
+ x
+ nil))
+ l))
+ l))
+(setq process-environment
+ (envdelete-term-termcap-windowid process-environment))
+;
+(defun add-insertion-keys (table)
+ "Adds keybindings according to TABLE. Each element of
+TABLE should be a four-element list.
+
+BINDING should be the key to bind; FUNCTION will be the name of the
+function defined to do the insertion; DESCRIPTION will be inserted
+into \"Inserts ... .\", and used as the descriptive string for the
+generated function; STRING is the string which will actually be
+inserted into the buffer when the keystroke is pressed."
+ (while table
+ (let* ((head (car table))
+ (key (car head))
+ (func (nth 1 head))
+ (desc (nth 2 head))
+ (string (nth 3 head)))
+ (defalias func
+ (list
+ 'lambda ()
+ (concat "Inserts " desc ".")
+ '(interactive)
+ (list 'insert string)))
+ (funcall 'local-set-key key func))
+ (setq table (cdr table))))
+
+(defun ian-sgml-setup ()
+ (interactive)
+ (add-insertion-keys
+ '(("\ 3\r" sgml-insert-new-para "new paragraph markup" "\n<p>\n")
+ ("\ 3\14" sgml-insert-tt-emph "tt emph markup" "<tt/")
+ ("\ 3\10" sgml-insert-prgn-emph "prgn emph markup" "<prgn/")
+ ("\ 3\ 5" sgml-insert-em-emph "em emfh markup" "<em/")
+ ("\ 3\16" sgml-insert-var-empfh "var emph markup" "<var/"))))
+(setq sgml-local-catalogs '("/jura:/usr/lib/debiandoc-sgml/sgml/catalog"))
+
+(add-hook 'sgml-mode-hook 'ian-sgml-setup)
+;
+(defvar cite-string "> " "String to insert when citing")
+;
+(defun cite-region (start end)
+ "Quote each line in the region with an angle-bracket and space.
+
+The citation string is taken from cite-string."
+ (interactive "r")
+ (save-excursion
+ (save-restriction
+ (narrow-to-region start end)
+ (goto-char (point-min))
+ (insert cite-string)
+ (while
+ (and
+ (= (forward-line) 0)
+ (> (point-max) (point)))
+ (insert cite-string)))))
+;
+; End of this file.
--- /dev/null
+; This is my real emacs start-up file (for chiark).
+;
+(make-variable-buffer-local 'indent-line-function)
+; Un-disable narrow and eval-expression
+(put 'narrow-to-region 'disabled nil)
+(put 'eval-expression 'disabled nil)
+(standard-display-european t)
+;
+; Make sure we don't disturb links or change ownership, use numbers
+(setq backup-by-copying-when-mismatch t)
+(setq backup-by-copying-when-linked t)
+;(setq version-control t
+; kept-new-versions 4
+; kept-old-versions 4
+; trim-versions-without-asking t)
+;
+; Various one-liners
+(setq require-final-newline "ask")
+(if (string= window-system 'x) (load-library "ian-x"))
+(load-library "ian-aliases")
+; (load-library "auto-pgp")
+; (load-library "debian-changelog-mode")
+; (if (string= (getenv "TERM") "bbcb32") (setq term-file-prefix nil))
+; (setq explicit-shell-file-name "/usr/local/bin/tcsh")
+(setq inhibit-local-variables t)
+(setq enable-local-variables 'ask-me)
+(setq enable-recursive-minibuffers t)
+(setq compile-command "make")
+(setq diff-switches "-u")
+(display-time)
+;
+(set-variable 'search-repeat-char 28)
+(if (string-match "^19\." emacs-version)
+ (progn
+ (setq file-name-handler-alist ; Disable nasty auto-loading of ange-ftp
+ (delq (rassq 'ange-ftp-completion-hook-function file-name-handler-alist)
+ file-name-handler-alist))
+ (require 'find-alternate-18style)
+ (defun unset-down-mouse-23 ()
+ (local-set-key [mouse-2] 'mouse-yank-at-click)
+ (local-unset-key [down-mouse-2])
+ (local-unset-key [down-mouse-3])
+ (local-unset-key [C-down-mouse-3]))
+ (add-hook 'vm-mode-hook 'unset-down-mouse-23)
+ (add-hook 'vm-mail-mode-hook 'unset-down-mouse-23)
+ (add-hook 'text-mode-hook 'unset-down-mouse-23)
+ (add-hook 'Info-mode-hook
+ (function (lambda ()
+ (local-set-key " " 'scroll-up)
+ (local-set-key "\7f" 'scroll-down))))
+ (define-key isearch-mode-map "\1c" 'isearch-repeat-forward)
+ (define-key isearch-mode-map "\1d" 'isearch-quote-char)))
+;
+(menu-bar-mode -1)
+(defun terminal-keybindings ()
+ "This function should be called by the term-setup-hook mechanism"
+ (interactive)
+ ; Set my own keybindings
+ ;
+ ; Set keybindings generally (including I-search on C-\)
+; (global-set-key " " 'self-insert-command)
+ (global-set-key "\1c" 'isearch-forward)
+ (global-set-key "\r" 'newline-and-indent)
+ (global-set-key "\ f" 'set-mark-command)
+ (global-set-key "\1d" 'quoted-insert)
+ ;
+ ; Set keybindings on esc-map
+ (global-set-key "\e#" 'query-replace-regexp)
+ (global-set-key "\e+" 'toggle-truncate-lines)
+ (global-set-key "\eg" 'goto-line)
+ (global-set-key "\es" 'isearch-forward-regexp)
+ (global-set-key "\e\e" 'eval-expression)
+ ;
+ ; Set keybindings on ^X-map.
+ (global-set-key "\18m" 'vm-mail)
+ (global-set-key "\18\1c" 'save-buffer)
+ (global-set-key "\18\1d" 'toggle-read-only)
+ (global-set-key "\18#" 'recover-file)
+ (global-set-key "\18\12" 'bury-buffer)
+ (global-set-key "\18\v" 'quicker-compile)
+ (global-set-key "\18\18" 'exchange-point-and-mark)
+ (global-set-key "\18\1a" 'load-ange-ftp)
+ (global-set-key "\184\16" 'scroll-other-window)
+ (global-set-key "\184m" 'vm-mail-other-window)
+ (global-set-key "\189" 'vm-visit-folder)
+ (global-set-key "\188" 'rmail-input)
+ (global-set-key "\18p" 'cite-region)
+ (global-set-key "\18F" 'mail-formletter)
+ ;
+ ; Set keybindings for Sun numeric pad.
+ (setq esc-bracket-map (make-keymap))
+ (define-key esc-bracket-map "D" 'backward-char)
+ (define-key esc-bracket-map "C" 'forward-char)
+ (define-key esc-bracket-map "A" 'previous-line)
+ (define-key esc-bracket-map "B" 'next-line)
+ (define-key esc-map "[" esc-bracket-map)
+ (global-set-key "\e[214z" 'beginning-of-buffer)
+ (global-set-key "\e[220z" 'end-of-buffer)
+ (global-set-key "\e[216z" 'scroll-down)
+ (global-set-key "\e[222z" 'scroll-up)
+ (global-set-key "\e[192z" 'save-buffer)
+ (global-set-key "\e[194z" 'save-some-buffers)
+ (global-set-key "\e[195z" 'undo)
+ (global-set-key "\e[193z" 'call-last-kbd-macro)
+ (global-set-key "\e[196z" 'switch-to-buffer-other-window)
+ (global-set-key "\e[197z" 'copy-region-as-kill)
+ (global-set-key "\e[198z" 'find-file)
+ (global-set-key "\e[199z" 'yank)
+ (global-set-key "\e[198z" 'find-alternate-file)
+ (global-set-key "\e[200z" 'find-file)
+ (global-set-key "\e[201z" 'kill-region)
+ (global-set-key "\e[-1z" 'info)
+ ;
+ ; Set keybindings for Chiarks' x11emacs
+ (global-set-key "\e[5~" 'scroll-down)
+ (global-set-key "\e[6~" 'scroll-up)
+ ;
+ ; Set keybindings for knackered vt100-like terminal emulators.
+ (global-set-key "\eOt" 'scroll-down)
+ (global-set-key "\eOu" 'scroll-up)
+ (global-set-key "\eOD" 'backward-char)
+ (global-set-key "\eOC" 'forward-char)
+ (global-set-key "\eOA" 'previous-line)
+ (global-set-key "\eOB" 'next-line))
+(setq term-setup-hook 'terminal-keybindings) ; remap keys in due course
+;
+; Autoload definitions
+(autoload 'tar-mode "tar-mode")
+(autoload 'uncompress-while-visiting "uncompress")
+; (autoload 'c++-mode "c++-mode" "Mode for editing C and C++ programs" t)
+(autoload 'hide-ifdef-mode "hideif" "For editing code with #ifdefs" t)
+;(setq-default indent-tabs-mode nil)
+(autoload 'dired-find-alternate-file "dired-alternate" "Find alternately" t)
+(autoload 'dired-run-file "dired-alternate" "Run this file" t)
+(autoload 'perl-mode "perl-mode" "Mode for Perl code" t)
+; (autoload 'rmail "rmail-fixed" "Patched mail reader" t)
+(autoload 'quicker-compile "quicker-compile" "Patched Compile mode" t)
+
+(autoload 'vm "vm" "Start VM on your primary inbox." t)
+(autoload 'vm-visit-folder "vm" "Start VM on an arbitrary folder." t)
+(autoload 'vm-visit-virtual-folder "vm" "Visit a VM virtual folder." t)
+(autoload 'vm-mode "vm" "Run VM major mode on a buffer" t)
+(autoload 'vm-mail "vm" "Send a mail message using VM." t)
+(autoload 'vm-submit-bug-report "vm" "Send a bug report about VM." t)
+;
+; (autoload 'info "info-fixed" "Patched info browser" t)
+(setq shell-mode-hook
+ '(lambda ()
+ (make-variable-buffer-local 'scroll-step)
+ (setq scroll-step 1)))
+; (setq inferior-lisp-program "kcl")
+(setq dired-mode-hook
+ '(lambda ()
+ (define-key dired-mode-map "F" 'dired-find-alternate-file)
+ (define-key dired-mode-map "X" 'dired-run-file)))
+;
+; Prevent loading of default init file and do some of the things it did
+; (setq inhibit-default-init t)
+;
+; Additional alist handling function
+;(defun alist-remove-elem (s s-list)
+; "Delete the element of the alist S-LIST whose car is S"
+; (if s-list (if (equal s (car (car s-list)))
+; (cdr s-list)
+; (cons (car s-list) (alist-remove-elem s (cdr s-list))))
+; (nil)))
+;
+; Load C++ mode and edit Perl in perl mode
+(setq auto-mode-alist
+ (append '(("\\.[ch]$" . c-mode)
+ ("\\.[CH]$" . c++-mode)
+ ("\\.cc$" . c++-mode)
+ ("\\.hh$" . c++-mode)
+; ("\\.tar$" . tar-mode)
+ ("\\.pl$" . perl-mode)
+ ("\\.ci$" . tex-mode)
+ ("\\.Z$" . uncompress-while-visiting))
+ auto-mode-alist))
+(setq interpreter-mode-alist
+ (append '(("sh" . fundamental-mode)
+ ("bash" . fundamental-mode))
+ interpreter-mode-alist))
+;
+; Use auto-fill when editing text
+(add-hook 'text-mode-hook '(lambda () (auto-fill-mode 1)))
+; (add-hook 'text-mode-hook '(lambda () (local-set-key " " 'self-insert-command)))
+;
+; Set up newline to auto-indent & other stuff for perl, c++ and c modes.
+(setq perl-mode-hook '(lambda ()
+ (local-set-key ";" 'self-insert-command)))
+(setq c++-mode-hook '(lambda ()
+ (hide-ifdef-mode 1)
+ (local-set-key ":" 'electric-c++-terminator)))
+; c++-electric-colon
+(setq c-mode-hook '(lambda ()
+ (hide-ifdef-mode 1)
+ (c-set-offset 'substatement-open 0 nil)
+ (local-set-key "\r" 'newline-and-indent)))
+(setq c-hanging-comment-ender-p nil)
+;
+(defun vm-mail-other-window ()
+ "Like `vm-mail' command, but display buffer in another window."
+ (interactive)
+ (switch-to-buffer-other-window (current-buffer))
+ (vm-mail))
+;
+; mail precedences
+(setq mail-precedence-key-alist
+ '((?0 . "special-delivery")
+ (?1 . "air-mail")
+ (?2 . "first-class")
+ (?3 . "second-class")
+ (?5 . "third-class")
+ (?\ . nil)
+ (?6 . "bulk")
+ (?9 . "junk")))
+;
+(defun mail-precedence-as-key ()
+ "Set precedence by looking up last command char in mail-precedence-key-alist"
+ (interactive)
+ (message "%s" (concat "Precedence ["
+ (mapconcat '(lambda (c) (char-to-string (car c)))
+ mail-precedence-key-alist "")
+ "] ?"))
+ (let* ((key (read-char))
+ (prec (assoc key mail-precedence-key-alist)))
+ (if prec (mail-precedence (cdr prec))
+ (error "mail-precedence-as-key `%s' not found" key))))
+;
+(defun mail-precedence-as-key-send-and-exit (arg)
+ "Set precedence by looking up last command char in mail-precedence-key-alist,
+then call send-and-exit."
+ (interactive "P")
+ (mail-precedence-as-key)
+ (execute-kbd-macro "\ 3\ 3"))
+;
+(defun mail-precedence (prec)
+ (save-excursion
+ (mail-position-on-field "Precedence")
+ (let ((p (point)))
+ (beginning-of-line)
+ (delete-region (point) p)
+ (if prec
+ (insert "Precedence: " prec)
+ (delete-char 1)))))
+;
+(defun mail-mode-setup-keys ()
+ (local-set-key "\ 3\10" 'mail-precedence-as-key)
+ (local-set-key "\ 3p" 'mail-precedence-as-key-send-and-exit))
+(add-hook 'mail-mode-hook 'mail-mode-setup-keys)
+(add-hook 'vm-mail-mode-hook 'mail-mode-setup-keys)
+;
+(defun vm-mail-other-window ()
+ "Like `vm-mail' command, but display buffer in another window."
+ (interactive)
+ (switch-to-buffer-other-window (current-buffer))
+ (vm-mail))
+;
+(defun mail-formletter ()
+ "Run VM-mail with ,Formletter"
+ (interactive)
+ (vm-mail)
+ (rename-buffer (generate-new-buffer-name "form letter") t)
+ (delete-region (point-min) (point-max))
+ (insert-file (concat vm-folder-directory ",Formletter")))
+;
+; This function bound to C-x C-z
+(defun load-ange-ftp ()
+ "Load ange-ftp using require, if it isn't loaded already"
+ (interactive)
+ (message "Loading ange-ftp...")
+ (require 'ange-ftp) ; -extended
+ (message "Loading ange-ftp...done"))
+;
+; This function bound to M-+
+(defun toggle-truncate-lines ()
+ "Toggle truncation or folding of long lines"
+ (interactive)
+ (set-variable 'truncate-lines (not truncate-lines))
+ (redraw-display))
+;
+; RMAIL stuff
+;(setq rmail-file-name "~/mail/RMAIL"
+; mail-archive-file-name "~/mail/Outbound"
+; rmail-primary-inbox-list '("~/mbox" "~/mail/Outbound" "~/mail/Record"
+; "~/mail/Import" "/var/spool/mail/ian")
+; rmail-delete-after-output t
+; rmail-last-rmail-file ""
+; rmail-ignored-headers (concat
+; "^Content-Identifier:\\|^X400-[^O][A-Za-z-]+:\\|"
+; rmail-ignored-headers))
+;
+(defun make-regexps-ignore-non-address (list)
+ (apply 'append (mapcar
+ '(lambda (item)
+ (let ((item (mapconcat
+ '(lambda (ch)
+ (let ((s (char-to-string ch)))
+ (if (string-match "[][.*+?^$\\]" s)
+ (concat "\\" s)
+ s)))
+ item "")))
+ (list
+ (concat "<" item ">")
+ (concat "^" item " *\\((.*)\\)?$"))))
+ list)))
+;
+; BBDB
+(setq bbdb-north-american-phone-numbers-p nil
+ bbdb/mail-auto-create-p t
+ bbdb-auto-revert-p t
+ bbdb-notice-auto-save-file-p t
+ bbdb-message-caching-enabled t)
+;
+; VM stuff
+(load-file "~/private/private.el")
+(if (file-exists-p "~/private/private2.el")
+ (load-file "~/private/private2.el"))
+(setq vm-included-text-attribution-format "%F writes (\"%s\"):\n"
+ vm-reply-subject-prefix "Re: "
+ vm-folder-directory "~/mail/"
+ vm-delete-after-saving t
+ vm-delete-empty-folders t
+ vm-mutable-windows t
+ vm-auto-get-new-mail nil
+ vm-auto-next-message nil
+ vm-jump-to-new-messages nil
+ vm-jump-to-unread-messages nil
+ vm-mime-digest-discard-header-regexp "only-drop-this-header"
+ vm-preview-lines nil
+ vm-included-text-prefix "> "
+ vm-confirm-quit 1
+ vm-auto-center-summary t
+ vm-confirm-new-folders t
+ vm-circular-folders nil
+ vm-visit-when-saving 0
+ vm-move-after-deleting t
+ vm-keep-sent-messages t
+ vm-follow-summary-cursor t
+ vm-frame-per-composition nil
+ vm-frame-per-edit nil
+ vm-frame-per-summary nil
+ vm-frame-per-folder nil
+ vm-tale-is-an-idiot t
+ vm-primary-inbox (concat vm-folder-directory "INBOX")
+ vm-sinbin-inbox (concat vm-folder-directory "SINBOX")
+ vm-uninteresting-senders "ian"
+ vm-reply-ignored-addresses
+ (make-regexps-ignore-non-address
+ '("ian@chiark.chu.cam.ac.uk" "ian" "iwj10@cus.cam.ac.uk"
+ "ian@chiark.greenend.org.uk"
+ "ijackson@nyx.cs.du.edu" "ijackson@gnu.ai.mit.edu"))
+ vm-primary-inbox (concat vm-folder-directory "INBOX")
+
+ vm-uninteresting-senders "ian"
+ vm-reply-ignored-addresses
+ (make-regexps-ignore-non-address
+ '("ijackson@chiark.chu.cam.ac.uk" "ijackson"
+ "iwj10@thor.cam.ac.uk" "iwj10@hermes.cam.ac.uk" "iwj10@cl.cam.ac.uk"
+ "iwj10@cam.ac.uk" "Ian.Jackson@cl.cam.ac.uk"))
+ mail-archive-file-name "~/mail/Outbound"
+
+
+ vm-spool-files
+ '((vm-primary-inbox "/var/spool/mail/ian"
+ "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/News/r" "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/mbox" "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/mail/Outbound" "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/mail/Import" "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/mail/Record" "~/mail/INBOX.CRASH")
+ (vm-sinbin-inbox "/var/spool/mail/ian" "~/mail/SINBOX.CRASH"))
+ vm-startup-with-summary t
--- /dev/null
+; This is my real emacs start-up file (for chiark).
+;
+
+(defalias 'perl-mode 'cperl-mode)
+(setq cperl-invalid-face nil
+ cperl-indent-level 4)
+
+(make-variable-buffer-local 'indent-line-function)
+; Un-disable narrow and eval-expression
+(put 'narrow-to-region 'disabled nil)
+(put 'eval-expression 'disabled nil)
+(standard-display-european t)
+;
+(setq browse-url-netscape-program "mozilla")
+(setq common-lisp-hyperspec-root "/usr/share/doc/hyperspec/")
+;
+; Make sure we don't disturb links or change ownership, use numbers
+(setq backup-by-copying-when-mismatch t)
+(setq backup-by-copying-when-linked t)
+;(setq version-control t
+; kept-new-versions 4
+; kept-old-versions 4
+; trim-versions-without-asking t)
+;
+; Various one-liners
+(setq require-final-newline "ask")
+(if (string= window-system 'x) (load-library "ian-x"))
+(load-library "ian-aliases")
+; (load-library "auto-pgp")
+; (load-library "debian-changelog-mode")
+; (if (string= (getenv "TERM") "bbcb32") (setq term-file-prefix nil))
+; (setq explicit-shell-file-name "/usr/local/bin/tcsh")
+(setq inhibit-local-variables t)
+(setq enable-local-variables 'ask-me)
+(setq enable-recursive-minibuffers t)
+(setq compile-command "make")
+(setq next-line-add-newlines t)
+(setq diff-switches "-u")
+(setq line-move-visual nil)
+(display-time)
+;
+(set-variable 'search-repeat-char 28)
+(set-fringe-mode (cons 0 nil))
+(if (string-match "^19\." emacs-version)
+ (progn
+; (setq file-name-handler-alist ; Disable nasty auto-loading of ange-ftp
+; (delq (rassq 'ange-ftp-completion-hook-function file-name-handler-alist)
+; file-name-handler-alist))
+ (require 'find-alternate-18style)
+ (defun unset-down-mouse-23 ()
+ (local-set-key [mouse-2] 'mouse-yank-at-click)
+ (local-unset-key [down-mouse-2])
+ (local-unset-key [down-mouse-3])
+ (local-unset-key [C-down-mouse-3]))
+ (add-hook 'vm-mode-hook 'unset-down-mouse-23)
+ (add-hook 'vm-mail-mode-hook 'unset-down-mouse-23)
+ (add-hook 'text-mode-hook 'unset-down-mouse-23)
+ (add-hook 'Info-mode-hook
+ (function (lambda ()
+ (local-set-key " " 'scroll-up)
+ (local-set-key "\7f" 'scroll-down))))
+ (define-key isearch-mode-map "\1c" 'isearch-repeat-forward)
+ (define-key isearch-mode-map "\1d" 'isearch-quote-char)))
+;
+(menu-bar-mode -1)
+(defun terminal-keybindings ()
+ "This function should be called by the term-setup-hook mechanism"
+ (interactive)
+ ; Set my own keybindings
+ ;
+ ; Set keybindings generally (including I-search on C-\)
+; (global-set-key " " 'self-insert-command)
+ (global-set-key "\1c" 'isearch-forward)
+; (global-set-key "\r" 'newline)
+ (global-set-key "\ f" 'set-mark-command)
+ (global-set-key "\1d" 'quoted-insert)
+ ;
+ ; Set keybindings on esc-map
+ (global-set-key "\e#" 'query-replace-regexp)
+ (global-set-key "\e+" 'toggle-truncate-lines)
+ (global-set-key "\eg" 'goto-line)
+ (global-set-key "\es" 'isearch-forward-regexp)
+ (global-set-key "\e\e" 'eval-expression)
+ ;
+ ; Set keybindings on ^X-map.
+ (global-set-key "\18m" 'vm-mail)
+ (global-set-key "\18\1c" 'save-buffer)
+ (global-set-key "\18\1d" 'toggle-read-only)
+ (global-set-key "\18#" 'recover-file)
+ (global-set-key "\18\12" 'bury-buffer)
+ (global-set-key "\18\v" 'quicker-compile)
+ (global-set-key "\18\18" 'exchange-point-and-mark)
+ (global-set-key "\18\1a" 'load-tramp)
+ (global-set-key "\184\16" 'scroll-other-window)
+ (global-set-key "\184m" 'vm-mail-other-window)
+ (global-set-key "\189" 'vm-visit-folder)
+ (global-set-key "\188" 'rmail-input)
+ (global-set-key "\18p" 'cite-region)
+ (global-set-key "\18F" 'mail-formletter)
+ ;
+ ; Set keybindings for Sun numeric pad.
+ (setq esc-bracket-map (make-keymap))
+ (define-key esc-bracket-map "D" 'backward-char)
+ (define-key esc-bracket-map "C" 'forward-char)
+ (define-key esc-bracket-map "A" 'previous-line)
+ (define-key esc-bracket-map "B" 'next-line)
+ (define-key esc-map "[" esc-bracket-map)
+ (global-set-key "\e[214z" 'beginning-of-buffer)
+ (global-set-key "\e[220z" 'end-of-buffer)
+ (global-set-key "\e[216z" 'scroll-down)
+ (global-set-key "\e[222z" 'scroll-up)
+ (global-set-key "\e[192z" 'save-buffer)
+ (global-set-key "\e[194z" 'save-some-buffers)
+ (global-set-key "\e[195z" 'undo)
+ (global-set-key "\e[193z" 'call-last-kbd-macro)
+ (global-set-key "\e[196z" 'switch-to-buffer-other-window)
+ (global-set-key "\e[197z" 'copy-region-as-kill)
+ (global-set-key "\e[198z" 'find-file)
+ (global-set-key "\e[199z" 'yank)
+ (global-set-key "\e[198z" 'find-alternate-file)
+ (global-set-key "\e[200z" 'find-file)
+ (global-set-key "\e[201z" 'kill-region)
+ (global-set-key "\e[-1z" 'info)
+ ;
+ ; Set keybindings for Chiarks' x11emacs
+ (global-set-key "\e[5~" 'scroll-down)
+ (global-set-key "\e[6~" 'scroll-up)
+ ;
+ ; Set keybindings for knackered vt100-like terminal emulators.
+ (global-set-key "\eOt" 'scroll-down)
+ (global-set-key "\eOu" 'scroll-up)
+ (global-set-key "\eOD" 'backward-char)
+ (global-set-key "\eOC" 'forward-char)
+ (global-set-key "\eOA" 'previous-line)
+ (global-set-key "\eOB" 'next-line))
+(setq term-setup-hook 'terminal-keybindings) ; remap keys in due course
+;
+; Autoload definitions
+(autoload 'tar-mode "tar-mode")
+(autoload 'uncompress-while-visiting "uncompress")
+; (autoload 'c++-mode "c++-mode" "Mode for editing C and C++ programs" t)
+(autoload 'hide-ifdef-mode "hideif" "For editing code with #ifdefs" t)
+;(setq-default indent-tabs-mode nil)
+(autoload 'dired-find-alternate-file "dired-alternate" "Find alternately" t)
+(autoload 'dired-run-file "dired-alternate" "Run this file" t)
+(autoload 'perl-mode "perl-mode" "Mode for Perl code" t)
+; (autoload 'rmail "rmail-fixed" "Patched mail reader" t)
+(autoload 'quicker-compile "quicker-compile" "Patched Compile mode" t)
+
+(autoload 'vm "vm" "Start VM on your primary inbox." t)
+(autoload 'vm-visit-folder "vm" "Start VM on an arbitrary folder." t)
+(autoload 'vm-visit-virtual-folder "vm" "Visit a VM virtual folder." t)
+(autoload 'vm-mode "vm" "Run VM major mode on a buffer" t)
+(autoload 'vm-mail "vm" "Send a mail message using VM." t)
+(autoload 'vm-submit-bug-report "vm" "Send a bug report about VM." t)
+;
+; (autoload 'info "info-fixed" "Patched info browser" t)
+(setq shell-mode-hook
+ '(lambda ()
+ (make-variable-buffer-local 'scroll-step)
+ (setq scroll-step 1)))
+(setq inferior-lisp-program "sbcl")
+;(setq jit-lock-chunk-size 100
+; jit-lock-stealth-time 1.00)
+(setq dired-mode-hook
+ '(lambda ()
+ (define-key dired-mode-map "F" 'dired-find-alternate-file)
+ (define-key dired-mode-map "X" 'dired-run-file)))
+;
+; Prevent loading of default init file and do some of the things it did
+; (setq inhibit-default-init t)
+;
+; Additional alist handling function
+;(defun alist-remove-elem (s s-list)
+; "Delete the element of the alist S-LIST whose car is S"
+; (if s-list (if (equal s (car (car s-list)))
+; (cdr s-list)
+; (cons (car s-list) (alist-remove-elem s (cdr s-list))))
+; (nil)))
+;
+; Load C++ mode and edit Perl in perl mode
+(setq auto-mode-alist
+ (append '(("\\.[ch]$" . c-mode)
+ ("\\.[CH]$" . c++-mode)
+ ("\\.cc$" . c++-mode)
+ ("\\.hh$" . c++-mode)
+; ("\\.tar$" . tar-mode)
+ ("\\.pl$" . perl-mode)
+ ("\\.ci$" . tex-mode)
+ ("\\.asm$" . fundamental-mode)
+ ("\\.Z$" . uncompress-while-visiting))
+ auto-mode-alist))
+(setq interpreter-mode-alist
+ (append '(("sh" . fundamental-mode)
+ ("bash" . fundamental-mode))
+ interpreter-mode-alist))
+;
+; Use auto-fill when editing text
+(add-hook 'text-mode-hook '(lambda () (auto-fill-mode 1)))
+; (add-hook 'text-mode-hook '(lambda () (local-set-key " " 'self-insert-command)))
+;
+; Set up newline to auto-indent & other stuff for perl, c++ and c modes.
+(setq perl-mode-hook '(lambda ()
+ (local-set-key ";" 'self-insert-command)))
+(setq c++-mode-hook '(lambda ()
+ (hide-ifdef-mode 1)
+ (local-set-key "," 'self-insert-command)
+ (local-set-key ":" 'electric-c++-terminator)))
+; c++-electric-colon
+(setq c-mode-hook '(lambda ()
+ (hide-ifdef-mode 1)
+ (c-set-offset 'substatement-open 0 nil)
+ (local-set-key "," 'self-insert-command)
+ (local-set-key ";" 'self-insert-command)
+ (local-set-key "/" 'self-insert-command)
+ (local-set-key "*" 'self-insert-command)
+ (local-set-key "#" 'self-insert-command)
+ (local-set-key "(" 'self-insert-command)
+ (local-set-key ")" 'self-insert-command)
+ (local-set-key "{" 'self-insert-command)
+ (local-set-key "\r" 'newline-and-indent)))
+(setq c-hanging-comment-ender-p nil)
+;
+(defun vm-mail-other-window ()
+ "Like `vm-mail' command, but display buffer in another window."
+ (interactive)
+ (switch-to-buffer-other-window (current-buffer))
+ (vm-mail))
+;
+; mail precedences
+(setq mail-precedence-key-alist
+ '((?0 . "special-delivery")
+ (?1 . "air-mail")
+ (?2 . "first-class")
+ (?3 . "second-class")
+ (?5 . "third-class")
+ (?\ . nil)
+ (?6 . "bulk")
+ (?9 . "junk")))
+;
+(defun mail-precedence-as-key ()
+ "Set precedence by looking up last command char in mail-precedence-key-alist"
+ (interactive)
+ (message "%s" (concat "Precedence ["
+ (mapconcat '(lambda (c) (char-to-string (car c)))
+ mail-precedence-key-alist "")
+ "] ?"))
+ (let* ((key (read-char))
+ (prec (assoc key mail-precedence-key-alist)))
+ (if prec (mail-precedence (cdr prec))
+ (error "mail-precedence-as-key `%s' not found" key))))
+;
+(defun mail-precedence-as-key-send-and-exit (arg)
+ "Set precedence by looking up last command char in mail-precedence-key-alist,
+then call send-and-exit."
+ (interactive "P")
+ (mail-precedence-as-key)
+ (execute-kbd-macro "\ 3\ 3"))
+;
+(defun mail-precedence (prec)
+ (save-excursion
+ (mail-position-on-field "Precedence")
+ (let ((p (point)))
+ (beginning-of-line)
+ (delete-region (point) p)
+ (if prec
+ (insert "Precedence: " prec)
+ (delete-char 1)))))
+;
+(defun mail-mode-setup-keys ()
+ (local-set-key "\ 3\10" 'mail-precedence-as-key)
+ (local-set-key "\ 3p" 'mail-precedence-as-key-send-and-exit))
+(add-hook 'mail-mode-hook 'mail-mode-setup-keys)
+(add-hook 'vm-mail-mode-hook 'mail-mode-setup-keys)
+;
+(defun vm-mail-other-window ()
+ "Like `vm-mail' command, but display buffer in another window."
+ (interactive)
+ (switch-to-buffer-other-window (current-buffer))
+ (vm-mail))
+;
+(defun mail-formletter ()
+ "Run VM-mail with ,Formletter"
+ (interactive)
+ (vm-mail)
+ (rename-buffer (generate-new-buffer-name "form letter") t)
+ (delete-region (point-min) (point-max))
+ (insert-file (concat vm-folder-directory ",Formletter")))
+;
+; This function bound to C-x C-z
+(defun load-tramp ()
+ "Load tramp using require, if it isn't loaded already"
+ (interactive)
+ (message "Loading tramp...")
+ (require 'tramp) ; -extended
+ (message "Loading tramp...done"))
+;
+; This function bound to M-+
+(defun toggle-truncate-lines ()
+ "Toggle truncation or folding of long lines"
+ (interactive)
+ (set-variable 'truncate-lines (not truncate-lines))
+ (redraw-display))
+;
+; RMAIL stuff
+;(setq rmail-file-name "~/mail/RMAIL"
+; mail-archive-file-name "~/mail/Outbound"
+; rmail-primary-inbox-list '("~/mbox" "~/mail/Outbound" "~/mail/Record"
+; "~/mail/Import" "/var/spool/mail/ian")
+; rmail-delete-after-output t
+; rmail-last-rmail-file ""
+; rmail-ignored-headers (concat
+; "^Content-Identifier:\\|^X400-[^O][A-Za-z-]+:\\|"
+; rmail-ignored-headers))
+;
+(defun make-regexps-ignore-non-address (list)
+ (apply 'append (mapcar
+ '(lambda (item)
+ (let ((item (mapconcat
+ '(lambda (ch)
+ (let ((s (char-to-string ch)))
+ (if (string-match "[][.*+?^$\\]" s)
+ (concat "\\" s)
+ s)))
+ item "")))
+ (list
+ (concat "<" item ">")
+ (concat "^" item " *\\((.*)\\)?$"))))
+ list)))
+;
+; BBDB
+(setq bbdb-north-american-phone-numbers-p nil
+ bbdb/mail-auto-create-p t
+ bbdb-auto-revert-p t
+ bbdb-notice-auto-save-file-p t
+ bbdb-message-caching-enabled t)
+;
+; VM stuff
+;(load-file "~/private/private.el")
+(if (file-exists-p "~/private/private2.el")
+ (load-file "~/private/private2.el"))
+(setq vm-included-text-attribution-format "%F writes (\"%s\"):\n"
+ vm-reply-subject-prefix "Re: "
+ vm-folder-directory "~/mail/"
+ vm-delete-after-saving t
+ vm-delete-empty-folders t
+ vm-mutable-windows t
+ vm-auto-get-new-mail nil
+ vm-auto-next-message nil
+ vm-jump-to-new-messages nil
+ vm-jump-to-unread-messages nil
+ vm-mime-digest-discard-header-regexp "only-drop-this-header"
+ vm-preview-lines nil
+ vm-included-text-prefix "> "
+ vm-confirm-quit 1
+ vm-auto-center-summary t
+ vm-confirm-new-folders t
+ vm-circular-folders nil
+ vm-visit-when-saving 0
+ vm-move-after-deleting t
+ vm-keep-sent-messages t
+ vm-follow-summary-cursor t
+ vm-frame-per-composition nil
+ vm-frame-per-edit nil
+ vm-frame-per-summary nil
+ vm-frame-per-folder nil
+ vm-tale-is-an-idiot t
+ vm-primary-inbox (concat vm-folder-directory "INBOX")
+ vm-sinbin-inbox (concat vm-folder-directory "SINBOX")
+ vm-uninteresting-senders "ian"
+ vm-reply-ignored-addresses
+ (make-regexps-ignore-non-address
+ '("ian@chiark.chu.cam.ac.uk" "ian" "iwj10@cus.cam.ac.uk"
+ "ian@chiark.greenend.org.uk"
+ "ijackson@nyx.cs.du.edu" "ijackson@gnu.ai.mit.edu"))
+ vm-primary-inbox (concat vm-folder-directory "INBOX")
+
+ vm-uninteresting-senders "ian"
+ vm-reply-ignored-addresses
+ (make-regexps-ignore-non-address
+ '("ijackson@chiark.chu.cam.ac.uk" "ijackson"
+ "iwj10@thor.cam.ac.uk" "iwj10@hermes.cam.ac.uk" "iwj10@cl.cam.ac.uk"
+ "iwj10@cam.ac.uk" "Ian.Jackson@cl.cam.ac.uk"))
+ mail-archive-file-name "~/mail/Outbound"
+
+
+ vm-spool-files
+ '((vm-primary-inbox "/var/spool/mail/ian"
+ "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/News/r" "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/mbox" "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/mail/Outbound" "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/mail/Import" "~/mail/INBOX.CRASH")
+ (vm-primary-inbox "~/mail/Record" "~/mail/INBOX.CRASH")
+ (vm-sinbin-inbox "/var/spool/mail/ian" "~/mail/SINBOX.CRASH"))
+ vm-startup-with-summary t
+
+ user-mail-address "ijackson@chiark.greenend.org.uk"
+
+
+; vm-spool-files
+; (list
+; (list vm-primary-inbox "~/mbox" "~/mail/INBOX.CRASH")
+; (list vm-primary-inbox "~/mail/Outbound" "~/mail/INBOX.CRASH")
+; (list vm-primary-inbox "~/mail/Record" "~/mail/INBOX.CRASH")
+; (list vm-primary-inbox "~/mail/Import" "~/mail/INBOX.CRASH")
+; (list vm-primary-inbox "/var/spool/mail/ian" "~/mail/INBOX.CRASH")
+; (list vm-primary-inbox "~/News/r" "~/mail/INBOX.CRASH")
+; (list vm-sysadmin-inbox "~/mbox" "~/mail/SINBOX.CRASH")
+; (list vm-sysadmin-inbox "~/mail/SOutbound" "~/mail/SINBOX.CRASH")
+; (list vm-sysadmin-inbox "~/mail/Import" "~/mail/SINBOX.CRASH")
+; (list vm-sysadmin-inbox "/var/spool/mail/sysadmin" "~/mail/SINBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX" "/u/ijackson/mbox" "/u/ijackson/mail/INBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX" "/u/ijackson/mail/Outbound"
+; "/u/ijackson/mail/INBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX" "/u/ijackson/mail/Record" "/u/ijackson/mail/INBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX" "/u/ijackson/mail/Import" "/u/ijackson/mail/INBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX"
+; (concat "localhost:110:pass:ijackson:" ijackson-pop-password)
+; "/u/ijackson/mail/INBOX.CRASH"))
+ vm-startup-with-summary nil
+ vm-summary-format "%3n %a %2d %3m %-19.19F %s\n"
+ mail-archive-file-name "~/mail/Outbound"
+ vm-mime-8bit-text-transfer-encoding '8bit)
+;
+(add-hook 'vm-mode-hook
+ '(lambda ()
+ (local-set-key "Q" 'vm-quit)
+ (local-set-key "q" "###Q")))
+(add-hook 'mail-mode-hook
+ '(lambda ()
+ (if (and (boundp 'folder-buffer)
+ folder-buffer
+ (string= (buffer-file-name folder-buffer)
+ (file-truename vm-sysadmin-inbox)))
+ (progn
+ (make-local-variable 'vm-mail-header-from)
+ (setq vm-mail-header-from
+ "sysadmin@chiark.greenend.org.uk (Ian Jackson)")
+ (make-local-variable 'mail-archive-file-name)
+ (setq mail-archive-file-name
+ "~/mail/SOutbound")))))
+;
+;(defun vmi ()
+; (interactive)
+; (vm "/u/ijackson/mail/INBOX"))
+;;
+(defun vms ()
+ (interactive)
+ (vm vm-sinbin-inbox))
+;
+(defun make-session ()
+ "Makes this emacs hard to kill by requiring ^X^Cy to kill it
+instead of just ^X^C."
+ (interactive)
+ (global-unset-key "\18\ 3")
+ (global-set-key "\18\ 3y" 'save-buffers-kill-emacs))
+;
+; Fix problems with M-| setting window title of emacs' parent xterm
+(defun envdelete-term-termcap-windowid (list)
+ (let ((l list))
+ (mapcar '(lambda (x)
+ (if x (delq x l)))
+ (mapcar '(lambda (x)
+ (if (or (string-match "^TERM=" x)
+ (string-match "^TERMCAP=" x)
+ (string-match "^WINDOWID=" x))
+ x
+ nil))
+ l))
+ l))
+(setq process-environment
+ (envdelete-term-termcap-windowid process-environment))
+;
+(defun add-insertion-keys (table)
+ "Adds keybindings according to TABLE. Each element of
+TABLE should be a four-element list.
+
+BINDING should be the key to bind; FUNCTION will be the name of the
+function defined to do the insertion; DESCRIPTION will be inserted
+into \"Inserts ... .\", and used as the descriptive string for the
+generated function; STRING is the string which will actually be
+inserted into the buffer when the keystroke is pressed."
+ (while table
+ (let* ((head (car table))
+ (key (car head))
+ (func (nth 1 head))
+ (desc (nth 2 head))
+ (string (nth 3 head)))
+ (defalias func
+ (list
+ 'lambda ()
+ (concat "Inserts " desc ".")
+ '(interactive)
+ (list 'insert string)))
+ (funcall 'local-set-key key func))
+ (setq table (cdr table))))
+
+(defun ian-sgml-setup ()
+ (interactive)
+ (add-insertion-keys
+ '(("\ 3\r" sgml-insert-new-para "new paragraph markup" "\n<p>\n")
+ ("\ 3\14" sgml-insert-tt-emph "tt emph markup" "<tt/")
+ ("\ 3\10" sgml-insert-prgn-emph "prgn emph markup" "<prgn/")
+ ("\ 3\ 5" sgml-insert-em-emph "em emfh markup" "<em/")
+ ("\ 3\16" sgml-insert-var-empfh "var emph markup" "<var/"))))
+(setq sgml-local-catalogs '("/jura:/usr/lib/debiandoc-sgml/sgml/catalog"))
+
+(add-hook 'sgml-mode-hook 'ian-sgml-setup)
+;
+(defvar cite-string "> " "String to insert when citing")
+;
+(defun cite-region (start end)
+ "Quote each line in the region with an angle-bracket and space.
+
+The citation string is taken from cite-string."
+ (interactive "r")
+ (save-excursion
+ (save-restriction
+ (narrow-to-region start end)
+ (goto-char (point-min))
+ (insert cite-string)
+ (while
+ (and
+ (= (forward-line) 0)
+ (> (point-max) (point)))
+ (insert cite-string)))))
+;
+; End of this file.
--- /dev/null
+; Fixup of compile so it doesn't ask unless you want it to.
+
+(require 'compile)
+(provide 'quicker-compile)
+
+(defun quicker-compile (prompt-for-command)
+ "Runs compile. Will prompt for the compile command only if given
+a prefix argument."
+ (interactive "P")
+ (if prompt-for-command
+ (setq compile-command (read-string "Compile command: " compile-command)))
+ (compile compile-command))
--- /dev/null
+;;; x-fix-mouse.el
+;;;
+;;; make mouse-based paste ignore the mouse position and use the emacs point
+;;; instead. Make cut-text set the mark so the mouse can be used naturally
+;;; to select a region (e.g. to indent code).
+;;;
+;;; Jean-Francois Lamy 1989-09-21
+;;; lamy@ai.utoronto.ca
+
+(require 'x-mouse); These two lines
+(provide 'x-fix-mouse); added by 89iwj@eng.cam.ac.uk
+
+(defun x-cut-text (arg &optional kill)
+ "Copy text between point and mouse into window system cut buffer.
+Set mark to current mouse position. Save in Emacs kill ring also."
+ (if (coordinates-in-window-p arg (selected-window))
+ (progn
+ (x-mouse-set-mark arg)
+ (let ((beg (point)) (end (mark)))
+ (x-store-cut-buffer (buffer-substring beg end))
+ (copy-region-as-kill beg end)
+ (if kill (delete-region beg end))))
+ (message "Mouse not in selected window")))
+
+(defun x-paste-text (arg)
+ "Insert window system cut buffer contents at current point."
+ (insert (x-get-cut-buffer)))
+
+(defun x-cut-and-wipe-text (arg)
+ "Kill text between point and mark; also copy to window system cut buffer."
+ (x-cut-text arg t))
+
+(defun x-cut-text-if-moved (arg &optional kill)
+ (let ((opoint (point)))
+ (x-mouse-set-point arg)
+ (cond
+ ((not (equal (point) opoint))
+ (goto-char opoint)
+ (x-cut-text arg kill)))))
+
+;------- End of Forwarded Message
--- /dev/null
+#!/bin/bash
+#
+# To start tracking a file,
+# cp ~/.screenrc dot/screenrc
+#
+# To sort out symlinks when things are clean
+# infra/makelinks install
+
+set -e -o posix -o pipefail
+
+badusage () {
+ echo >&2 "usage: $0 [-n|-v] list|setup|dirimport|dirmove|clean"
+ exit 18
+}
+
+real_act=''
+
+while true; do
+ if [ $# = 0 ]; then break; fi
+ case "$1" in
+ -n) real_act=log_only ;;
+ -v) real_act=with_log ;;
+ -*) badusage ;;
+ *) break ;;
+ esac
+ shift
+done
+
+case "$#.$1" in
+1.list|1.setup|1.import|1.dirimport|1.clean) ;;
+*) badusage ;;
+esac
+
+mode=$1; shift
+
+basepath=$(pwd)
+basepath=${basepath#$HOME/}
+
+estatus=0
+
+show () {
+ printf "%s\n" "$1"
+}
+
+good () {
+ if [ $mode = list ]; then
+ show "good: $prhome: $1"
+ fi
+}
+
+bad () {
+ estatus=16
+ show "bad: $prhome: $1" >&2
+}
+
+needs () {
+ if [ $mode = $1 ]; then
+ act=$real_act
+ show "DOING $1: $prhome ($2)"
+ else
+ show "needs $1: $prhome: $2"
+ act=:
+ fi
+}
+
+log_only () {
+ echo "x $*"
+}
+
+with_log () {
+ log_only "$@"
+ "$@"
+}
+
+process_object () {
+ inhome="$HOME/$underhome"
+ prhome="~/$underhome"
+ linktarget="$basepath/$ours"
+ if [ "$inhome" -ef "$ours" ]; then
+ good "already symlinked here"
+ elif [ -h "$inhome" ]; then
+ bad "wrong symlink target"
+ elif ! [ -e "$inhome" ]; then
+ needs setup "absent here"
+ $act ln -s "$linktarget" "$inhome"
+ elif [ -f "$inhome" ] && [ -f "$ours" ]; then
+ if cmp -s "$ours" "$inhome"; then
+ needs setup "identical in this ~ but not yet symlinked"
+ $act rm -f "$inhome"~
+ $act ln -s "$linktarget" "$inhome"~
+ $act mv -f "$inhome"~ "$inhome"
+ else
+ needs import "modified here"
+ $act rm -f "$ours"~
+ $act cp "$inhome" "$ours"~
+ $act mv -f "$ours"~ "$ours"
+ fi
+ elif [ -d "$inhome" ] && [ -d "$ours" ]; then
+ needs dirimport "directory in this ~, not yet symlinked"
+ $act mv "$ours" "$ours~"
+ $act ln -s "$linktarget" "$inhome"~
+ $act mv "$inhome" "$ours"
+ $act mv "$inhome~" "$inhome"
+ $act rm -rf "$ours~"
+ else
+ bad "mismatched file types"
+ fi
+}
+
+dots=$( find dot -mindepth 1 -maxdepth 1 -name '[0-9a-zA-Z]*[0-9a-zA-Z]' )
+
+for ours in $dots; do
+ underhome=".${ours#dot/}"
+ process_object
+done
+
+nondots=$( find home -mindepth 1 -maxdepth 1 -name '[0-9a-zA-Z]*[0-9a-zA-Z]' )
+
+for ours in $nondots; do
+ underhome="${ours#home/}"
+ process_object
+done
+
+brokens=$(
+ cd $HOME
+ find -L .[0-9a-zA-Z]* -maxdepth 0 -xdev -type l \
+ \( -lname "$basepath/dot/*" -o -lname "$basepath/home/*" \)
+)
+for underhome in $brokens; do
+ inhome="$HOME/$underhome"
+ prhome="~/$underhome"
+ needs clean "symlink to removed file in dot/"
+ $act rm -f "$inhome"
+done