Как сохранить все функции, которые я ввел в LispBox/Slime?
-
03-07-2019 - |
Вопрос
Ситуация:Я ввел несколько функций во время работы с REPL в Emacs.Проблема:Есть мусор типа ";Оценка прервана», когда я просто сохраняю буфер.Что я хочу:четкие описания всех функций, которые я ввел в их последнюю версию.
Могу ли я сделать это?Спасибо.
Решение
Я согласен, что лучший метод рабочего процесса — писать код в отдельном буфере и оценивать его, а не вводить функции в repl.
Предполагая, что вы пошли по пути repl, я думаю, C.Решение Мартина — сохранить журнал повторов и просмотреть его вручную — ваш единственный вариант.
Если вы поместили функции и переменные в отдельный пакет, вы можете просмотреть символы в пакете, чтобы решить, что вы хотите сохранить.
Например.чтобы увидеть все символы, созданные в пакете cl-user:
(let ((p (find-package :cl-user)))
(loop
for s being the symbols in p
when (eq p (symbol-package s))
do (format t "~a~%" s)))
Другие советы
Я этого не понимаю.Вы вводите определения в REPL и планируете восстановить их позже?Просто сохраните исходный файл, как на любом другом языке.Используйте C-x 2, чтобы разделить окно Emacs на две части.Откройте исходный файл в одном из них C-x C-f foo.lisp.Используйте C-c C-k, C-c C-r и друзей (см. меню SLIME) для компиляции/оценки регионов вашего исходного кода в REPL.
Раньше я искал что-то подобное и не смог найти.Лучше всего записывать все свои определения в отдельный буфер и использовать обширные функции оценки/компиляции SLIME (C-c C-k загружает весь файл, C-x C-e оценивает последнее выражение, C-c C-r оценивает область и т. д.), только напрямую входя в вещи REPL, которые вы не хотите сохранять.
Хм, C-x o
или C-x b
чтобы добраться до буфера SLIME REPL, затем C-x w
или C-x C-s
чтобы сохранить его в файл.Все, что касается SLIME/CL, — это комментарии читателей;вы можете либо написать хак для чтения, чтобы перезагрузить файл, рассматривая подсказки как комментарии, либо вы можете просмотреть файл самостоятельно, чтобы захватить фрагменты, которые вы хотите сохранить.