LINUX.ORG.RU

Выбор IDE

 , ,


1

5

Доброго времени суток, данный вопрос продолжения вот этого треда. Выбор пал на Common Lisp в связи с чем встал вопрос по поводу IDE. Есть что-то достойное и более современное, нежели Emacs+SLIME? Может быть подскажете какой-нибудь плагин к Eclipse/NetBeans/etc. и его настройку под какую реализацию CL он заточек? Заранее благодарю!



Последнее исправление: i_overdose (всего исправлений: 1)

Только коммерческие, AFAIK, LispWorks и Allegro CL.

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

Если честно, то это очень странно. Даже для того же haskell есть leksah. А для CL за два дня смог нагуглить пару мертвых плагинов под Eclipse да Lisp IDE под оффтопик (которой до полноценной IDE как ReactOS до возможности работать на ней).

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

Если честно, то это очень странно.

Что странного? Есть emacs. Вдаваться в общие сексуальные корни лиспа и емакса не хочется.

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

Странно, что никто не захотел пользоваться наработками eclipse, IDEA, netbeans, etc. , которые ИМХО более удобны (хотя я могу ооочень ошибаться, только начал пользоваться Emacs+SLiME)

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

Странно, что никто не захотел пользоваться наработками eclipse, IDEA, netbeans, etc. , которые ИМХО более удобны

Спорно. Но это не мое дело, искать корни любви к лиспу и емаксу должны люди с мед. образованием, как минимум.

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

Это да, но, с другой стороны, настраиваешь ты его один раз, а пользуешься постоянно.

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

Активное сообщество крайне небольшое, а слайм уже написан и крайне неплох

vasily_pupkin ★★★★★
()

Использую emacs+slime. Ну и в нагрузку magit с ediff'ом. Больше ничего и не требуется.

Одна беда: с какого-то момента, в режиме останова (дебаггера), пропала возможность смотреть значения переменных и вычислять выражения в стековых кадрах. Может кто подскажет куда смотреть/какую ману читать?

Sectoid ★★★★★
()

я пользую vim + slimv, но это мои личные половые предпочтения.

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

DrRacket.

Racket получше Common Lisp будет.

Похоже, что именно так.

ak372771
()

Есть что-то достойное

Нет.

более современное

Возможно, но зачем?

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

Необходимостью допиливать до состояния «полноценной ide».

это плюс, ибо у каждого свое понимание «полноценной ide».

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

eclipse, IDEA, netbeans, etc. , которые ИМХО более удобны (хотя я могу ооочень ошибаться, только начал пользоваться Emacs+SLiME)

Применительно к CL не прав. Единственное что меня расстраивает в этой связке, это emacs в качестве редактора. Поэтому пользуюсь slimv

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

На сколько я понимаю Scheme более бедный язык, чем Common Lisp

Несколько бедный сколко разрознеый по реализациям.

Racket - реализация Scheme.

Там несколько более сложные родственные связи.

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

Racket - реализация Scheme. Или я не прав?

нет, это самостоятельный язык

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

Грузишь auto-complete , highlight-parentheses , paredit , slime , HyperSpec , asdf-browser , ac-slime , emacs-w3m (Заработает скорее та которая из CSV).

HyperSpec сваливаешь в ~/HyperSpec/, всё остальное в ~/.emacs.d/site-lisp. Естественно ставишь ымакс, w3m и реализацию (sbcl, clisp, ccl).

Пишешь в свой .emacs это:

(global-set-key "\C-c\;" 'comment-or-uncomment-region)
(global-set-key "\C-x\p" 'previous-multiframe-window)
(global-set-key "\C-\M-j" 'join-line)


(add-to-list 'load-path "~/.emacs.d/site-lisp")

(defadvice kill-region (before unix-werase activate compile)
  "When called interactively with no active region, delete a single word
    backwards instead."
  (interactive
   (if mark-active (list (region-beginning)
			 (region-end))
     (list (save-excursion (backward-word 1) 
			   (point)) 
	   (point)))))

;;; {{{ auto-complete

(add-to-list 'load-path "~/.emacs.d/site-lisp/auto-complete")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
(setq ac-comphist-file "~/.emacs.d/ac-comphist.dat")
(ac-config-default)

;;; }}}

;;; {{{ w3m-config

(add-to-list 'load-path "~/.emacs.d/site-lisp/w3m")
(require 'w3m-load)

;;; }}}

;;; {{{ highligh-parentheses

(require 'highlight-parentheses)

(define-globalized-minor-mode global-highlight-parentheses-mode highlight-parentheses-mode
  (lambda nil (highlight-parentheses-mode t)))

(global-highlight-parentheses-mode t)

;;; }}}

;;; {{{ paredit-mode

(add-to-list 'load-path "~/.emacs.d/site-lisp/paredit")
(autoload 'paredit-mode "paredit"
  "Minor mode for pseudo-structurally editing Lisp code." t)
;;;(semanticdb-enable-gnu-global-databases 'lisp-mode)

(defun my-paredit-lisp-hook ()
  (paredit-mode +1)
  (nlinum-mode)
  (define-key paredit-mode-map (kbd "C-M-<right>") 'forward-sexp)
  (define-key paredit-mode-map (kbd "C-M-<left>") 'backward-sexp)
  (define-key paredit-mode-map (kbd "C-M-<up>") 'backward-up-list)
  (define-key paredit-mode-map (kbd "C-M-<down>") 'down-list))

(add-hook 'lisp-interaction-mode-hook 'my-paredit-lisp-hook)

;;; }}}

;;; {{{ slime

(add-to-list 'load-path "~/.emacs.d/site-lisp/slime")
(require 'slime)

(slime-setup '(slime-fancy slime-fuzzy slime-asdf))

(setq slime-net-coding-system 'utf-8-unix)
(setq common-lisp-hyperspec-root "~/HyperSpec/")
(defmacro lisp-slime (lisp path &optional coding)
  (let ((funname (intern (format "%s-slime" lisp))))
    `(defun ,funname ()
       (interactive)
       (let ((inferior-lisp-program ,path)
	     (slime-net-coding-system (or ,coding 'utf-8-unix)))
	 (slime)))))

(lisp-slime sbcl "/usr/bin/sbcl")
(lisp-slime ccl "/usr/local/bin/ccl")
(lisp-slime clisp "/usr/bin/clisp -K full")

(require 'hyperspec)

(defun hyperspec-lookup (&optional symbol-name)
 (interactive)
 (let ((browse-url-browser-function 'w3m-browse-url))
   (if symbol-name
       (common-lisp-hyperspec symbol-name)
     (call-interactively 'common-lisp-hyperspec))))

(add-hook 'slime-repl-mode-hook 'my-paredit-lisp-hook)

;; Stop SLIME's REPL from grabbing DEL,
;; which is annoying when backspacing over a '('
(defun override-slime-repl-bindings-with-paredit ()
  (define-key slime-repl-mode-map
    (read-kbd-macro paredit-backward-delete-key)
    nil))

(add-hook 'slime-repl-mode-hook 'override-slime-repl-bindings-with-paredit)

(load-file "~/.emacs.d/site-lisp/asdf-browser/asdf-browser.el")

(define-key slime-mode-map "\C-c\C-a" 'asdf-browser)

;;; }}}

;;; ac-slime

(add-to-list 'load-path "~/.emacs.d/site-lisp/ac-slime")
(require 'ac-slime)

(add-hook 'slime-mode-hook 'set-up-slime-ac)
(add-hook 'slime-repl-mode-hook 'set-up-slime-ac)
(eval-after-load "auto-complete"
  '(add-to-list 'ac-modes 'slime-repl-mode))

(setq ac-use-quick-help nil)

;;; }}}

;;; {{{ lisp-mode

(add-hook 'lisp-mode-hook 'my-paredit-lisp-hook)
(add-to-list 'ac-modes 'lisp-mode)

;;; }}}

Быстрое ознакомление: C-x C-f main.lisp RET C-h m . Глубокое: M-x info-display-manual RET slime RET .

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

Необходимостью допиливать до состояния «полноценной ide».

Как обои на рабочем столе, иконки, размер и тип шрифта по пол дня менять, так это не является проблемой. А настройка рабочей среды вдруг стало проблемой.

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

Да для глубокого ознакомления info должен видеть info файл для SLIME. А реализации должны загружать asdf при инициализации (вроде все кроме clisp это делают автоматически).

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

Да я забыл упомянуть о nlinum-mode. Вообще это как и многое из выше перечисленного ставится el-get, но много чего там нет есть в elpa, который по умолчанию в эмаксе. el-get и elpa сносно сосуществуют друг с другом.

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

сосуществовать-то сосуществуют, но мне и так от пакетных менеджеров не продохнуть(dpkg, quicklisp, elpa, немного gems), так что el-get я решил не использовать

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

А чего el-get? package теперь по умолчанию в 24.1, подключаешь marmalade репозиторий - и практически все пакеты доступны.

unlog1c ★★★
()

Я искал плагин для эклипсы - удобного не нашел. Может быть, ТСу больше повезет :)

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

Это верно.

ТСу можно поискать кое-что в своём дистрибутиве. Например slime, ac-slime, auto-complete, emacs-w3m-cvs есть в AUR. Ещё тебе скорее понадобится ql.

Для всего этого есть готовая сборка Lispbox, но труп уже разлагается.

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

Разве? На сколько я понимаю Scheme более бедный язык, чем Common Lisp, а Racket - реализация Scheme. Или я не прав?

Если под бедностью подразумеваются батарейки, то Racket - это Scheme с большим ящиком батареек и несколькими языками на базе Scheme.

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

подключаешь marmalade репозиторий - и практически все пакеты доступны.

вроде кроме него ещё какой-то недавно появился (не elpa/gnu)

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

melpa?

У меня так, вроде хватает всего:

(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
			 ("marmalade" . "http://marmalade-repo.org/packages")
			 ("melpa" . "http://melpa.milkbox.net/packages/")))
Norgat ★★★★★
()
Ответ на: комментарий от Norgat

1) Yasnipets забыл.

Сам ниасилил... пока.

А зачем если лисперы презирают шаблонное программирование?

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

Я вам не скажу за всю Одессу, но конкретно Eclipse - жрущее тонны памяти и нереально тормозящее Г. Пробовал писать на нем С++/Andoid, в итоге прикрутил к тем же исходникам QtCreator + немного поправил .pro для того, чтобы qmake генерировал .mk файлы.

trex6 ★★★★★
()
Последнее исправление: trex6 (всего исправлений: 1)
Ответ на: комментарий от Norgat

Для скобочек есть paredit.

А сниппетницы не нужны, это только для C++-быдла и прочей мрази,
у которых нормальных макросов нет.

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

Одна беда: с какого-то момента, в режиме останова (дебаггера), пропала возможность смотреть значения переменных и вычислять выражения в стековых кадрах. Может кто подскажет куда смотреть/какую ману читать?

Пакет устанавливать надо в выражении.

mv ★★★★★
()

Скачай LispWorks Personal. Для ознакомления с языком ограничения в Personal мешать не будут, зато там есть гуёвый редактор с приличным гуёвым же дебаггером. Дебаггер реально лучше, чем sldb в slime.

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

emacs + slime чем не устраивает?

Это надо одновременно две вещи примерно одинаковой сложности изучать. Одну вещь изучать проще, чем сразу две.

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

изучить emacs+slime можно за пару дней

Если под «изучить» понимается «запомнить, как отсюда выходить», то может быть. А так, на нормальное освоение с нуля, включая изучение елиспа, нужен где-то год. Нормальное - это когда можешь сам что угодно настроить, диагностировать проблему, дописать хук и т.п.

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