Skip to content

Instantly share code, notes, and snippets.

@volh
Created August 16, 2011 10:13
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save volh/1148782 to your computer and use it in GitHub Desktop.
Save volh/1148782 to your computer and use it in GitHub Desktop.

A simple emacs-athena archlinux package

  • does not depend on GTK
  • uses athena widget library ( libxaw ), which is probably already installed on your system as a dependency of some base xorg package ( xterm )
  • doesn't crash emacs --daemon ( GTK version does, when you close X )
  • switching to emacs windows and between buffers seems to be smoother as it's just a very thin xlib widget set, but the difference is negligible
  • if you turn off scroll-bar, tool-bar, and menu-bar ( there's no real reason you shouldn't ), athena last century style widgets won't bother you. I just turned them on for the screenshot.
[Desktop Entry]
Name=Emacs Text Editor
Name[de]=Emacs Texteditor
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=emacs %f
Icon=emacs-icon
Type=Application
Terminal=false
Categories=Development;TextEditor;
StartupWMClass=Emacs
ICON_PATH=/usr/share/icons/hicolor
INFO_DIR=/usr/share/info
INFO_FILES=(ada-mode auth autotype calc ccmode cl dbus dired-x ebrowse
ediff efaq eintr elisp emacs emacs-mime epa erc eshell eudc flymake
forms gnus idlwave info mairix-el message mh-e newsticker nxml-mode
org pcl-cvs pgg rcirc reftex remember sasl sc ses sieve smtpmail
speedbar tramp url vip viper widget woman)
post_install() {
for f in ${INFO_FILES[@]}; do
install-info ${INFO_DIR}/$f.gz ${INFO_DIR}/dir 2> /dev/null
done
}
post_upgrade() {
post_install $1
}
pre_remove() {
for f in ${INFO_FILES[@]}; do
install-info --delete ${INFO_DIR}/$f.gz ${INFO_DIR}/dir 2> /dev/null
done
}
#! /bin/sh
. /etc/rc.conf
. /etc/rc.d/functions
#change this. too bad emacs daemon can't really work in mutli-user mode. for now.
USERNAME=volh
DESC="Run the emacs daemon."
NAME=emacs
#change this
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="--daemon"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/rc.d/$NAME
#change this
EMACSCLIENT=/usr/bin/emacsclient
#EVALEXIT="(progn (setq kill-emacs-hook 'nil) (kill-emacs))"
# This one will save buffers in any case, without prompt(as save-buffers-kill-emacs will unconditionally do).
EVALEXIT="(progn (save-some-buffers t t)(kill-emacs))"
# This will save the desktop, but not the buffers themselves
#EVALEXIT="(progn (desktop-save-in-desktop-dir)(kill-emacs))"
case "$1" in
start)
stat_busy "Starting Emacs"
su $USERNAME -c "$DAEMON $DAEMON_ARGS" > /dev/null && (add_daemon emacs; stat_done) || stat_fail
;;
stop)
stat_busy "Stopping Emacs"
su $USERNAME -c "$EMACSCLIENT --eval \"$EVALEXIT\"" && ( rm_daemon emacs; stat_done ) || stat_fail
;;
restart|force-reload)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
# $Id: PKGBUILD 134523 2011-08-05 07:55:30Z juergen $
# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
# Contributor: Renchi Raju <renchi@green.tam.uiuc.edu>
pkgname=emacs-athena
pkgver=23.3a
pkgrel=1
pkgdesc="The Emacs Editor, with Athena widget toolkit"
arch=(i686 x86_64)
url="http://www.gnu.org/software/emacs/emacs.html"
license=('GPL')
options=(docs)
replaces=(cedet emacs)
provides=(emacs)
conflicts=(emacs)
depends=('dbus-core' 'librsvg' 'gpm' 'giflib' 'libtiff' 'libxpm' 'libjpeg' 'libxaw' 'texinfo' 'hicolor-icon-theme')
source=(ftp://ftp.gnu.org/gnu/emacs/emacs-$pkgver.tar.gz emacs.desktop)
md5sums=('20aef9ea5b5bf8050d39f8b1e96a1c04'
'8af038d2ba4561271e935bb444ceb4e3')
install=emacs.install
build() {
cd $startdir/src/emacs-${pkgver%[a-z]}
mandir=/usr/share/man
# gcc 4.5 Workaround: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43904
CFLAGS="${CFLAGS} -fno-optimize-sibling-calls"\
./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \
--localstatedir=/var --mandir=${mandir} --without-sound --with-x-toolkit=athena
make
make DESTDIR=$startdir/pkg install
# remove conflict with ctags package
mv $startdir/pkg/usr/bin/{ctags,ctags.emacs}
mv $startdir/pkg/usr/bin/{etags,etags.emacs}
mv $startdir/pkg${mandir}/man1/{etags.1,etags.emacs.1}
mv $startdir/pkg${mandir}/man1/{ctags.1,ctags.emacs.1}
# fix all the 777 perms on directories
find $startdir/pkg/usr/share/emacs/${pkgver%[a-z]} -type d -exec chmod 755 {} \;
# fix user/root permissions on usr/share files
find $startdir/pkg/usr/share/emacs/${pkgver%[a-z]} -exec chown root.root {} \;
# fix perms on /var/games
chmod 775 ${startdir}/pkg/var/games
chmod 775 ${startdir}/pkg/var/games/emacs
chmod 664 ${startdir}/pkg/var/games/emacs/*
chown -R root:50 ${startdir}/pkg/var/games
# fix FS#9253
mkdir -p $startdir/pkg/usr/share/pixmaps ${startdir}/pkg/usr/share/applications
install -D -m644 ${startdir}/src/emacs.desktop ${startdir}/pkg/usr/share/applications
ln -s ../emacs/${pkgver%[a-z]}/etc/images/icons/hicolor/48x48/apps/emacs.png $startdir/pkg/usr/share/pixmaps/emacs-icon.png
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment