Согласно руководству в Интернете, мы можем искать в HyperSpec символ «формат» в emacs, набрав Cc Cd h, однако я просто не могу пусть это работает, emacs просто подсказывает, что для символа не будет завершения. Может ли кто-нибудь справиться с этим? заранее спасибо!не может найти какой-либо символ в общем lisp в emacs с slime
ответ
Действительно ли вы используете режим Slime REPL? Иногда, когда вы запускаете Slime без какой-либо конфигурации, вы не получаете REPL-режим, и вместо этого вы будете сидеть в буфере *inferior-lisp*
.
Прежде всего, проверьте, что такое заголовок буфера. Если это *inferior-lisp*
, это неверно. Он должен читать *slime-repl sbcl*
(где sbcl ссылается на реализацию CL, которую вы используете).
Если это так, то вам нужно убедиться, что вы включили слизь-фантазию в вашем файле инициализации Emacs. Это то, что у меня есть:
(defun init-slime-configuration()
(slime-setup '(slime-fancy slime-fuzzy))
(setq slime-load-failed-fasl 'never)
(define-key slime-repl-mode-map (kbd "C-<tab>") 'slime-fuzzy-complete-symbol)
(define-key slime-mode-map (kbd "C-<tab>") 'slime-fuzzy-complete-symbol))
(add-hook 'slime-load-hook 'init-slime-configuration)
Это также позволяет использовать C-TAB для нечеткого расширения.
Я уверен, что он читает * slime-repl sbcl * – user1870199
Я столкнулся с этой проблемой после переключения с версии SLIME, установленной с помощью Quicklisp (версия 2.9), на версию, установленную с MELPA (версия 20141010.1357, как зависимость переменного тока).
Использование SLIME из Quicklisp работал хорошо с моей локальной копии HyperSpec, используя настройки:
(require 'slime-autoloads)
(add-to-list 'slime-contribs 'slime-fancy)
(setq slime-lisp-implementations
'((ccl ("ccl"))
(clisp ("clisp"))
(cmucl ("cmucl"))
(ecl ("ecl"))
(sbcl ("sbcl"))))
(setq slime-default-lisp 'sbcl)
(setq common-lisp-hyperspec-root "file:/usr/share/doc/HyperSpec/")
(setq common-lisp-hyperspec-symbol-table "file:/usr/share/doc/HyperSpec/Data/Map_Sym.txt")
я тогда полностью удален и заново Quicklisp, затем установленный AC-муть от MELPA (без переустановки SLIME!) используя диспетчер пакетов Emacs.
Случайно я случайно заметил, что когда я попытался найти документацию в HyperSpec, Emacs открыл скрытый буфер с пустым файлом с именем «Map_Sym.txt» в нем.
Глядя на полное имя этого файла, используя C-h v buffer-file-name [RET]
, выяснилось, что он установлен в «/home/miki/file:/usr/share/doc/HyperSpec/Data/Map_Sym.txt».
В качестве эксперимента, я попытался удалить «файл: /» из двух последних строках мои настройки, чтобы сделать их следующим образом:
(setq common-lisp-hyperspec-root "/usr/share/doc/HyperSpec/")
(setq common-lisp-hyperspec-symbol-table "/usr/share/doc/HyperSpec/Data/Map_Sym.txt")
Это, кажется, решен вопрос. Почему это работает, я не знаю (он отличается от документации). Может быть, ошибка или недокументированное изменение?
У вас есть слизь, установленная и загруженная? Каков результат выполнения 'M-x hyperspec-lookup'? –
он по-прежнему печатает «нет совпадения» после того, как я нажимаю Enter :-( – user1870199
Каков результат 'Ch v common-lisp-hyperspec-root'? Вероятно, вам нужно положить что-то вроде' (setq common-lisp-hyperspec-root "file: /// usr/share/doc/hyperspec /") 'в вашем .emacsrc –