dotemacs

My Emacs configuration
git clone git://git.entf.net/dotemacs
Log | Files | Refs | LICENSE

emacs.scm (2175B)


      1 ;;; emacs.scm -- procedures for emacs interaction: entry point
      2 
      3 ;; Copyright (C) 2009, 2010, 2011 Jose Antonio Ortega Ruiz
      4 
      5 ;; This program is free software; you can redistribute it and/or
      6 ;; modify it under the terms of the Modified BSD License. You should
      7 ;; have received a copy of the license along with this program. If
      8 ;; not, see <http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5>.
      9 
     10 ;; Start date: Sun Feb 08, 2009 18:39
     11 
     12 (define-module (geiser emacs)
     13   #:use-module (ice-9 match)
     14   #:use-module (system repl command)
     15   #:use-module (system repl error-handling)
     16   #:use-module (system repl server)
     17   #:use-module (geiser evaluation)
     18   #:use-module ((geiser modules) #:renamer (symbol-prefix-proc 'ge:))
     19   #:use-module ((geiser completion) #:renamer (symbol-prefix-proc 'ge:))
     20   #:use-module ((geiser xref) #:renamer (symbol-prefix-proc 'ge:))
     21   #:use-module ((geiser doc) #:renamer (symbol-prefix-proc 'ge:)))
     22 
     23 (define this-module (resolve-module '(geiser emacs)))
     24 
     25 (define-meta-command ((geiser-no-values geiser) repl)
     26   "geiser-no-values
     27 No-op command used internally by Geiser."
     28   (values))
     29 
     30 (define-meta-command ((geiser-newline geiser) repl)
     31   "geiser-newline
     32 Meta-command used by Geiser to emit a new line."
     33   (newline))
     34 
     35 (define-meta-command ((geiser-eval geiser) repl (mod form args) . rest)
     36   "geiser-eval module form args ()
     37 Meta-command used by Geiser to evaluate and compile code."
     38   (let ((args (syntax->datum args))
     39         (mod (syntax->datum mod)))
     40     (if (null? args)
     41         (call-with-error-handling
     42          (lambda () (ge:compile form mod)))
     43         (let ((proc (eval form this-module)))
     44           (ge:eval `(,proc ,@args) mod)))))
     45 
     46 (define-meta-command ((geiser-load-file geiser) repl file)
     47   "geiser-load-file file
     48 Meta-command used by Geiser to load and compile files."
     49   (call-with-error-handling
     50    (lambda () (ge:compile-file file))))
     51 
     52 
     53 (define-meta-command ((geiser-start-server geiser) repl)
     54   "geiser-start-server
     55 Meta-command used by Geiser to start a REPL server."
     56   (let* ((sock (make-tcp-server-socket #:port 0))
     57          (port (sockaddr:port (getsockname sock))))
     58     (spawn-server sock)
     59     (write (list 'port port))
     60     (newline)))