Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/202: Рейтинг темы: голосов - 202, средняя оценка - 4.80
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038

Различные IDE для диалектов лиспа

20.04.2014, 21:26. Показов 43864. Ответов 125
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я работаю с лиспом (развлекаюсь, конечно, а не работаю) в vim + slimv. Буду нести эту связку в массы. Сразу оговариваюсь, что я не эксперт по slimv-у, поэтому что-то могу делать неоптимально и могу не знать многих фич. Однако и так он устанавливает достаточно удобный диалог с лиспом для того, чтобы не разменивать Редактор на всякую ерунду.

Slimv - это плагин, который имитирует функциональность Slime. В частности, он устанавливает диалог с работающим лисповым процессом. Написан на vimlang и python (та часть, которая отвечает за общение процессов через сокеты).

Да, я буду писать линуксоцентрично. Вроде бы slimv работает и на Windows, но пользователи оной ОС пусть сами разбираются, как его ставить. Также я буду писать CL-центрично, хотя slimv поддерживает и другие диалекты.

Я буду предполагать общее знакомство читателя с vim-ом, но нубовопросы по виму задавать можно и нужно.

Начать с установки.

Требования: vim с python и python.

Установка плагина тривиальна. Если есть pathogen, просто распаковать свежий slimv в ~/.vim/bundle. Если нет pathogen-а, сначала установить его по инструкции и см. п. 1.

Ещё у меня есть файл ~/.vim/ftplugin/lisp.vim следующего содержания:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
set lw-=if
set lw+=set-macro-character
set lw+=set-dispatch-macro-character
set lw+=block
set lw+=defsetf
 
inoremap <buffer> <C-\> lambda 
nnoremap <buffer> <Space> <C-w>w
 
nmap <buffer><silent> == :call Scheme_indent_top_sexp()<cr>
 
let g:slimv_browser_cmd = "dillo"
 
" Indent a toplevel sexp.
fun! Scheme_indent_top_sexp()
    let pos = getpos('.')
    silent! exec "normal! 99[(=%"
    call setpos('.', pos)
endfun
Что вам отсюда может быть нужно? Сначала корректируется параметр lispwords - он перечисляет список слов, которые требуют "лисповый" стиль индентации. Из числа lispwords исключаем if, чтобы его индентация соответствовала требованиям http://dept-info.labri.u-borde... ation.html. Затем добавляем несколько лиспослов, которые виму почему-то неизвестны.

Затем пара мапов: в режиме вставки C-\ даёт лямбду (баловство) и более важное: в нормальном режиме пробел переключает между окнами. Удобно прыгать из файла в репл и обратно.

Дальше == перемапливается на функцию, индентирующую с-выражение верхнего уровня, содержащее курсор. Это полезнее, чем дефолт (индентовать строку). Функцию откуда-то скопипастил вместе с названием.

Ну и в качестве браузера, в котором открывается HyperSpec, я себе назначил dillo.
2
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.04.2014, 21:26
Ответы с готовыми решениями:

Возможности и ограничения диалектов Лиспа
Предлагаю обсудить возможности и ограничения диалектов Лиспа.

Существуют ли IDE для лиспа под Ubuntu?
Добрый день! Посоветуйте, пожалуйста, какую-нибудь IDE для лиспа под ubuntu, если такая имеется. Добавлено через 2 часа 13 минут Или...

Библиотека для лиспа
Здравствуйте. Если можно, подскажите ресурс с библиотекой lib-k.lsp

125
331 / 200 / 9
Регистрация: 12.05.2015
Сообщений: 334
24.05.2015, 11:37
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Lambdik Посмотреть сообщение
Как в Linux выгдядит путь для браузера установленного по умолчанию?
Интересуют firefox, opera и chrome.
Я бы усомнился в наличии общепризнаного "умолчального" для линукса
Старая школа препочтет $BROWSER и тебе соответственно надо
Lisp
1
(uiop/os:getenv "BROWSER")
.
По условно новым freedesktop-ным лучше "ход конем"
Code
1
xdg-open http://ya.ru
Правильно установленый фокс и прочие должны вызыватьcя просто по имени без пути.

Добавлено через 6 минут
Цитата Сообщение от korvin_ Посмотреть сообщение
Bash
1
$ xdg-settings get default-web-browser
А вот это будет работать только в попсовых KDE и Gnome. И само по себе может и не иметь осмысленого значения.
2
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
24.05.2015, 11:42
Хорошо, тогда ещё вопрос.
Я с помощью библиотеки cl-fad проверяю наличие файла по указанному пути.
Lisp
1
(file-exists-p "C:/Program Files (x86)/Mozilla Firefox/firefox.exe")
А как теперь для Linux, будет выглядеть этот вызов?
1
331 / 200 / 9
Регистрация: 12.05.2015
Сообщений: 334
24.05.2015, 11:56
Цитата Сообщение от Lambdik Посмотреть сообщение
А как теперь для Linux, будет выглядеть этот вызов?
Bash
1
2
 [user ~]$ which firefox
/usr/bin/firefox
2
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
24.05.2015, 12:16
Хм. Что-то я растерялся.
У меня условие проверки и запуск, если есть, выглядит так.
Lisp
1
2
3
(if (file-exists-p "C:/Program Files /Mozilla Firefox/firefox.exe")
    (uiop:run-program '("C:/Program Files /Mozilla Firefox/firefox.exe" "www.target"))
)
Lisp
1
2
3
4
5
А в Linux это как будет выглядеть?
 
(if [user ~]$ which firefox /usr/bin/firefox   ; как здесь правильно?
    (uiop/os:getenv "firefox")
)
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
24.05.2015, 13:07
Цитата Сообщение от Lambdik Посмотреть сообщение
У меня условие проверки и запуск, если есть, выглядит так.
А при чём тут дефолтный веб-браузер, если ты проверяешь наличие ФФ и запускаешь его?
1
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
24.05.2015, 13:11
Цитата Сообщение от korvin_ Посмотреть сообщение
А при чём тут дефолтный веб-браузер, если ты проверяешь наличие ФФ и запускаешь его?
Я наверное неправильно выразился. Меня интересует точный путь к браузеру. Для проверки. То есть если есть firefox, значит открываем его, иначе если chrome, то его...

Цель запустить веб-страницу в любом браузере, который установлен.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
24.05.2015, 13:23
Цитата Сообщение от Lambdik Посмотреть сообщение
Цель запустить веб-страницу в любом браузере, который установлен.
Кх-м... Так тебе нужно просто вызвать xdg-open, как сказал antares0. Без всяких проверок, система сама разберётся, чем открыть страницу, у тебя не должно быть это жёстко зашито. Например, если ты первым проверяешь наличие FF, находишь его и запускаешь, а у пользователя браузером по-умолчанию выбран Crome, ему это не понравится, ему, во-первых, придётся выяснять в чём причина такого поведения, во-вторых он ничего не сможет с этим поделать. Более того, у него могут отсутствовать все браузеры из твоего списка.
2
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
24.05.2015, 13:46
Цитата Сообщение от korvin_ Посмотреть сообщение
нужно просто вызвать xdg-open
Ну хорошо, я не против. А как это будет на лиспе выглядеть?

Добавлено через 8 минут
И раз так, то в Windows такое не пройдёт, наверное. Потому что для запуска нужен полный путь, и тогда приходится задать поиск, а потом запуск, это будет очень долго. Пока программа перероет все каталоги и наткнётся на нужный файл.
0
331 / 200 / 9
Регистрация: 12.05.2015
Сообщений: 334
24.05.2015, 14:41
Цитата Сообщение от Lambdik Посмотреть сообщение
Ну хорошо, я не против. А как это будет на лиспе выглядеть?
Lisp
1
(run-program "xdg-open" "http://ya.ru")
И раз так, то в Windows такое не пройдёт
Я вместе с гуглом преполагаю что для винды нужно вместо "xdg-open" писать "rundll32.exe" "url.dll,FileProtocolHandler". Но мне не на чем проверить. Хотя такие вопросы нужно обсуждать в прфильном-виндовом разделе. Они напрямую к лиспу не относятся.
2
Заблокирован
24.05.2015, 20:14
ребяты, вы не заблудились? это тема вроде как про иде лиспа, а не про библиотеки и программирование...
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,769
Записей в блоге: 14
25.05.2015, 11:14
ur_naz, может выделить сообщения, к IDE не относящиеся, в отдельную тему?
0
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
25.05.2015, 17:12
Мне кажется, что здесь не так много обсуждают библиотеки, чтобы их выделять. Я уже всё выяснил, на данный момент. В следующий раз создам отдельную тему, если что. Хотя считаю, что библиотеки и IDE тесно связаны. Так как не всё ко всему подходит, и одно без другого не существует.
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
29.05.2015, 12:03
Цитата Сообщение от Lambdik Посмотреть сообщение
И раз так, то в Windows такое не пройдёт, наверное. Потому что для запуска нужен полный путь
Его можно дампнуть из реестра. Если конечно в этом есть необходимость. cl + ffi + msdn
3
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
16.08.2015, 12:43
Я пилю IDE для лиспа. Перепробовал несколько подходов, на данный момент выбран вариант переделки tkcon.
Уже есть темы на ЛОРе и на лиспере.ру. Я на обоих формах den73. Репозиторий тут: https://bitbucket.org/budden/clcon

На данный момент есть REPL, который умеет вычислять некоторые выражения и печатать результат. Также есть история команд. Вроде это немного. Но хорошо то, что связь с лиспом происходит через SWANK, который может (почти) всё. Т.е., остаётся лишь создать интерфейс к его возможностям - это не так уж трудно.
2
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
01.09.2015, 02:55
Процесс идёт. Работаю над отладчиком. Вот что есть на данный момент:
2
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
01.09.2015, 03:03
Другие скриншоты в Вики
А вот полный список реализованных на данный момент возможностей:

- REPL с историей и подстановкой истории по номеру
- Дебаггер (показывает ошибку, печатает стек, вызывает "перезапуски" (restarts)
- Автодополнение идентификаторов и имён файлов
- Переход к определению идентификатора. Если есть несколько определений, предлагается несколько вариантов
- Инспектор (как в SLIME)
- Список ошибок компиляции с просмотром детальной информации по каждой ошибке
- В редакторе можно открывать много файлов, есть список окон для переключения (табов пока нет)
- Возможность вызова команд IDE из REPL лиспа (команды среды начинатся с точки, например, .insp* - посмотреть инспектором последний результат вычисления)
- Возможность вызова кода на tcl (из REPL, команды tcl начинаются с двух точек)
- Переход между инструментами с помощью сочетаний клавиш

Большинство возможностей реализованы в урезанном виде, по сравнению со SLIME, но тем не менее почти все они полезны.
3
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
20.10.2015, 21:41
Долго ничего не писал, но проект развивается.

Выложил файловый релиз среды разработки для Common Lisp clcon версии 0.2.6 под Windows.

Теперь установка clcon под Windows весьма проста: нужно сначала установить ActiveTcl, а затем скачать и распаковать архив clcon. Установка под Linux также возможна, но для этого нужно скачивать репозиторий и устанавливать зависимости.

Программа всё ещё в стадии "альфа" и предназначена скорее для ознакомления и для участия в разработке, чем для реальной работы. Хотя с каждой неделей я провожу в ней всё большую долю времени. Набор инструментов уже по большей части соответствует тому, что должно быть в IDE:

- редактор
- отладчик с просмотром стека
- пошаговая "ходилка"
- инспектор
- просмотр ошибок компиляции
- поиск в файлах

См. инструкции по установке

А вот одна картиночка - баловался с vtk.
https://bitbucket.org/repo/E4a... sp-vtk.png
3
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
22.10.2015, 22:52
budden, о, привет, PR-кампанию решил устроить? =)
0
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
24.10.2015, 00:31
Конечно, а как без этого? В наше время всего навалом. Даже то, что даром раздаёшь, нужно рекламировать.
1
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
25.12.2015, 20:37
Цитата Сообщение от budden Посмотреть сообщение
В наше время
Ничего не было кроме васика и доса. Сегодня уже далеко не наше время.

Добавлено через 1 минуту
Хотя был еще фортран, PL/1 и приглашение в Пиндоссию =))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.12.2015, 20:37

Библиотека для доступа к win32 из лиспа
Добрый день! Такая библиотека ищется (не зависящая от реализации Common Lisp. Пока нашёл только вот это: ...

Подскажите программное обеспечение для лиспа
С лиспом вообще не знакома , но есть написанная программа ХХХ.lsp , диалог , программа типа доктор . Подскажите чем ее можно открыть...

obj\Debug\IDE.o||In function `Z11OpenProjectv':| C:\tsserver\Projects\cpp\codeblocks\MyComp\IDE\IDE\IDE.cpp|2 36|undefined reference to `GetOpenFileNam
obj\Debug\IDE.o||In function `Z11OpenProjectv':| C:\tsserver\Projects\cpp\codeblocks\MyComp\IDE\IDE\IDE.cpp|236|undefined reference to...

Для функций Лиспа найти такие же по действию и принимаемым аргументам в Erlang
Люди нужна помощь. Меня моя девушка помочь с лабой, а я, если честно, в функциональных языках не силен. Задание такое нужно для функций...

каким образом пожна подключить на мать с 2 IDE выходами и 2 SATA 3 жестких диска IDE и 2 CD-ROM IDE?
Доброго вам времени суток Можете подсказать каким образом пожна подключить на мать с 2 IDE выходами и 2 SATA 3 жестких диска IDE и 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru