2013-04-03 3 views
1

Согласно руководству в Интернете, мы можем искать в HyperSpec символ «формат» в emacs, набрав Cc Cd h, однако я просто не могу пусть это работает, emacs просто подсказывает, что для символа не будет завершения. Может ли кто-нибудь справиться с этим? заранее спасибо!не может найти какой-либо символ в общем lisp в emacs с slime

+0

У вас есть слизь, установленная и загруженная? Каков результат выполнения 'M-x hyperspec-lookup'? –

+0

он по-прежнему печатает «нет совпадения» после того, как я нажимаю Enter :-( – user1870199

+0

Каков результат 'Ch v common-lisp-hyperspec-root'? Вероятно, вам нужно положить что-то вроде' (setq common-lisp-hyperspec-root "file: /// usr/share/doc/hyperspec /") 'в вашем .emacsrc –

ответ

3

Действительно ли вы используете режим 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 для нечеткого расширения.

+0

Я уверен, что он читает * slime-repl sbcl * – user1870199

0

Я столкнулся с этой проблемой после переключения с версии 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") 

Это, кажется, решен вопрос. Почему это работает, я не знаю (он отличается от документации). Может быть, ошибка или недокументированное изменение?