Как «перейти к определению» для определенной пользователем функции в Лексе? - PullRequest
23 голосов
/ 10 октября 2011

Я могу сделать это для системных функций, таких как const, выбрав его, щелкнув правой кнопкой мыши и выбрав поиск (метаданные). То же самое не работает для пользовательских функций.

Как вы делаете такой поиск?

Если это невозможно для пользовательских функций, как вы читаете уже существующий проект на Haskell и переключаетесь между определениями и вызовами?

Vim + ctags работают только для пользовательских функций и не так мощны, как cscope для исходного кода c / c ++.

Ответы [ 3 ]

2 голосов
/ 08 июля 2012

Я попробовал то, что вы сказали, с пользовательскими функциями, и это прекрасно работает для меня. Я выбираю название функции, щелкаю правой кнопкой мыши, ищу (метаданные), и она появляется на вкладке поиска справа. Затем я нажимаю «перейти к определению», и оно приводит меня к определению. Может, стоит попробовать перезапустить Лексу? Я заметил, что иногда он не распознает функции сразу, как я их пишу, но если вы перезапустите его, он распознает их.

1 голос
/ 25 января 2013

Вам необходимо использовать «Обновить данные рабочей области» в меню «Конфигурация» - Leksah не индексирует созданные пользователем функции, пока вы не сделаете это (или не перезапустите компилятор).Ярлык по умолчанию в Windows - Ctrl + M.

0 голосов
/ 21 мая 2012

Это решение может быть совершенно неосновным, потому что я не использую Haskell, но подойдет ли вам ack-grep ? Я нашел это очень полезным для погружений в коде.

Я вижу в документации , что он поддерживает haskell.

Полагаю, вы бы использовали: ack --haskell user_function

...