diff options
Diffstat (limited to 'packages/app-editors/emacs')
-rw-r--r-- | packages/app-editors/emacs/emacs-24.3-r1.exheres-0 | 14 | ||||
-rw-r--r-- | packages/app-editors/emacs/emacs.exlib | 172 | ||||
-rw-r--r-- | packages/app-editors/emacs/files/emacs-exherbo.el.in | 1 | ||||
-rw-r--r-- | packages/app-editors/emacs/files/emacs-python-docstrings.patch | 40 |
4 files changed, 227 insertions, 0 deletions
diff --git a/packages/app-editors/emacs/emacs-24.3-r1.exheres-0 b/packages/app-editors/emacs/emacs-24.3-r1.exheres-0 new file mode 100644 index 0000000..b82a7c0 --- /dev/null +++ b/packages/app-editors/emacs/emacs-24.3-r1.exheres-0 @@ -0,0 +1,14 @@ +# Copyright 2008 Ingmar Vanhassel <ingmar@exherbo.org> +# Distributed under the terms of the GNU General Public License v2 + +require emacs + +PLATFORMS="~amd64 ~x86" + +DEPENDENCIES=" + build+run: + dev-libs/gnutls[>=2.8] +" + +DEFAULT_SRC_PREPARE_PATCHES=( "${FILES}"/emacs-python-docstrings.patch ) + diff --git a/packages/app-editors/emacs/emacs.exlib b/packages/app-editors/emacs/emacs.exlib new file mode 100644 index 0000000..5e29034 --- /dev/null +++ b/packages/app-editors/emacs/emacs.exlib @@ -0,0 +1,172 @@ +# Copyright 2008, 2009 Ingmar Vanhassel <ingmar@exherbo.org> +# Distributed under the terms of the GNU General Public License v2 +# Based in part upon 'emacs-22.2-r2.ebuild' from Gentoo, which is: +# Copyright 1999-2008 Gentoo Foundation. + +require game alternatives elisp-module + +if [[ -z $(ever range 3) ]]; then + require gnu [ suffix=xz ] +else + require gnu [ alpha=true subdir=pretest suffix=xz ] +fi + +if [[ $(ever range 3) == rc* ]]; then + MY_PV=$(ever range 1-2) + MY_PNV=${PN}-${MY_PV} +fi + +export_exlib_phases src_prepare src_configure src_install pkg_postinst + +SUMMARY="The extensible, customizable, self-documenting, real-time display editor" + +LICENCES="GPL-3" +SLOT="0" +MYOPTIONS=" + X alsa dbus freetype gif gpm gtk gtk3 otf svg tiff tiff xpm + ( freetype gif gtk gtk3 otf svg tiff xpm ) [[ requires = X ]] + ( gtk gtk3 ) [[ number-selected = at-most-one ]] + gconf [[ + description = [ Allows emacs to determine the system font ] + requires = X + ]] + otf [[ + description = [ Support for OpenType fonts ] + requires = freetype + ]] +" + +DEPENDENCIES=" + build: + X? ( dev-util/pkg-config ) + alsa? ( dev-util/pkg-config ) + dbus? ( dev-util/pkg-config ) + gtk? ( dev-util/pkg-config ) + gtk3? ( dev-util/pkg-config ) + svg? ( dev-util/pkg-config ) + build+run: + dev-libs/libxml2:2.0 [[ note = [ used for html rendering; could be made optional ] ]] + net-libs/liblockfile + sys-libs/ncurses + alsa? ( sys-sound/alsa-lib[>=1.0.0] ) + X? ( + media-libs/jpeg + media-libs/libpng + x11-data/xbitmaps + x11-libs/libICE + x11-libs/libSM + x11-libs/libX11 + gif? ( media-libs/giflib ) + gtk? ( + dev-libs/glib:2[>=2.10] + x11-libs/gtk+:2[>=2.10] + ) + gtk3? ( + dev-libs/glib:2[>=2.28] + x11-libs/gtk+:3[>=3.0] + ) + otf? ( dev-libs/libotf ) + svg? ( gnome-desktop/librsvg:2[>=2.11.0] ) + tiff? ( media-libs/tiff ) + xpm? ( x11-libs/libXpm ) + ) + dbus? ( sys-apps/dbus[>=1.0.0] ) + freetype? ( + media-libs/fontconfig[>=2.2.0] + media-libs/freetype:2 + x11-libs/libXft[>=0.13.0] + x11-libs/libXrender [[ note = [ because of libXft ] ]] + ) + gconf? ( gnome-platform/GConf:2 ) + gpm? ( sys-libs/gpm ) + suggestion: + app-spell/aspell [[ description = [ For ispell and flyspell mode ] ]] +" + +WORK=${WORKBASE}/${MY_PNV-${PNV}} + +emacs_src_prepare() { + # Compressing *.el files saves 25MB diskspace, which is not worth it on modern systems + edo sed -i -e 's/@GZIP_PROG@//' {.,leim}/Makefile.in + default + + # Create a copy of the clean source (it will be installed in src_install) + edo tar cf source.tar src/ +} + +emacs_src_configure() { + config_params=( + --infodir=/usr/share/info/emacs + --without-compress-info # applies to manpages as well + --without-gsettings + --without-hesiod + --without-imagemagick + --without-kerberos + --without-kerberos5 + --without-m17n-flt + --without-selinux + --without-xim + ) + + config_withs=( + 'X x' 'X jpeg' 'X png' + 'alsa sound' + 'freetype xft' + 'otf libotf' + 'svg rsvg' + 'dbus' 'gconf' 'gif' 'gpm' 'tiff' 'xpm' + ) + + local toolkit=no + option gtk && toolkit=gtk; + option gtk3 && toolkit=gtk3; + + econf \ + "${config_params[@]}" \ + $(for s in "${config_withs[@]}" ; do option_with ${s} ; done ) \ + $(option gtk || option gtk3 || echo --without-toolkit-scroll-bars) \ + --with-x-toolkit=${toolkit} +} + +emacs_src_install() { + default + + insinto ${ELISP_SITE_LISP} + hereins site-start.el <<EOF +(require 'site-exherbo) +EOF + + keepdir /var/lib/games/emacs + dovarlibgames -R + # they lose group write permission anyway after being updated + edo chmod g-w "${IMAGE}"/var/lib/games/emacs/* + preserve_scores "${IMAGE}"/var/lib/games/emacs/* + edo chown wizard:games "${IMAGE}"/usr/libexec/emacs/${MY_PV-${PV}}/${CHOST}/update-game-score + edo chmod ug+s "${IMAGE}"/usr/libexec/emacs/${MY_PV-${PV}}/${CHOST}/update-game-score + + elisp-install-site-file + + # Install a copy of the clean source to `source-directory`. The builtin help system of emacs + # requires it in order to fully function. + local emacs_source_root=/usr/src/emacs + dodir ${emacs_source_root} + edo tar xf source.tar -C "${IMAGE}"${emacs_source_root} + + cd "${IMAGE}" + edo mv usr/share/man/man1/ctags{,-emacs}.1 + edo mv usr/bin/ctags{,-emacs} + alternatives_for ctags emacs 500 \ + /usr/bin/ctags ctags-emacs \ + /usr/share/man/man1/ctags.1 ctags-emacs.1 + + hereenvd 70${PN} <<EOF +INFOPATH="/usr/share/info/${PN}" +EOF +} + +emacs_pkg_postinst() { + game_pkg_postinst + alternatives_pkg_postinst + elisp-generate-global-site-file +} + diff --git a/packages/app-editors/emacs/files/emacs-exherbo.el.in b/packages/app-editors/emacs/files/emacs-exherbo.el.in new file mode 100644 index 0000000..08c8523 --- /dev/null +++ b/packages/app-editors/emacs/files/emacs-exherbo.el.in @@ -0,0 +1 @@ +(setq source-directory "/usr/src/emacs") diff --git a/packages/app-editors/emacs/files/emacs-python-docstrings.patch b/packages/app-editors/emacs/files/emacs-python-docstrings.patch new file mode 100644 index 0000000..0baa5f6 --- /dev/null +++ b/packages/app-editors/emacs/files/emacs-python-docstrings.patch @@ -0,0 +1,40 @@ +diff --git a/python.el b/python.el +index 54a657a..f01360c 100644 +--- a/lisp/progmodes/python.el ++++ b/lisp/progmodes/python.el +@@ -405,6 +405,23 @@ The type returned can be `comment', `string' or `paren'." + 'python-info-ppss-comment-or-string-p + #'python-syntax-comment-or-string-p "24.3") + ++(defun python-doc-string-at-p (pos) ++ "Check to see if there is a docstring at POS." ++ (save-excursion ++ (goto-char pos) ++ (if (looking-at-p "'''\\|\"\"\"") ++ (progn ++ (python-nav-backward-statement) ++ (looking-at "\\`\\|class \\|def ")) ++ nil))) ++ ++(defun python-font-lock-syntactic-face-function (state) ++ (if (nth 3 state) ++ (if (python-doc-string-at-p (nth 8 state)) ++ font-lock-doc-face ++ font-lock-string-face) ++ font-lock-comment-face)) ++ + (defvar python-font-lock-keywords + ;; Keywords + `(,(rx symbol-start +@@ -3226,7 +3243,10 @@ if that value is non-nil." + 'python-nav-forward-sexp) + + (set (make-local-variable 'font-lock-defaults) +- '(python-font-lock-keywords nil nil nil nil)) ++ '(python-font-lock-keywords ++ nil nil nil nil ++ (font-lock-syntactic-face-function ++ . python-font-lock-syntactic-face-function))) + + (set (make-local-variable 'syntax-propertize-function) + python-syntax-propertize-function) |