Как установить текущий каталог SBCL, используя слизь? - PullRequest
7 голосов
/ 24 февраля 2012

В прошлом я использовал следующий скрипт для запуска SBCL:

breakchars="(){}[],^%$#@\"\";:''|\\"
cd /media/E/work

exec rlwrap --remember -c -b "$breakchars"  -f "$HOME"/.sbcl_completions  sbcl --noinform --userinit "$HOME"/.sbclrc "$@"

Теперь, когда я использую slime в emacs, я не знаю, как установить текущий каталог SBCL?

Любое предложение приветствуется!

Ответы [ 2 ]

8 голосов
/ 24 февраля 2012

SLIME запускает систему Lisp с текущим каталогом, взятым из каталога, в котором находится файл, связанный с текущим буфером. Обычно вы открываете файл, в котором вы хотите, чтобы SLIME запускался первым.

Если вы хотите изменить текущий каталог на работающий Lisp, тогда лучше всего использовать , cd shortcut . Это предполагает, что вы правильно настроили slime-repl, так как текущие установки Slime очень минимальны по умолчанию. См. предоставленных пакетов , вы, вероятно, хотите по крайней мере необычный метапакет slime .

5 голосов
/ 24 февраля 2012

Зачем вам нужно изменить текущий каталог с SLIME?Я предполагаю, что это не потому, что вы хотите посетить исходный файл Lisp из системы, которую вы сейчас пишете, а потому, что вы хотите написать код, который читает или записывает файл, содержащий данные.

Если это так, то, вероятно, лучшепопробовать local-projects в Quicklisp .Вместе с quickproject он позволяет легко создавать системы, которые затем можно загрузить с помощью (ql:quickload 'my-system) или даже (require 'my-system).

Если вам нужно обратиться к файлу данныхрасположенный относительно корня системы my-system (просто используя имя из последнего абзаца для обеспечения согласованности примеров), вы можете использовать asdf:system-relative-pathname.Например, (asdf:system-relative-pathname 'my-system "files/data.txt").

Конечно, развертывание - это совершенно другой бизнес.Мое решение состоит в том, чтобы посмотреть , как исполняемый исполняемый файл был назван , чтобы определить, развернут ли код или находится в разработке.Если в разработке я использую asdf:system-relative-pathname.При развертывании я определяю путь к файлам на основе пути к исполняемому файлу (мой «скрипт сборки» копирует эти файлы рядом с исполняемыми файлами при сборке проекта).

Поскольку я начал использовать этот подход, мойпотребность в cd -инге в SBCL упала до нуля.cd - вокруг было не сложно, но приятно иметь меньше поводов для беспокойства.

...