# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4 # $Id$ PortSystem 1.0 name slime version 20080404 epoch 20080404 revision 1 categories lang platforms darwin maintainers evenson@panix.com description An Emacs mode for unifying Common Lisp development long_description \ SLIME extends Emacs with new support for interactive \ programming in Common Lisp. The features are \ centred around `slime-mode', an Emacs minor-mode \ that complements the standard `lisp-mode'. While \ `lisp-mode' supports editing Lisp source files, \ `slime-mode' adds support for interacting with a \ running Common Lisp process for compilation,\ debugging, documentation lookup, and so on. homepage http://common-lisp.net/project/slime/ master_sites ${homepage} fetch.type cvs cvs.root :pserver:anonymous@common-lisp.net:/project/slime/cvsroot cvs.module slime cvs.password anonymous cvs.date ${version} worksrcdir slime use_configure no depends_lib port:emacs default_variants +sbcl variant app description "Build SLIME against editors/emacs-app" { depends_run-append port:emacs-app depends_run-delete port:emacs } variant sbcl description "Require lang/sbcl for SLIME" { depends_run-append port:sbcl } variant openmcl description "Require lang/openmcl for SLIME" { depends_run-append port:openmcl } variant clisp description "Require lang/clisp for SLIME" { depends_run-append port:clisp } set slime_emacs_binary [ if { [regexp carbon [join [registry_installed emacs]]] || [ variant_isset app ] } { list "/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs" } else { list "${prefix}/bin/emacs" } ] ui_msg "slime_emacs_binary is $slime_emacs_binary" set slime_site_lisp_dir [ if {[ variant_isset app ]} { list "${destroot}/Applications/MacPorts/Emacs.app/Contents/Resources/site-lisp/slime" } else { list "${destroot}${prefix}/share/emacs/site-lisp/slime" } ] set slime_site_lisp_contrib_dir ${slime_site_lisp_dir}/contrib set slime_byte_compile_p 0 post-patch { reinplace "s|/usr/local|${prefix}/share|g" \ ${worksrcpath}/doc/Makefile } configure { # if {! [file executable ${slime_emacs_binary}]} { # set slime_byte_compile_p 0 # ui_msg "Couldn't find an executable Emacs image so won't byte compile the Elisp files." # } else { # set slime_byte_compile_p 1 # ui_msg "Emacs binary used for byte compilation is ${slime_emacs_binary}." # } set slime_byte_compile_p 0 } build { cd ${worksrcpath} if {${slime_byte_compile_p}} { system "${slime_emacs_binary} \ -batch \ --directory ${worksrcpath} --directory ${worksrcpath}/contrib \ --funcall batch-byte-compile \ contrib/*.el" system "${slime_emacs_binary} \ -batch \ --directory ${worksrcpath} --directory ${worksrcpath}/contrib \ --funcall batch-byte-compile \ *.el" # system "${slime_emacs_binary} \ # --batch --directory $pwd --directory contrib \ # --funcall batch-byte-compile \ # *.el" # system "${slime_emacs_binary} \ # --batch --directory . --funcall batch-byte-compile \ # slime.el \ # slime-autoloads.el \ # hyperspec.el" # cd ${worksrcpath}/contrib # system "${slime_emacs_binary} \ # --batch \ # --directory . --directory .. \ # --funcall batch-byte-compile \ # slime.el slime-autoloads.el \ # hyperspec.el \ # bridge.el \ # inferior-slime.el \ # slime-asdf.el \ # slime-parse.el \ # slime-autodoc.el \ # slime-banner.el \ # slime-c-p-c.el \ # slime-editing-commands.el \ # slime-fancy-inspector.el \ # slime-fancy.el \ # slime-fuzzy.el \ # slime-highlight-edits.el \ # slime-indentation.el \ # slime-motd.el \ # slime-parse.el \ # slime-presentation-streams.el \ # slime-presentations.el \ # slime-references.el \ # slime-scheme.el \ # slime-scratch.el \ # slime-tramp.el \ # slime-typeout-frame.el \ # slime-xref-browser.el" } cd ${worksrcpath}/doc system "make slime.info" } destroot { cd ${worksrcpath} xinstall -m 755 -d ${slime_site_lisp_dir} foreach file [glob *.el *.elc *.lisp ChangeLog] { xinstall -m 644 ${file} ${slime_site_lisp_dir} } cd ${worksrcpath}/contrib xinstall -m 755 -d ${slime_site_lisp_contrib_dir} foreach file [glob *.el *.elc *.lisp ChangeLog] { xinstall -m 644 ${file} ${slime_site_lisp_contrib_dir} } xinstall -m 644 ${worksrcpath}/doc/slime.info ${destroot}${prefix}/share/info } post-activate { ui_msg "To use SLIME, you need to have a Common Lisp installed with which" ui_msg "you wish to interact. At the moment, 'openmcl', 'sbcl', and" ui_msg "'clisp' all work. By default, MacPorts SLIME installs 'sbcl' as a" ui_msg "dependency." ui_msg "" ui_msg "Then put the following in your ~/.emacs:" ui_msg "" ui_msg "(require 'slime-autoloads)" ui_msg "(setq slime-lisp-implementations" ui_msg " \`((sbcl (\"/opt/local/bin/sbcl\"))" ui_msg " (clisp (\"/opt/local/bin/clisp\"))))" ui_msg "(add-hook \'lisp-mode-hook" ui_msg " (lambda ()" ui_msg " (cond ((not (featurep \'slime))" ui_msg " (require \'slime) " ui_msg " (normal-mode)))))" ui_msg "" ui_msg "(eval-after-load \"slime\"" ui_msg " \'(slime-setup '(slime-fancy slime-banner)))" ui_msg "" ui_msg "Populate the initialization list in SLIME-LISP-IMPLEMENTATIONS" ui_msg "with the correct paths to the Common Lisp exectuables you wish to use." ui_msg "" ui_msg "Then, 'M-x slime' from Emacs should connect you to the first" ui_msg "CL implementation in the list. 'C-- M-x slime' will present" ui_msg "an interactive chooser for additional implementations in the list." ui_msg "" }