← Архив: SLIME

навигация к ошибке загрузки asdf и к определению системы

Author: · 05.07.2015 16:48
· original author: den73
Перевожу свою библиотечку на sbcl.
Есть такие фичи:
1. Если при сборке asdf-ом возникла проблемка, то дебаггер не позволяет напрямую открыть файл исходника, где она случилась (насколько я знаю).
Я решил эту проблему. В ошибке будет иметься рестарт EDIT-COMPONENT. Вызывать его не надо, но надо нажать двоеточие (команда eval-in-frame)
и дальше написать asdf::e и RETURN. Тогда откроется файл исходника. Его можно скомпилировать уже обычным c-c c-k (slime-compile-and-load-file)
и увидеть расписные ошибки.
Если же после двоеточия написать asdf::ep, то откроется файл системы, к которой
относится этот исходник.
2. M-. на имени системы позволяет перейти к её исходнику. Это изменение ещё не в репозитоири, если кому интересно - пишите.
· original author: lithp
Интересно.  На другие реализации можно портировать?  А где сырцы? :)
· original author: den73
Уже работает на лиспворксе, причём на лиспворксе есть ещё и расписная навигация для ошибок чтения.
Помимо этого в лиспворксе есть ещё возможность задавать для файла таблицу чтения. Пишешь в файле (in-readtable имя)
и дальше компиляция форм идёт в этой таблице чтения.
И много других вкусностей.
Сейчас сижу, думаю, как фичу с таблицей чтения перенести на SLIME, но боюсь, что тут без форка не обойтись. Неприятно это.
Сорцы тут:
https://bitbucket.org/budden/budden-tools
Сейчас они в процессе перевода, так что не соберутся, наверное, ни на одной из двух систем.
Любая обратная связь приветствуется, а уж помощь делом - тем более :)
· original author: lithp
Сейчас сижу, думаю, как фичу с таблицей чтения перенести на SLIME, но боюсь, что тут без форка не обойтись. Неприятно это. 


Если получится хорошо и удобно, можно наверное и в апстрим протолкнуть, в contribs модули например.  Удобная фича же.

https://bitbucket.org/budden/budden-tools


Спасибо.   Там много всего. :) как бы со всем этим всем разобраться.

> Сейчас они в процессе перевода


То есть будет раздробление на более мелкие независимые части?
· original author: den73
Форкаю slime... иначе не удалось... Вроде ил запустился и посчитал (+ 2 2)
Нет, существенное раздробление не планируется. Будет куча директив условной компиляции.
Я понимаю, что раздробить было бы полезно, потому что у меня довольно стрёмная библиотечка.
В какой-то степени уже раздроблено. В целом же на приведение в божеский вид у меня нет нет ресурсов.
Залил сорсы, слиме пока не залил.
· original author: den73
Пока не доделано до конца. У меня своя таблица чтения. Когда на ней будет работать комплишен,
будет более понятно, работает ли ил. Процесс идёт бодро, но думаю, ещё пару дней понадобится.
· original author: den73
Вот что-то наваял, не знаю, насколько жизнеспособно:
 https://bitbucket.org/budden/budden-tools/src/866bcf15ad5c793868a0a31e602474189eeec91f/asdf-3.1.4-tools.lisp?at=default  - это про редактирование компонента при ошибке и про
навигацию к определеию системы по её имени. Зависит от остальной части библиотеки.
https://bitbucket.org/budden/budden-slime - это клон ила, различающий в файле таблицы чтения.
Если в файле написать (in-readtable), то ил поймёт, какая таблица чтения нужна. Требует editor-hints.named-readtables.
· original author: den73
Наконец-то выяснил, что если загружать систему через M-x slime-load-system, то он показывает ошибки.
Но если система загружается через файл инициализации, написанный на лиспе, то это не помогает.