Как «перейти к определению» для пользовательской функции в Leksah?

#haskell #ide #leksah

#haskell #ide #leksah

Вопрос:

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

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

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

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

Комментарии:

1. Вы когда-нибудь находили решение? Пожалуйста, следите и публикуйте его, если вы нашли что-то лучше, чем ack.

2. @kobejohn Лучшего решения нет.

3. Нет, я использую vim haskellmode hoogle.

Ответ №1:

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

Ответ №2:

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

Ответ №3:

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

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

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