Klimi's new dotfiles with stow.
Nie możesz wybrać więcej, niż 25 tematów
Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
|
|
-
- (defpackage swank-snapshot
- (:use cl)
- (:export restore-snapshot save-snapshot background-save-snapshot)
- (:import-from swank defslimefun))
- (in-package swank-snapshot)
-
- (defslimefun save-snapshot (image-file)
- (swank/backend:save-image image-file
- (let ((c swank::*emacs-connection*))
- (lambda () (resurrect c))))
- (format nil "Dumped lisp to ~A" image-file))
-
- (defslimefun restore-snapshot (image-file)
- (let* ((conn swank::*emacs-connection*)
- (stream (swank::connection.socket-io conn))
- (clone (swank/backend:dup (swank/backend:socket-fd stream)))
- (style (swank::connection.communication-style conn))
- (repl (if (swank::connection.user-io conn) t))
- (args (list "--swank-fd" (format nil "~d" clone)
- "--swank-style" (format nil "~s" style)
- "--swank-repl" (format nil "~s" repl))))
- (swank::close-connection conn nil nil)
- (swank/backend:exec-image image-file args)))
-
- (defslimefun background-save-snapshot (image-file)
- (let ((connection swank::*emacs-connection*))
- (flet ((complete (success)
- (let ((swank::*emacs-connection* connection))
- (swank::background-message
- "Dumping lisp image ~A ~:[failed!~;succeeded.~]"
- image-file success)))
- (awaken ()
- (resurrect connection)))
- (swank/backend:background-save-image image-file
- :restart-function #'awaken
- :completion-function #'complete)
- (format nil "Started dumping lisp to ~A..." image-file))))
-
- (in-package :swank)
-
- (defun swank-snapshot::resurrect (old-connection)
- (setq *log-output* nil)
- (init-log-output)
- (clear-event-history)
- (setq *connections* (delete old-connection *connections*))
- (format *error-output* "args: ~s~%" (command-line-args))
- (let* ((fd (read-command-line-arg "--swank-fd"))
- (style (read-command-line-arg "--swank-style"))
- (repl (read-command-line-arg "--swank-repl"))
- (* (format *error-output* "fd=~s style=~s~%" fd style))
- (stream (make-fd-stream fd nil))
- (connection (make-connection nil stream style)))
- (let ((*emacs-connection* connection))
- (when repl (swank-repl:create-repl nil))
- (background-message "~A" "Lisp image restored"))
- (serve-requests connection)
- (simple-repl)))
-
- (defun read-command-line-arg (name)
- (let* ((args (command-line-args))
- (pos (position name args :test #'equal)))
- (read-from-string (elt args (1+ pos)))))
-
- (in-package :swank-snapshot)
-
- (provide :swank-snapshot)
|