настройка slime в emacs

я в процессе настройки slime для emacs. До сих пор я читал об основных функциях common lisp, таких как C-c C-q, который вызывает команду slime-close-parens-at-point, который помещает правильное количество родителей, где ваша мышь. Другая команда, которая казалась классной, была вызвана C-c C-c и он передаст код, который вы редактируете в буфере REPL, и "скомпилирует" его.

почему эти команды не работают для меня?

во всяком случае, у меня есть скачал slime via M-x list-packages и, кажется, не имеют этой функции (C-h w и затем любая из этих команд говорит мне, что эти команды действительно существуют). Итак, я видел кучу других расширений slime, таких как slime-repl', 'slime-fuzzy' and 'hippie-expand-slime'. So I again usedM-x list-packages и скачал их.

до сих пор у меня не было этих команд. Вот содержание моего файла emacs, относящегося к slime:

;;;Common Lisp and Slime                                                                                                                                
(add-to-list 'load-path "/home/s2s2/.emacs.d/elpa/slime-20130626.1151")
(add-to-list 'load-path "/home/s2s2/.emacs.d/elpa/slime-repl-201000404")
(add-to-list 'load-path "/home/s2s2/.emacs.d/elpa/hippie-expand-slime-20130226.1656")
(add-to-list 'load-path "/home/s2s2/.emacs.d/elpa/slime-fuzzy-20100404")

(require 'slime)
(setq slime-lisp-implementations
     `((sbcl ("/usr/bin/sbcl"))
       (ecl ("/usr/bin/ecl"))
       (clisp ("/usr/bin/clisp" "-q -I"))))

(require 'slime-repl)
(require 'slime-fuzzy)
(require 'hippie-expand-slime)

когда я выполнить M-x slime я получаю следующее сообщение в inferior-lisp буфер, где я могу выполните код Common lisp (однако, не должно ли это быть slime-repl так как я требовал?):

STYLE-WARNING: redefining EMACS-INSPECT (#<BUILT-IN-CLASS T>) in DEFMETHOD
STYLE-WARNING:
   Implicitly creating new generic function STREAM-READ-CHAR-WILL-HANG-P.
WARNING: These Swank interfaces are unimplemented:
 (DISASSEMBLE-FRAME SLDB-BREAK-AT-START SLDB-BREAK-ON-RETURN)
;; Swank started at port: 46533.

тут slime-error буфер создается с содержимым:

Invalid protocol message:
Symbol "CREATE-REPL" not found in the SWANK package.

  Line: 1, Column: 28, File-Position: 28

  Stream: #<SB-IMPL::STRING-INPUT-STREAM {10056B9C33}>

(:emacs-rex (swank:create-repl nil) "COMMON-LISP-USER" t 5)
  1. как я должен изменить свой файл emacs, чтобы дать мне функциональность этих команд? В моем файле emacs я не загружаю необходимые файлы? Нужно ли устанавливать дополнительный пакет?

Если вам нужна больше информации, то дайте мне знать! Вся помощь-это много оценили!

23
задан CodeKingPlusPlus
11.01.2023 15:16 Количество просмотров материала 2596
Распечатать страницу

1 ответ

во-первых: на самом деле не рекомендуется добавлять каталоги ELPA в путь загрузки вручную, как вы это сделали; если вы когда-нибудь обновите эти пакеты через ELPA, новые версии будут в разных каталогах, и вам придется пересмотреть эту часть кода инициализации, чтобы загрузить эти версии вместо этого. По принципу, что лучше всего автоматизировать как можно больше, вам лучше явно инициализировать менеджер пакетов, который автоматически добавит все ваши установленные пакеты в путь загрузки, а не ждать его инициализации после init, как это по умолчанию; см ответ как это сделано.

теперь, тогда: я не уверен, где я получил эту строфу кода инициализации для слизи, но он никогда не подводил меня еще:

(add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp/slime"))
(require 'slime)
(add-hook 'lisp-mode-hook (lambda () (slime-mode t)))
(add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t)))
(setq inferior-lisp-program "sbcl")
(slime-setup '(slime-fancy slime-asdf))

тем не менее, я использую только SBC, и я вижу, что вы используете несколько реализаций. Вероятно, наилучший способ изменить этот код инициализации для вашего случая будет что-то вроде этого:

(require 'slime)
(add-hook 'lisp-mode-hook (lambda () (slime-mode t)))
(add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t)))
(setq slime-lisp-implementations
  `((sbcl ("/usr/bin/sbcl"))
   (ecl ("/usr/bin/ecl"))
   (clisp ("/usr/bin/clisp" "-q -I"))))
(slime-setup '(slime-fancy slime-asdf hippie-expand-slime))

С вы уже инициализировали менеджер пакетов в моих предыдущих комментариях, нет необходимости явно добавлять что-либо в путь загрузки; так как вы используете несколько Лиспов, мы заменим (setq inferior-lisp-program "...") Как хорошо.

С этим на месте,M-x slime будет ссылаться на SBCL и дать вам РЕПЛ, и т. д. в то время как M-- M-x slime запросит, какую реализацию Lisp вызывать.

0
отвечен Aaron Miller 2023-01-12 23:04

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх