# -*- 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: Portfile 50980 2009-05-14 19:41:55Z and.damore@macports.org $ PortSystem 1.0 name slime version 20081227 epoch 20081227 revision 0 categories lang platforms darwin maintainers easieste 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 variant app description "Build SLIME against editors/emacs-app" { depends_run-append port:emacs-app depends_run-delete port:emacs depends_lib-append port:emacs-app depends_lib-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 } post-patch { reinplace "s|/usr/local|${prefix}/share|g" \ ${worksrcpath}/doc/Makefile } set slime_emacs_binary "" set slime_site_lisp_dir "${destroot}${prefix}/share/emacs/site-lisp/slime" set slime_site_lisp_contrib_dir "${slime_site_lisp_dir}/contrib" set slime_byte_compile_p 0 configure { set slime_emacs_binary [ if { [ variant_isset app ] || [regexp carbon [join [registry_installed emacs]]] } { list "/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs" } else { list "${prefix}/bin/emacs" } ] set slime_byte_compile_p 0 # Byte compiling doesn't seem to be working 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}." } # Comment next line out to try byte compilation set slime_byte_compile_p 0 } build { if { ${slime_byte_compile_p} } { system "cd ${worksrcpath} && ${slime_emacs_binary} \ --batch \ --directory ${worksrcpath} \ --directory ${worksrcpath}/contrib \ --funcall batch-byte-compile \ contrib/*.el" system "cd ${worksrcpath} && ${slime_emacs_binary} \ --batch \ --directory ${worksrcpath} \ --directory ${worksrcpath}/contrib \ --funcall batch-byte-compile \ *.el" } system "cd ${worksrcpath}/doc && make slime.info" } destroot { xinstall -W ${worksrcpath} -m 755 -d ${slime_site_lisp_dir} foreach file [glob *.el *.elc *.lisp ChangeLog] { xinstall -W ${worksrcpath} -m 644 ${file} ${slime_site_lisp_dir} } xinstall -W ${worksrcpath}/contrib -m 755 -d ${slime_site_lisp_contrib_dir} foreach file [glob *.el *.elc *.lisp ChangeLog] { xinstall -W ${worksrcpath}/contrib -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. As a convenience, port variants for SLIME exist" ui_msg "which require the installation of these Lisps." ui_msg "" ui_msg "Then put the following in your ~/.emacs:" ui_msg "" ui_msg "(setq load-path (cons \"${prefix}/share/emacs/site-lisp/slime\" load-path))" ui_msg "(require 'slime-autoloads)" ui_msg "(setq slime-lisp-implementations" ui_msg " \`((sbcl (\"${prefix}/bin/sbcl\"))" ui_msg " (clisp (\"${prefix}/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 "" }