2015-05-25 6 views
2

EMACS имеет Meta. привязка клавиш для SLIME, которая работает только ограниченным образом для Common Lisp.Как перейти к определению схемы в EMACS

Есть ли более общий способ перейти к определению функции, которое работает со схемой? Возможно, что-то, что ищет через источники, такие как Cscope?

ответ

1

Для использования в ракете racket-mode, написанном Грегом Хендершоттом.

https://github.com/greghendershott/racket-mode

Документация по racket-visit-definition, к которому M-. обязан.

Docs on racket-visit-documentation

+0

Это еще более жесткие ограничения, чем версия слизью. Это даже иногда требует, чтобы вы использовали 'racket-run', который документирован как похожий на перезапуск Racket REPL и перезагрузку всего. Избежать этого (в той мере, в какой это возможно с помощью Racket) является одной из причин, по которым я использую EMACS вместо DrRacket. И он не может найти ничего, что находится в другом пространстве имен, поэтому, если я не могу найти его с C-f, я тоже не смогу его найти. –

+0

Обратите внимание, что из-за макросов объект определения определения сложнее реализовать в Scheme и Common Lisp, чем в C. В качестве примера рассмотрим: (struct foo (bar)) после расширения идентификаторы foo? foo-bar set-foo-bar! доступны. Ни один из них не присутствует в источнике. – soegaard

+0

Из-за модулей сортировка идентификаторов может быть определена сразу в нескольких модулях. Режим 'racket-mode' из-за ограничения пространства имен сможет найти' sort', который фактически используется там, где вы вызываете 'racket-visit-definition'. – soegaard

2

Geiser Попробуйте. Это эквивалент SLIME для схемы. M-. есть.

1

Вы можете сгенерировать файлы с тегами самостоятельно, используя etags (похожие на ctags для vim). Они должны работать в ванильных Emacs (без слизи):

etags *.scm

etags не будут ходить каталоги рекурсивно. Что касается решений для этого, это выглядело многообещающим: How to use shell magic to create a recursive etags using GNU etags?

Etag документы: https://www.gnu.org/software/emacs/manual/html_node/eintr/etags.html

Смежные вопросы