LINUX.ORG.RU

[slime] сохранить определенные в repl функции в файл

 


0

1

Как дописать в открытый в одном буфере исходник последние версии всех удачно определенных в repl макросов, функций, классов, переменных итд? А с автоматическим удалением устаревших версий, находящихся на момент сохранения в дозаписываемом файле?

P.S.: существует ли slime для python? Очень не хватает C-c C-c. Ну и остального по мелочам. PyDev console как-то не катит на эту роль.

Ответ на: комментарий от anonymous

> Так делать не надо, а надо сразу редактировать в файле.

Я обычно так и делаю, но все же интересно.

alienclaster ★★★
() автор топика

[code] (defmacro defun (name &body body) (progn `(setf (gethash save:*defuns name) `body) (cl:defun ,@body))

(defmacro defmacro ...)

(defmacro defvar ...)

.... [/code]

тогда будет можно

monk ★★★★★
()
Ответ на: комментарий от monk

> тогда будет можно

Стандарт явно говорит о неопределенном поведении в случае переопределения символов в пакете CL.

anonymous
()

Как дописать в открытый в одном буфере исходник последние версии всех удачно определенных в repl макросов, функций, классов, переменных итд? А с автоматическим удалением устаревших версий, находящихся на момент сохранения в дозаписываемом файле?

В лиспе так не делают, либо используй нормальные исходники, или образы. В любом случае, описаный тобо способ быстро приведет к свалке кода в фауйле.

P.S.: существует ли slime для python? Очень не хватает C-c C-c. Ну и остального по мелочам. PyDev console как-то не катит на эту роль.

Нет и не предвидится, можно пользовать pymacs, это немного упростит жизнь и позволит закидывать в ipython новые определения, но всеравно до нормального slime далеко.

cvb
()
Ответ на: комментарий от anonymous

> в случае переопределения символов

зачем «переопределения». Пусть в своём проекте определит свои defun и прочие def*.

monk ★★★★★
()

Нельзя так. Но можно, наверное, достать всю хистори из SLIME (в переменной slime-repl-input-history можно ее отыскать + можно глянуть на функции, работающие с хистори из slime-repl-*), вывести ее в удобном виде и скопировать оттуда, что надо. elispить придется немного, но таким путем можно хоть какой-то прежний ввод в код хоть как-то засунуть. Размер истории ввода можно менять, если потребуется, сдлеать побольше. Сама хистори потому сохраняется в файле, который указан в переменной slime-repl-history-file.

Zubok ★★★★★
()
Ответ на: комментарий от alienclaster

> Отлично, тогда тем более зачем нам грязные хаки

грязные хаки


Где «грязные хаки»? Выше было приведено нормальное Лисповое решение. Что не так?

anonymous
()
Ответ на: комментарий от anonymous

> Где «грязные хаки»? Выше было приведено нормальное Лисповое решение. Что не так?

Решение не универсально, переопределение стандартных символов - не торт, как поведет себя такой defmacro, если я буду добавлять функции и через repl, и через редактор кода одновременно. Да и если по-честному это вообще не то, о чем я спрашивал: тема была о возможностях slime.

alienclaster ★★★
() автор топика
Ответ на: комментарий от alienclaster

> тема была о возможностях slime.

SLIME предоставляет только те возможности, которые действительно хоть для чего-нибудь необходимы. SLIME не умеет варить кофе и ещё много чего такого, что не имеет отношения к разработке на CL.

archimag ★★★
()
Ответ на: комментарий от alienclaster

> Это ты мимо пробегал, сказать было нечего, но очень хотелось?

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

archimag ★★★
()
Ответ на: комментарий от archimag

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

глупо требовать

никому не нужны



ЛОР тебя испортил.

alienclaster ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.