← Архив: Common Lisp

Выложил файловый релиз clcon 0.2.2

Author: · 01.10.2015 19:57
· original author: den73
Выложил файловый релиз clcon - проекта IDE для Common Lisp. Фронтенд - tcl/tk, бекэнд - SWANK. Состояние - ранняя альфа или работающий прототип. Общая цель - сделать среду для лиспа более простую в освоении, чем EMACS, и с пермиссивной лицензией.
Файловый релиз нужен для того, чтобы кардинально упростить процедуру установки под Windows. Установив ActiveTcl и распаковав один архив, получаем работающий SBCL с настроенным quicklisp и настроенными исходниками SBCL для просмотра.
Подробности на сайте проекта и в предыдущей теме ,
а также на ЛОРе
· original author: den73
Ну и картиночки. Вот такую картиночку увидеть нельзя, потому что с раскраской среда быстро зависает.
 
А вот это наши трудовые будни:
· original author: den73
Сделал ещё три команды для отладчика: возврат из кадра стека и два варианта вычисления в кадре стека. Мучаюсь с плавающей ошибкой в редакторе под Windows.
· original author: den73
Файловый релиз уже сильно устарел, но в репозитории есть реализация интерфейса к степперу:
· original author: den73
Выложил релиз 0.2.4 под офтопик с последними изменениями.
· original author: den73
Здесь: https://bitbucket.org/budden/clcon/downloads/clcon-0.2.4.zip
Под офтопик = под Windows.
· original author: den73
Сделал поиск с заменой для редактора.
· original author: den73
Выложил версию 0.2.6.
Новостей немного, вот основные:
- добавлен поиск по нескольким файлам
- исправлена нехорошая ошибка в редакторе (это было самым трудным)
- изменённые файлы помечаются звёздочкой
Чем дальше, тем большую долю работы делаю в самой среде. Под Windows вообще емакс не запускаю.
Под линуксом емакс пока удобнее, хотя некоторые инструменты (поиск по файлам, навигация по коду tcl)
у меня уже лучше, чем в емаксе. В ближайших планах - подсветка парных скобок.
Потом буду приделывать cl-stirling-engine к среде. Ну и закругляться с интенсивной работой над
этим проектом - дальше только повышать качество. Как никак, я безработный с сентября месяца,
пора бы и о хлебе насущном призадуматься.
Релиз здесь:
https://bitbucket.org/budden/clcon/downloads/clcon-0.2.6.zip
· original author: den73
Взялся всерьёз за баги в одуванчике. За сегодня он стал работать лучше. Вроде передалал фоновую раскраску, на вид работает, но посмотрим, что будет дальше.
Наконец-то дело приблизилось к подсветке парных скобок, но так и не начал пока ею заниматься.
· original author: pva
just my 2 cents:
> Общая цель - сделать среду для лиспа более простую в освоении, чем EMACS, и с пермиссивной лицензией.
Исходя из сказанного, делай как можно больше частых функций на экране, не прячь в меню. В стиле MSVS, Eclipse и прочих. Если они не будут запрятаны в меню, их не надо будет искать.
· original author: pva
И все равно, мне кажется, допилить (х)emacs было бы веселее. Есть же CUA режим и прочее, что делает емакс меньше для чужих с хищниками и больше для нормальных людей. Но я понимаю, фатальный недостаток и всё такое. Я бы и сам, наверное, так поступил, т.е. писал бы своё с нуля просто чтобы разобраться.
· original author: pva
(А если бы ты это сделал под Sublime, то это была бы вообще бомба)
· original author: den73
В смысле под Sublime? В стиле Sublime или в качестве расширения для Sublime? В первом случае - нужно посмотреть. Во втором - нет смысла. Пермиссивная лицензия позволяет делать программу, в которую среда включена, и делать с ней что угодно, продавать дешевле 70$, раздавать даром и т.п. EMACS ограничивает свободу с одной стороны, Lispworks - с другой. Т.е. я делаю это не от желания разобраться и не из-за NIH синдрома, а просто ввиду отсутствия инструмента.
Касаемо помещения чего-либо на экране - не люблю тулбары и сам ими сроду старался не пользоваться. Считал, считаю и буду считать, что эффективная работа на компьютере - это только клавиатура. Поэтому, пока будет всё в меню. Если вдруг дело дойдёт до какого-то платного приложения, где это будет обязательно, чтобы продать - тогда только буду делать. Ну или если кто-нибудь патчи пришлёт :)
Идеально, конечно, иметь apropos, как в EMACS, или хотя бы поиск пункта меню по имени, чтобы не лазить по нему в поисках нужной команды. До этого может быть доживём.
· original author: den73
Сделал раскраску скобок. Вроде всё просто на вид, да и делать ничего не надо - только интерфейс к уже существующему коду. Но мороки ужасно много. Зато у меня теперь ленивая раскраска и даже вроде работает. Хотя иногда и не работает...
· original author: pva
С саблаймом я, признаться, не понял, в чём проблема. И да, я имел в виду второй вариант, расширение под саблайм.
Что касается тулбаров, то я неаккуратно выразился. Я имею в виду графические элементы, что-то показывающие, а не обязательно, чтобы в них тыкать. Но тебе решать, конечно. Как говорится, наше дело - предложить, ваше - отказаться.
· original author: den73
Саблайм - это коммерческая программа, и она стоит денег (несмотря на то, что бета). Они сегодня разрешают ей пользоваться даром, а завтра запретят. А послезавтра исходник отзовут. Т.е., невозможность планировать и необходимость платить пусть даже за хороший, но всего лишь текстовый редактор.
> Я имею в виду графические элементы, что-то показывающие,
Не понял. Например, какой элемент?
· original author: den73
Ну и чтобы два раза не вставать, похоже, что разработка приближается к завершению (тьфу-тьфу). Сегодня емакс уже почти не трогал - всё делал в своей среде. Опыт показывает, что она работоспособна и работать в ней после емакса не противно, несмотря на менее мощный функционал.
Кое-что нужно ещё доделать, кое-чего будет и впредь не хватать (в сравнении с емаксом).
Надеюсь за эту неделю закончить добавление функционала. В последние два дня уже значительное время потратил на правку наиболее раздрающих несложных багов,
а не на новый функционал.
· original author: pva
Я имел в виду инспекторы типа как на картинке слева.Или вот тут справа:
· original author: pva
Во первых, в чём проблема платить за программу, пусть даже и текстовый редактор? Чисто формально, в чём проблема?И во вторых, какими коммерческими программами общего профиля когда-либо "запрещали" пользоваться и как это можно было реализовать технически при условии оффлайновой работы программы? Мне просто интересно, откуда такая паранойя. Я понимаю проблему закрытого кода, но проблему денег или "запретят" - не понимаю. Потому что такой проблемы нет. С деньгами еще б можно было повысасывать из пальца мысли о бедных студентах и тэдэ, но это просто смешно. Нет денег - осилил емакс, вим или любой другой бесплатный редактор (например, MS Visual Studio, бугага) и всё, ничего не потерял.
· original author: pva
https://en.wikipedia.org/wiki/List_of_text_editors
Неужели не нашлось ни одного редактора с подходящими условиями?
· original author: Mna
Ага, значит пришел я попробовать, по-бета-тестить:
Тестовая платформа Linux-amd64 (Linux Mint Rafaela)
Вот это надо добавить в список зависимых пакетов: - иначе не работает.
В главе/графе "Start your SBCL and install dependencies." добавить этих:
;; Patch to correct absent libraries:
(ql:quickload "named-readtables")
(ql:quickload "command-line-arguments")
(ql:quickload "cl-utilities")
;;end-of patch
С этими сервер уже запускается.
Но дальше - clcon.tcl все равно tcl не запускается. В этом странном tcl я не силен потому пока не разобрался в чем там дело:
wish clcon.tcl
~/.quicklisp/local-projects/clcon $ wish clcon.tcl
Error in startup script: unknown or ambiguous subcommand "cat": must be bytelength, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart
    while executing
"string cat "::" $name"
    (procedure "proc" line 9)
    invoked from within
"proc named_args {arguments defaults} {
    upvar 1 "" ""
    array set "" $defaults
    foreach {key value} $arguments {
      if {![info exists ($key..."
    (file "./named_args.tcl" line 2)
    invoked from within
"source [file join $::tkcon::ScriptDirectory $filename]"
    (procedure "TkconSourceHere" line 3)
    invoked from within
"TkconSourceHere named_args.tcl"
    (file "clcon.tcl" line 51)
===конец вывода
· original author: den73
> Во первых, в чём проблема платить за программу, пусть даже и текстовый редактор? Чисто формально, в чём проблема?
Вопрос не так поставлен. Есть программы платные и есть безплатные. Это факт, как бы мы к нему не относились. Но безплатные, при прочих равных, будут более популярны, потому что за них не надо платить.
> И во вторых, какими коммерческими программами общего профиля когда-либо "запрещали" пользоваться
Ну такое вполне возможно. Отзыв лицензии. Тем более, сейчас, когда санкции. Пользоваться фактически будет можно, но это будет незаконно. Допустим, завтра я продам продукт на базе Sublime государству Россия. И что, государство Россия будет воровать 80 долларов на каждую установку у неведомого заграничного юрлица?
> Неужели не нашлось ни одного редактора с подходящими условиями?
Я искал, можно пошарить следы этого поиска в моих предыдущих темах. Вот и нашёл два: виджет text из tcl - это текстовый редактор. И одуванчик - тоже редактор, просто на лицо некрасивый. Вот я их _оба_ и взял в своей проект, заставив работать тандемом. Уж не знаю, числятся ли они в твоём списке.
> Инспекторы.
Ааа. Ну это хорошее дело. Хотя инспектор файлов скорее всего будет лучше внешний (я, например, использую Total Commander, кому-то mc по душе, а кто-то любит только консоль). Так что пока нет в планах. Инспектор структуры кода, конечно хочется, но пока я ограничился средством для поиска определений, что-то типа imenu в EMACS. Главное в нём - я его сделал за два часа. Других достоинств у него нет, дальше идут недостатки.
В общем-то, минимальная цель у меня по сути уже достигнута, осталась пара мелочей. Так что я не буду дальше этот проект развивать в направлении IDE для лиспа. Если он будет востребован, тогда другое дело. Пока у меня 11 скачиваний последней версии, из них в двух я не уверен (сайт барахлил, мог случайно сам нажать на скачку). На форумах особой реакции тоже нет, два-три человека заинтересовались. Сделаю оболочку для cl-stirling-engine и займусь другим.
· original author: den73
>(ql:quickload "named-readtables")
>(ql:quickload "command-line-arguments")
>(ql:quickload "cl-utilities")
Спасибо!
> string cat
Проблема в версии tcl. У меня 8.6.4 - последняя. У тебя какая? Под линуксом это проверяется так:
запускаешь из консоли wish и пишешь в нём (в консоли, а не в графическом окошке):
puts $tk_patchLevel
Я как раз только час назад попробовал запустить с tcl 8.5.8 - не запускается именно с этой ошибкой.
Ты можешь обновиться до последней версии tcl?
В противном случае есть мне смысл попробовать понизить требования до твоей версии tcl.
Но я уже нашёл порядка 40 вхождений string cat в исходник, а это лишь первая проблема на этом пути.
· original author: Mna
>Спасибо!
надеюсь добавишь в инструкцию)
>> string cat
>Проблема в версии tcl. У меня 8.6.4 - последняя.
Спасибо за инструцию по проверке версии.
она у меня 8.6.1 - стандартная в LTS поставке линукса
> Ты можешь обновиться до последней версии tcl?
> В противном случае есть мне смысл попробовать понизить требования до твоей версии tcl.
Требования понизить хотя бы до этой версии стоит потому что такая версия в Long term support-дистрибутиве
если оно позволяет без перекомпиляции одновить - то попробую. хотя странно как-то. Tk, они ж "тысячелетняя" библиотека...
> Но я уже нашёл порядка 40 вхождений string cat в исходник, а это лишь первая проблема на этом пути.
Я с одной стороны совсем не разбираюсь в этом Tk... но такое ощущение что у них стабильный API и таких резких многочисленных перемен не должно быть, скорее всего заусеница одинокая где-то торчит... а не 40 правок. мне так кажется.
· original author: den73
В инструкцию уже добавил, пока в локале, думаю, к ночи будет в интернете.
tcl весьма активно развивается, и string cat - как раз новинка. Её несложно эмулировать, вопрос в том, что новинок таких полно,
вот они:
http://www.tcl.tk/software/tcltk/8.6.html
Думаю, если бы я сразу написал программу под 8.5, то она бы работала и в 8.6. Обратное, естественно, не обязано и не может быть правдой.
· original author: den73
Вот более полный список новинок версии 8.6, к-рая вышла в этом году:
http://wiki.tcl.tk/21276
Ну ща я подумаю... Ладно, попробую собрать 8.6.1 - всё равно я как раз сейчас пытаюсь собрать под офтопик.
· original author: den73
Хотя надо ещё почитать про отличия 8.6.1 от других - может она кривая какая...
· original author: den73
В общем попробую снизить, но не факт, что получится.
· original author: Mna
Ну поскольку мне самому очень нетерпелось запустить - я нашел локальный выход....
Версия tcl/Tk tombert-а инсталлируется в локальный каталог и работает оттуда, скомпилированное в динарник есть на его сайте [1]:
Installing tcl/Tk 8.6.4 :
http://wiki.tcl.tk/668
tombert's tcltk[1]
  (latest version: 8.6.4-5 and 8.5.18-5, uploaded 13/08/2015) Compiled under Ubuntu 12 LTS & 14 LTS (.deb, 32&64bit).
  Installation packages into /home/tcltk. No paths are modified, run by calling /home/tcltk/bin/tclsh.
[1] https://bitbucket.org/tombert/tcltk/downloads
# To satisfy its dependencies run:
$ sudo apt-get install  libfftw3-3 libfftw3-long3
$ sudo dpkg -i tcltk86-8.6.4-5.tcl86.trusty.x86_64.deb
---
После этого запускается так:
~/.quicklisp/local-projects/clcon $ /home/tcltk86/bin/wish clcon.tcl
попробую что-то в нем поделать.
· original author: Mna
> ~/.quicklisp/local-projects/clcon $ /home/tcltk86/bin/wish clcon.tcl
>попробую что-то в нем поделать.
А фонты в консоли можно как-то поменьше сделать? они у меня огромные.
· original author: Mna
> ~/.quicklisp/local-projects/clcon $ /home/tcltk86/bin/wish clcon.tcl
О! а оно и так тоже работает: можно в однострочный
$ /home/tcltk86/bin/wish ~/.quicklisp/local-projects/clcon/clcon.tcl
· original author: Mna
скрипт завернуть (преждевременно отослалось)
В консоли что курсор гуляет где хочет, а не остается только в строке текущей команды  - это так и задумано чтоб болезнь slime-а была, или просто временная недоработка?
· original author: den73
Ураааа! Не буду тогда опускать версию пока что.
> В консоли что курсор гуляет где хочет
Нет, так не было, я нарочно сделал. Смысл в том, что ты можешь написать в консоли .apr con Enter, у тебя всё это выплюнется в консоль и
ты можешь стрелочками подняться и на выбранном нажать Alt-. для попадания в исходник.
Чтобы вернуться в конец, жми Control-End. А в чём тут болезнь?
· original author: Mna
> А фонты в консоли можно как-то поменьше сделать? они у меня огромные.
фонты огромно-неудобные
это в исходниках надо править или в конфиг-файлах или с командной строки -font запустить как-то с какими-то параметрами?
--
болезнь в Эмаксе что жмешь вместо Ctrl-ArrowUp <Enter> просто ArrowUp <Enter> и оно там что-то не то, делает а зачем так - не пойму. да можно привыкнуть. только этот Ctrl-ArrowUp только в этом Эмаксе а теперь и тут.
Если есть еще какой-то юз-кейс в Эмаксе к этому то хоть какое-то оправдание а иначе совсем непонятно зачем неудобство.
Так и тут. ок, попробую пока применить.
---
если clcon без сервера запустить приносит MessageBox с тайтлом Socket Connection Error
Unable to connect to "127.0.0.1:4009": couldn't open socket: connection refused
и кнопкой [OK]
 -- можно было сказать конкретнее нечто вроде "запустите пожалуйста сервер" - либо самому где-то его запустить в бэкграунде
--
· original author: den73
Фонты править в сорсах, причём не в одном месте. Для главной консоли вроде бы есть опция командной строки, но я не пробовал. Попробуй
.fics {font create} и .fics {font configure} - так найдёшь (я надеюсь) нужные слова.
· original author: den73
Ctrl-стрелка-вверх - вынуть предыдущий пункт из истории. Стрелка вверх - пойти вверх.
В tkcon изначально было по-другому: Стерлка вверх - вынуть пункт из истории. Но из-за того, о чём я сказал выше, я поменял. Я даже не подумал, что это из емакса какое-то Зло просочилось :)
· original author: den73
Если ты что-то поменял, кроме головного файла clcon.tcl, то необязательно перезапускать среду. Скорее всего достаточно:
1. Сохранить файл.
2. В редакторе или консоли Menu/File/Reload some of IDE sources
3. Перезапустить этот инструмент.
Хотя именно для шрифтов это может не сработать - весьма вероятно, что при повторном создании шрифта выпадет исключение, которое молча проглотится, и шрифт не будет пересоздан.
Не знаю.
· original author: Mna
при очередном перезапуске такое пришло такое и оно не нработало, пришлось перезапускать клиента - стало ОК
(mn) 7 %
ProcessAsyncEvent: skipping async event from lisp: :reader-error s(:emacs-rex\ (swank-repl:create-repl\ nil\ :coding-system\ \"utf-8-unix\")\ \"COMMON-LISP-USER\"\ t\ 3) sPackage\ SWANK-REPL\ does\ not\ exist.\n\n\ \ Line:\ 1,\ Column:\ 34,\ File-Position:\ 34\n\n\ \ Stream:\ #<SB-IMPL::STRING-INPUT-STREAM\ \{1006F7ADD3\}>
7 CL-UsER>
---
пытаюсь применить .apr con:
9 CL-UsER>.apr con
tcl_unknown failed to help us with ::clconcmd::apr con
invalid command name "::clconcmd::apr"
10 CL-UsER>
Когда говоришь про консоль
"можешь написать в консоли .apr con Enter, у тебя всё это выплюнется в консоль и
ты можешь стрелочками подняться и на выбранном нажать Alt-. для попадания в исходник. "
 -- консоль - clcon-овское окно имеется ввиду я правильно понял?
· original author: den73
Консоль - да, clcon-овское окно с REPL-ом.
· original author: den73
Вообще ты demo tour прошёл?
· original author: den73
Ты запускал SBCL не из-под EMACS? Я в Linux до позавчера сидел плотно в емаксе. Сейчас в общем-то я без него уже обхожусь, но традиционно запускаю Емакс, в нём команда slime. Она там довольно хитро инициализирует SLIME. Под Windows я написал скрипт инициализации, который решает эти вопросы, а для Linux могут быть ещё какие-то напряги. Но в целом можно отдельно перезапускать клиента и я замечал, что это работает примерно в 80% случаев. В остальных 20% отваливается что-нибудь в редакторе (например, подсветка синтаксиса) и тогда надо отовсюду выйти и всё запустить заново. А если ты только хочешь поправить шрифты, то ты можешь вообще запускаться без сервера, правда .fics не будет работать - он на лиспе написан.
· original author: Mna
Настройка фонтов работает:
~/.quicklisp/local-projects/clcon $ /home/tcltk86/bin/wish clcon.tcl -font "Serif 11"
попробовал фонты Courier Arial и тп
Демо тур? а, ок попробую пройти
· original author: Mna
ХОрошо бы еще серый фон на белый заменить совсем здорово будет. ..а то tclTk выпирает...
· original author: den73
Только что новый залил.
· original author: den73
В INSTALL.md ошибка в фичах - отключена раскраска. Ща залью новый
· original author: Mna
я думал это ты так про исходники и это был тонкий намек что стоит с транка брать и обновился со стабильной 0.2.6  на транк версию исходников ))
· original author: Mna
по демо-туру прошел пока до "Switching between windows" не работало только .apr и .tapr
18 CL-UsER>.apr -lookup-
tcl_unknown failed to help us with ::clconcmd::apr -lookup-
invalid command name "::clconcmd::apr"
19 CL-UsER>.tapr cap
tcl_unknown failed to help us with ::clconcmd::tapr cap
invalid command name "::clconcmd::tapr"
20 CL-UsER>
· original author: Mna
Ctrl-F9 - не работает: Error: ## No known proc CL-UsER>::snit::Capitalize
## No known proc CL-UsER>::snit::Capitalize
    while executing
"dump proc CL-UsER>::snit::Capitalize"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 {dump proc CL-UsER>::snit::Capitalize}"
    invoked from within
"interp eval $slave uplevel \#0 $args"
    (procedure "::tkcon::InterpEval" line 11)
    invoked from within
"Slave $app $args"
    (procedure "::tkcon::EvalOther" line 3)
    invoked from within
"::tkcon::EvalOther {} slave dump proc [list $word]"
    (procedure "LoadContentsAndUpdateRecent" line 4)
    invoked from within
"LoadContentsAndUpdateRecent $w $word $opts $tail"
    (procedure "FindOrMakeEditorWindow" line 29)
    invoked from within
"FindOrMakeEditorWindow $word $opts $tail"
    (procedure "::edt::edit" line 12)
    invoked from within
"::edt::edit -type proc -- $QualifiedName"
    (procedure "::record_definition::EditProcedure" line 8)
    invoked from within
"::record_definition::EditProcedure $str"
    (procedure "::tkcon::TclFindDefinition" line 6)
    invoked from within
"::tkcon::TclFindDefinition .tab1"
    (command bound to event)
====
.edit не работает:
21 CL-UsER>.edit /s2/clcon/test/error-browser-sample-file.lisp
tcl_unknown failed to help us with ::clconcmd::edit /s2/clcon/test/error-browser-sample-file.lisp
invalid command name "::clconcmd::edit"
что это за tcl_unknown везде не работает,  в нем все дело
· original author: Mna
упс. фонты нормальные, а в списках в warning-ах error-ах -- ненормально большие снова
---
Компиляция :
Alt-F7/Alt-F8 не работают - не реагирует на них, только курсор превращается в ладонь и обратно в стрелку
---
debugger stepper работают...
ок остальное потом посмотрю
---
.help дает только :
29 CL-UsER>.help
insp* ed tcsoh help history bufferlist erbr o
apr-tapr нету
---
List declarations in current file
"Show current file declarations" from the Edit menu of Editor
такого в меню Edit  нету а на F12 не реагирует.
может уже докупентация устарела как с .edit (?)
*конец сеанса тестинга
*конец тест-репорта
· original author: den73
Есть некоторая неразбериха - на "сайте" ссылки на транк (как это будет по-Русски?)
Чтобы читать доку к релизу, нужно обновиться к этому релизу и читать доки не в сети, а локальные.
На главной странице есть об этом стоит предупреждение. Хотя, конечно, я и не предпологал, что его кто-то будет читать :)
И в самом demo tour написано гигантскими буквами:

Clcon demo tour - online version is for trunk, file release version is in the release

Надпись не совсем внятная, но должна была насторожить :)
Все файлы "с сайта" - на самом деле ссылки на транк репозитория. Видимо, надо просто вместо транка сослаться на версии с тегом последнего релиза и всё будет тогда в порядке:
документация будет соответствовать последнему релизу. Только сейчас догадался... И к тому ещё в каждом документе писать релиз (хотя это много труда, документов-то немало...).
В общем теперь текущий релиз 3.0, в нём всё это работает - обновись и будет тебе счастье :)
Главное - посмотри на фичи в инсталляторе, там была отключена раскраска. Чтобы она снова заработала, нужно теперь стереть все фаслы.
Не знаю, кто как это делает, а я стираю их специальным shell скриптом.