Здравствуйте, Сергей Туленцев, Вы писали:
СТ>Здравствуйте, CrazyPit, Вы писали:
CP>>Да интересная дискуссия, даже зарегился на RSDN, чтоб сюда запостить.
CP>>С Лиспом я знаком года 2-3, с тех пор как плотно начал юзать емакс, но именно CL, ну и схемой, заинтересовался только в конце прошлого года. Сначала прочитал, правда не до конца, первый том "Мир Лиспа", как то мне не очень понравилось и я забил, так что не советую вам её читать, очень скучно плюс только в том, что про Common Lisp это единственная книга на русском. Потом, когда появилась в инете Practical Common Lisp, и я его прочитал, да ещё открыл для себя SLIME, всё стало намного интереснее. Язык ИМХО самый навороченный из всех, и причина этому именно макросы в сочетании с простым представлением программ и данных. Чего стоят те же макросы loop & format.
СТ>Заинтересованный, я полез в инет и добыл: emacs-21.3, slime-1.2.1, Allegro CL 6.2, clisp-2.33.2
СТ>Пытался подружить парочку emacs + slim. Максимум, что мне удалось, это вызов консоли Аллегро по M-x slime. Но, думаю, эффект должен быть немного другой. Не поделишься ли опытом настройки?
Ну вопервых при редактировании лиспа должен стоять slime-mode(M-x slime-mode) у меня это автоматически настроено. Потом лучше чтобы был отключен ILisp, но у тебя он скорее всего не установлен.
Вот часть моих емаксовских конфигов, относящихся к Common Lisp:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LISP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;; Functions ;;;;;;;;;;
(defun se:move-past-close-and-just-one-space ()
"Move past next `)' and ensure just one space after it."
(interactive)
(up-list)
(just-one-space))
(defun mb:unwrap-next-sexp (&optional kill-n-sexps)
"Convert (x ...) to ..."
(interactive "P")
(forward-sexp)
(backward-delete-char 1)
(backward-up-list)
(delete-char 1)
(let ((start-region-to-kill (point)))
(kill-sexp kill-n-sexps)
(down-list)
(delete-region start-region-to-kill (1- (point)))
(backward-up-list))
(lisp-indent-line))
;;;;;;;;;; Common Lisp ;;;;;;;;;;
(add-to-list 'load-path "/home/cp/arc/lisp/slime-cvs/slime")
(require 'slime)
;;;;; Functions ;;;;;
(defun cliki:start-slime ()
(unless (slime-connected-p)
(save-excursion (slime))))
;;;;; SLIME Setup ;;;;;
(slime-setup)
(slime-setup :autodoc t)
(set-variable 'slime-net-coding-system 'iso-latin-1-unix)
;(set-variable inferior-lisp-program "/home/cp/arc/lisp/acl62_trial/alisp")
;(set-variable inferior-lisp-program "clisp")
(setf inferior-lisp-program "lisp")
;;;;; Documentaion ;;;;;
(load "/usr/share/emacs/21.4/site-lisp/ilisp/extra/cltl2.el" )
(setf common-lisp-hyperspec-root "file:/usr/share/doc/hyperspec/")
(setf cltl2-root-url "file:///usr/share/doc/cltl/")
;;;;; Key bindings ;;;;;
(global-set-key "\C-cs" 'slime-selector)
(add-hook 'slime-connected-hook 'slime-ensure-typeout-frame)
(add-hook 'slime-mode-hook
(lambda ()
(define-key slime-mode-map "^C^D^C" 'cltl2-lookup)
(define-key slime-mode-map "^C^R" 'slime-compile-region)
(define-key slime-mode-map "^C^Dc" 'cltl2-lookup)
(define-key slime-mode-map "\333" 'slime-arglist)
(define-key slime-mode-map [(?\()] 'insert-parentheses)
(define-key slime-mode-map [(?\))] 'se:move-past-close-and-just-one-space)
(define-key slime-mode-map [(return)] 'newline-and-indent)
(define-key slime-mode-map "\335" 'move-past-close-and-reindent)
(define-key slime-mode-map [(control ?\=)] (lambda () (interactive) (insert "(")))
(define-key slime-mode-map [(control ?\\)] (lambda () (interactive) (insert ")")))
))
ЗЫ: обязательно прочитай всё доку по SLIME. И ещё поиищи статьи на cliki.net по slime и редактированию лиспа в Emacs