LINUX.ORG.RU

а как получить readline и дополнение в repl sbcl?


0

0

вот это вроде не получится поставить? оно слишком старое?

* (require :asdf-install) * (asdf-install:install :linedit) ;first-time installation only * (require :linedit) ;if already installed * (linedit:install-repl)

при попытке (asdf-install:install :linedit) (выбирается вариант ставить в ~/.sbcl/) оно ставит и то что уже стоит в виде cl-*.

(попутно вопрос если в дебиане ставишь пакеты cl-* то как их должен увидеть sbcl? нужны отдельные телодвижения?)

ну ладно rlwrap sbcl вроде не страшен, как жалуются :)

а комплектацию того что пишешь в REPL как получить? или только slime?

★★★★★

Надо использовать SLIME, там будет всё, по-другому никто и не работает, поэтому и инструментов других нет (да и не нужны они).

Забудь про asdf-install, используй clbuild.

попутно вопрос если в дебиане ставишь пакеты cl-*

то как их должен увидеть sbcl?



Используй clbuild, в Debian cl-пакеты дюже старые, и мало их. Единственный дистрибутив, в котором есть отличная поддержка Common Lisp - это Gentoo (gentoo-lisp-overlay).

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

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=547682

да оно того увы

dpkg-reconfigure common-lisp-controller 
Reinstalling for sbcl
Recompiling Common Lisp Controller for sbcl
/usr/lib/common-lisp/bin/sbcl.sh loading and dumping clc.
; loading system definition from /usr/lib/sbcl/sb-grovel/sb-grovel.asd into
; #<PACKAGE "ASDF1">
; registering #<SYSTEM SB-GROVEL {B4DFBF9}> as SB-GROVEL
; 
; compilation unit aborted
;   caught 1 fatal ERROR condition

Error running init-common-lisp-controller-v4: Lock on package SB-IMPL violated
                                              when interning NATIVE-FILE-KIND.
See also:
  The SBCL Manual, Node "Package Locks"
mv: невозможно выполнить stat для `sbcl-new.core': Нет такого файла или каталога
FAILED

Done rebuilding

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

Все пакеты лежат в deb вида cl-* и шарятся между всеми видами компиляторов лиспа.

Увы это поломано :(

предложенный фикс в треде об ошибке

The alternative fix given by Joshua Leach fix this problem for me.

edit the following defun in /usr/share/common-lisp/source/common-lisp-controller/post-sysdef-install.lisp


 #+sbcl
 (defun get-owner-and-mode (directory)
   (when (eq :directory
-	    (sb-impl::native-file-kind (namestring directory)))
+	    (sb-unix::unix-file-kind (namestring directory)))
     ;; check who owns it
     (multiple-value-bind (res dev ino mode nlink uid gid rdev size atime mtime)
 	(sb-unix:unix-stat (namestring directory))

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

определенно пора спать :( оно таки работает :)


hp:~# dpkg-reconfigure common-lisp-controller 
Reinstalling for sbcl
Recompiling Common Lisp Controller for sbcl
/usr/lib/common-lisp/bin/sbcl.sh loading and dumping clc.
; loading system definition from /usr/lib/sbcl/sb-grovel/sb-grovel.asd into
; #<PACKAGE "ASDF1">
; registering #<SYSTEM SB-GROVEL {B4DFBF9}> as SB-GROVEL

[undoing binding stack and other enclosing state... done]
[saving current Lisp image into /usr/lib/sbcl/sbcl-new.core:
writing 3488 bytes from the read-only space at 0x01000000
writing 2160 bytes from the static space at 0x01100000
writing 27693056 bytes from the dynamic space at 0x09000000
done]

Done rebuilding


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

В Debian пакаты старые, но есть утилиты для их сборки. Так что недостающие/свежие библиотеки можно собрать самому.

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

> В Debian пакаты старые, но есть утилиты для их сборки.

Так что недостающие/свежие библиотеки можно собрать самому.


Это большая работа, впрочем, кое кто это уже делает: https://developer.bazon.ru/projects/debian-lisp/. Я правда ничего не знаю о текущем статусе проекта и продолжается ли развитие. Но я думаю, что при желании, можно было бы объединиться с автором и помочь с развитием.

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

Этот slime работает без емакса? Насколько я понял, нет.

Топикстартеру: я допиливал автодополнение для sb-readline. Фактически, пришлось переписать код заново, впрочем его там почти нет. На cliki не выложил потому что оно ещё подглючивает иногда и я совсем не обработал дебаггер --- в нём ридлайна нет. В целом работает удовлетворительно. Если интересно, могу выложить вечером.

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

> Этот slime работает без емакса? Насколько я понял, нет.

Нет, конечно, не работает. Ситуация в том, что для эффективной разработки на Common Lisp необходима хорошая среда и фактически необходимо использовать Emacs, иначе никак. А то будете потом рассказывать всякие жуткие истории, что программирование на CL это сущий ад.

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

Меня вполне устраивает командная строка с автодополнением, как в clisp. Для вима есть примитивный модуль slime.vim, который с помощью screen позволяет перебрасывать куски кода на stdout в соседние окна, получается довольно удобно. К сожалению, к операционной системе emacs до сих пор не удосужились прикрутить нормальный текстовый редактор, но это тема для отдельного флейма.

Хотя вообще интересно, если не лень, расскажите какие фичи slime вы используете чаще всего или вам нравятся больше всего. Может и правда я что-то теряю...

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

Комплит конечно интересен, не всегда же есть возможность/силы подконектится через slime (хотя его обязательно поставлю :). Так что: «пусть расцветают 100 цветов», если смогу собрать у себя в дебиане с удовольствием попробую...

А в репле R мне например очень даже уютно (хотя ess и noweb, тоже с удовольствием использую), надеюсь и в лисповом обживусь.

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

> расскажите какие фичи slime вы используете чаще всего

или вам нравятся больше всего.


Первое что приходит на ум:

1. Удобно работать со стэком вызовов, когда вываливается отладчик.
2. Мощный инспектор объектов, постоянно использую его как при обычной работе, так и при иследовании стэка вызовов
3. Автодополнение, readline и т.п.
4. Возможность подключаться к процессам на удалённых серверах, пользуюсь постоянно как для отладки, так и для горячего обновления код.
5. slime-list-threads и slime-thread-debug - совершенно убойные фичи, использую не так часто, но очень, очень полезно для отладки (особенно удалённых серверов)
6. slime-edit-definition, которую вызываю по M-. - открывает опеределение фукнции/макроса «под курсором», черезвычайно полезно для иследования и редактирования кода.
7. И вообще очень удобный lisp-mode для редактирования исходного кода.
8. Плюс много чего ещё

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

к сожалению, статья про SLIME у меня не готова - все никак не соберусь дописать...

из полезных для лиспа пакетов, могу посоветовать еще и paredit

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

> к сожалению, статья про SLIME у меня не готова -

все никак не соберусь дописать...


О, интересно, опубликовать на lisper.ru разрешишь?

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

да без проблем, надо только найти время дописать...

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

я обнаружил :( помню что линк видел...

но в принципе вроде завелся slime и пока ничего не отваливается при движениях :)

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

спасибо, пока обновляю систему при установке libredline6-dev внезапно обновится захотел R :)

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

This is SBCL 1.0.25.debian, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* (asdf:operate 'asdf:load-op 'sbcl-readline)

; loading system definition from /home/petrov/sbcl-readline/sbcl-readline.asd
; into #<PACKAGE "ASDF0">
; registering #<SYSTEM :SBCL-READLINE {AC17BB1}> as SBCL-READLINE
; loading system definition from /usr/share/common-lisp/systems/cffi.asd into
; #<PACKAGE "ASDF0">
; registering #<SYSTEM CFFI {AEB9B21}> as CFFI
; loading system definition from /usr/share/common-lisp/systems/babel.asd into
; #<PACKAGE "ASDF0">
; registering #<SYSTEM BABEL {B220179}> as BABEL
; loading system definition from /usr/share/common-lisp/systems/alexandria.asd
; into #<PACKAGE "ASDF0">
; registering #<SYSTEM :ALEXANDRIA {B595AE1}> as ALEXANDRIA
; loading system definition from
; /usr/share/common-lisp/systems/trivial-features.asd into #<PACKAGE "ASDF0">
; registering #<SYSTEM TRIVIAL-FEATURES {AD2B311}> as TRIVIAL-FEATURES

debugger invoked on a CFFI:LOAD-FOREIGN-LIBRARY-ERROR in thread #<THREAD "initial thread" RUNNING {AA696D9}>:
  Unable to load foreign library (READLINE).
  Error opening shared object "libreadline.so.6.so":
  libreadline.so.6.so: невозможно открыть разделяемый объектный файл: Нет такого файла или каталога.

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [RETRY          ] Try loading the foreign library again.
  1: [USE-VALUE      ] Use another library instead.
  2: [TRY-RECOMPILING] Recompile sbcl-readline and try loading it again
  3: [RETRY          ] Retry performing #<ASDF:LOAD-OP NIL {AA74FB1}> on
                       #<ASDF:CL-SOURCE-FILE "sbcl-readline" {ACB03B1}>.
  4: [ACCEPT         ] Continue, treating #<ASDF:LOAD-OP NIL {AA74FB1}> on
                       #<ASDF:CL-SOURCE-FILE "sbcl-readline" {ACB03B1}> as
                       having been successful.
  5: [ABORT          ] Exit debugger, returning to top level.

(CFFI::FL-ERROR "Unable to load foreign library (~A).~%  ~A")[:EXTERNAL]
0] 5


мистика пошла какая то :( симлинк ей что ли такой сделать раз хочет?

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

Открой sbcl-readline.lisp, найди строку с (cffi:define-foreign-library readline ...) и поиграй с параметром к :default. У меня были такие проблемы, я ещё не разбирался в чём дело. Если ничего не поможет, задавай прямой путь, например так:

(cffi:define-foreign-library readline
  (:unix #p"/lib64/libreadline.so.6.0")
  (t (:default "libreadline")))
anonymous
()
Ответ на: комментарий от archimag

Неосилятор REPLа — перебежчик с VisualStudio, не представляющий себе жизнь без мышевозных «киллер-фич», детектед.

Всё, тобой перечисленное, даёт чистый REPL, безо всяких слаймов. (То, что ты этого не осилил, — исключительно твои половые проблемы.) Кроме, пожалуй, автодополнения, — но оно нужно только быдло monkey кодерам, вскормленным на мелкософтовском IntelliSense.

Топикстартеру: если ты не в состоянии оценить всю мощь REPL, и тебе для работы нужны дополнительные гуёвые приблуды — может, просто Лисп не для тебя? И тебе стоит вернуться в уютненький Дельфи, где ты сможешь по-быстрому накидать формочки мышкой.

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

> Неосилятор REPLа — перебежчик с VisualStudio

Гы, я что-то не пойму, я на ЛОР-е активно присутствую меньше месяца, а как меня только уже не обзывали, и в каких только грехах не подозревали :) Это местная традиция или что-то со мной не так?

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

> Это местная традиция или что-то со мной не так?

С тобой что-то не так.

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

> я на ЛОР-е активно присутствую меньше месяца, а как меня только уже не обзывали, и в каких только грехах не подозревали :) Это местная традиция или что-то со мной не так?

Если бы не обзывали - это было странно, а так все ок.

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

debugger invoked on a SB-EXT:DEFCONSTANT-UNEQL in thread #<THREAD "initial thread" RUNNING {AA696D9}>:
  The constant +HISTORY-FILE+ is being redefined (from "~/.sbcl-history" to
  "~/.sbcl-history")
See also:
  The ANSI Standard, Macro DEFCONSTANT
  The SBCL Manual, Node "Idiosyncrasies"

это можно игнорировать?

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

спасибо! работает и комплектация и история и многострочные команды.

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

А у меня slime не собирается на Fedora 12 x86_64. Скрипт сообщает что сборка не поддерживает данную архитектуру :(

Использую обычный emacs с lisp-mode. Readline нехватает, да :)

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