2015-10-28 8 views
3

Как я могу заставить swank забыть все ранее оцененные определения?Как повторно инициализировать swank?

Я хочу, чтобы он определял все макросы, функции и переменные, которые определялись с помощью оценок (например, ,b оценочный буфер). И верните его в том же состоянии, что и при перезагрузке компьютера, и заново запустите swank-сервер.

Я пробовал:

  • в Clear-РЕПЛ (,-) Команда:

    Это только кажется, чтобы очистить экран (буфер).

  • CL-USER>(swank:restart-server) (из буфера REPL):

    Сервер перезагружается, но он до сих пор помнит мои старые defun и другие Определяет.

  • CL-USER>(slime-restart-inferior-lisp) и `(slimv перезапуском-нижне-лепет)

    Оба являются неопределенными.

+0

Что именно вы хотите достичь? Есть возможность удалить привязки для имен функций и макросов, и вы можете избавиться от целых пакетов. –

+0

@ Даниэль-Жур, отредактировал вопрос, пытающийся выяснить, хочу, чего я хочу достичь. –

ответ

6

Slimv автора здесь. Я добавил новую команду «Quit REPL» на slimv. Это закрывает процесс lisp, запускающий swank-сервер, вызывая swank:quit-lisp, а затем закрывает буфер REPL. Вы можете использовать этот, за которым следует другая команда «Connect Server», чтобы перезапустить REPL. Отображение по умолчанию для «Quit REPL» равно <Leader>Q, поэтому вы можете перезапустить REPL с помощью последовательности <Leader>Q<Leader>c. Просьба ознакомиться с сообщением 44a50afc... на GitHub или a8abdbbc... на BitBucket.

2

M-x slime-restart-inferior-lisp перезапустит вещи с нуля.

+1

Проблема с этим подходом заключается в том, что я использую [tag: vim] с [tag: slimv], а не emacs со слизью, поэтому 'M-x ...' не будет работать. Я попытаюсь найти, как вводить 'slime-restart-inferior-lisp' в vim, и я проверю реализацию режима slime emacs, чтобы увидеть, как реализуется« slime-restart-underferior-lisp ». –

1

Это не решит вашу проблему напрямую, но если вам необходимо утерять все свои переменные при перезагрузке, возможно, работа в отдельном пакете должна сработать для вас.

CL-USER> (defpackage :my-separate-package (:use :cl :cl-user :swank)) 
#<PACKAGE "MY-SEPARATE-PACKAGE"> 
CL-USER> (in-package :my-separate-package) 
#<PACKAGE "MY-SEPARATE-PACKAGE"> 
MY-SEPARATE-PACKAGE> (defvar a "a") 
A 
MY-SEPARATE-PACKAGE> a 
"a" 
MY-SEPARATE-PACKAGE> (in-package :cl-user) 
#<PACKAGE "COMMON-LISP-USER"> 
CL-USER> (in-package :my-separate-package) 
#<PACKAGE "MY-SEPARATE-PACKAGE"> 
MY-SEPARATE-PACKAGE> a 
"a" 
MY-SEPARATE-PACKAGE> (in-package :cl-user) 
#<PACKAGE "COMMON-LISP-USER"> 
CL-USER> (delete-package :my-separate-package) 
T 
CL-USER> (defpackage :my-separate-package (:use :cl :cl-user :swank)) 
#<PACKAGE "MY-SEPARATE-PACKAGE"> 
CL-USER> a 
; Evaluation aborted on #<UNBOUND-VARIABLE A {1004AD9AF3}>. 
CL-USER> (in-package :my-separate-package) 
#<PACKAGE "MY-SEPARATE-PACKAGE"> 
MY-SEPARATE-PACKAGE> a 
; Evaluation aborted on #<UNBOUND-VARIABLE A {10055C6063}>. 

Затем удалите среду и вы не имеете эти переменные, каждый раз, когда вы redifine пакету

+0

Это *. * Решите мою проблему. –