Регистрация | Войти
Lisp — программируемый язык программирования
RSS
есть ли туториал/скринкаст по SLIME
dfr - 09.02.2011 19:58, Сообщений - 4
  Приветствую!
  Изучаю в данный момент CL, но для борьбы со скобками чую нужен специальный редактор. Я привык работать в vim, но писать на lisp там
не очень удобно.
  Решил тут попробовать SLIME, благо устанавливается он под линуксом легко и выглядит многообещающе, у него есть хелп, которого явно не достаточно чтобы начать работать.
Emacs по дефолту это конечно кошмар, но к счастью есть emacs lisp и реально крутая шутка - vimpulse, благодаря которой все становится очень похоже на vim и даже
можно работать.
   Но эта слизь... в общем непонятно как работать, например нету кейбиндинга для evalueate-buffer, а евалить каждую функцию по отдельности
оказалось не удобно, далее почему-то в окне REPL курсорные клавиши не навигируют по хистори, а позволяют путешествовать по окну, что как-то странно тоже и не понятно зачем так сделано. Есть tab-completion, но он все время выводит кучу вариантов и навигироваться по ним опять же неудобно, в итоге пишешь все вручную по буквам как старые добрые времена, когда люди только слезли с деревьев перфокарт.
  Окна! Непонятно как их укротить - то они вылезают на весь экран, то происходит spit screen, проблема их  переключать и закрывать т.к. биндинги vimpulse при переклюбчении перестают работать, вобщем какое-то сплошное неудобство. Можно ли сделать так как например в eclipse, когда внизу маленькое окошко с repl, а сверху исходник
  Не покидает чувство что я что-то не так делаю или что-то недопонимаю. Может кто знает нормальный туториал где все по шагам показано как и что нажимать ?
[#]
1) Скорее всего придется переучиваться на емаксовую раскладку, чтобы
использовать всю мощь емакса + проще будет использовать SLIME manual.

2) Перейти на Quicklisp и ставить все лисп библиотеки, включая SLIME, с его
помощью.


Лучше начать все с чистого листа:

1) Удалить все поставленые библиотеки

2) Удалить/закоментировать все в фаиле конфигурации используемой реализации
(например, в $HOME/.sbclrc для SBCL)

3) поставить Quicklisp (http://www.quicklisp.org/beta/):
 
wget http://beta.quicklisp.org/quicklisp.lisp
sbcl --load quicklisp.lisp

(quicklisp-quickstart:install)
(ql:add-to-init-file)

4) перезапустить лисп (Quicklisp загрузится автоматически) и поставить SLIME:

(ql:quickload "quicklisp-slime-helper")

5) поправить SLIME конфигурацию в $HOME/.emacs (моя конфигурация):

(setq auto-mode-alist
      (append '(("\\.lisp$"   . lisp-mode)
                ("\\.lsp$"    . lisp-mode)
                ("\\.cl$"     . lisp-mode)
                ("\\.asd$"    . lisp-mode)
                ("\\.system$" . lisp-mode)
)

              auto-mode-alist
)
)

(add-hook 'lisp-mode-hook
          (lambda ()
            (setq lisp-indent-function 'common-lisp-indent-function)
            (setq show-trailing-whitespace t)
)
)


(load (expand-file-name "~/quicklisp/slime-helper.el"))
(require 'slime)
(slime-setup '(slime-fancy slime-indentation slime-tramp slime-asdf slime-sprof))
(setq slime-net-coding-system 'utf-8-unix)
(setq slime-default-lisp 'sbcl)
(setq slime-lisp-implementations
      `((sbcl ("/home/user/bin/sbcl") :coding-system utf-8-unix)
        (ccl  ("/home/user/bin/ccl") :coding-system utf-8-unix)
        (ecl  ("/home/user/bin/ecl") :coding-system utf-8-unix)
        (abcl ("/home/user/bin/abcl") :coding-system utf-8-unix)
        (lw   ("/home/user/bin/lw") :coding-system utf-8-unix)
        (alisp ("/home/user/bin/alisp") :coding-system utf-8-unix)
)
)

(eval-after-load 'slime
  '(progn
     (setq common-lisp-hyperspec-root "file:///home/user/Documents/Programming/Lisp/Common Lisp/HyperSpec/")
     (setq slime-scratch-file "~/.emacs.d/tmp/scratch.lisp")
     (setq slime-edit-definition-fallback-function 'find-tag)
     (setq slime-complete-symbol*-fancy t)
     (setq slime-complete-symbol-function 'slime-fuzzy-complete-symbol)
     (setq slime-when-complete-filename-expand t)
     (setq slime-truncate-lines nil)
     (setq slime-autodoc-use-multiline-p t)
     (slime-autodoc-mode)
)
)

(add-hook 'lisp-mode-hook
          (lambda ()
            (setq slime-use-autodoc-mode t)
)
)

(defun my/customized-lisp-keyboard ()
  (define-key slime-repl-mode-map (kbd "C-c ;") 'slime-insert-balanced-comments)
  (local-set-key [C-tab] 'slime-fuzzy-complete-symbol)
  (local-set-key [return] 'newline-and-indent)
)

(add-hook 'lisp-mode-hook 'my/customized-lisp-keyboard)

6) запустить SLIME в емаксе. PROFIT!
lithp - 09.02.2011 21:49
[#] Ответ на комментарий от lithp 09.02.2011 21:49
Спасибо за развернутый ответ, правда это не совсем то что я хотел узнать, это скорее руководство по установке.
Но установить это только начало, больше меня волнует как же начать всем этим счастьем пользоваться. Пока это представляется очень неудобным.
Мануал SLIME к сожалению тоже не дает такой информации, там только описываются в общих чертах команды и клавиатурные привязки.
dfr - 10.02.2011 12:20
[#] Ответ на комментарий от dfr 10.02.2011 12:20
Можешь посмотреть здесь, если с английским проблем нет.

http://video.google.com/videoplay?docid=-2140275496971874400#
lithp - 10.02.2011 13:11
[#] Ответ на комментарий от lithp 10.02.2011 13:11
О да, это видео жжот :) Текст там явно недостаточно мутный, некоторые символы даже можно разобрать!
dfr - 10.02.2011 16:01
@2009-2013 lisper.ru