В последний раз я писал об этой установке здесь: «F#, Ionide, Vim и NvChad. Я наслаждался путешествием по использованию… | Каллум Линингтон | Середина"

Я нашел проблемы и исправил некоторые вещи, так как мое понимание всего этого стало лучше!

Вещи, которые улучшились:

  1. Настройка ионида
  2. Форматирование, форматирование при сохранении
  3. Горячие клавиши FTW

Настройка ионида

Итак, первое, что я улучшил, это то, как Ionide настраивается и используется.

Во-первых, в custom/init.lua я добавил некоторые настройки Ionide и функцию отказоустойчивости:

Здесь он демонстрирует способы установки глобальных переменных, которые будет использовать плагин Ionide. Еще одна вещь, которую вы заметите, это nvim_create_user_command , потому что у меня возникла проблема, из-за которой CodeLens не отображался. Это ручной способ, запускаемый выполнением :FSharpRefreshCodeLens, что довольно круто, но на самом деле я нашел более автоматический способ.

Во-вторых, в custom/plugins.lua я немного изменил способ загрузки, надеюсь в лучшую сторону:

Идея здесь в том, что добавление dependencies загрузит Ionide только тогда, когда lsp будет загружен и зарегистрирован, надеюсь, сглаживая любые складки, которые могут возникнуть.

Наконец, в custom/configs/lspconfig.lua я изменил способ загрузки плагина Ionide — он зависит от установленной строки vim.g["fsharp#lsp_auto_setup"] = 0, что, по сути, позволяет нам лучше контролировать его загрузку — что также совпадает с автоматическим вызовом обновления CodeLens.

Здесь я просто подключаюсь к вызову функции on_attach, говорю ей, чтобы она выполнялась как обычно, а затем запускаю codelens.refresh(), чтобы она всегда получала линзу кода.

Форматирование и форматирование при сохранении

Последняя проблема стиля конфигурации, с которой я столкнулся, — это форматирование и получение формата при сохранении! Это также работает для C#, JS/TS и других. Что очень круто.

Во-первых, вам нужно изменить custom/plugins.lua, чтобы включить этот блок вокруг neovim/nvim-lspconfig — что мы и сделали в первом посте, когда хотели добавить пользовательские конфигурации lsp.

Здесь мы просто добавляем эту зависимость от null-ls, которая используется для форматирования, линтинга и т. д.

Вы увидите строку require "custom.configs.null-ls", поэтому нам нужно создать ее:

Здесь вы увидите целую кучу исходников, настроенных для форматирования, а блок вокруг on_attach — это место, где мы настраиваем формат при сохранении.

nvim_create_autocmd — это команда, которая автоматически присоединяется к инициируемому событию, событие BufWritePre относится к событию Pre — Buffer Write. Буфер — это просто загруженный текстовый файл, который вы просматриваете. Pre и Write относятся до того, как он был записан на диск, поэтому, сложив все вместе, он просто вызывает lsp.buf.format каждый раз, когда буфер собирается записать на диск!

Очень круто!

Горячие клавиши FTW

Итак, вот некоторые из команд, которые я изучил, используя NvChad и написав код.

<Space>-e : Переход к дереву файлов

<Space>-a : (в дереве файлов) создает файл

<Space>-d : (в дереве файлов) удаляет файл

<Space>-ff : Найти файлы — для быстрого ввода имени файла (нечеткое совпадение) и открытия, а также дает окно предварительного просмотра.

<Space>-gt : (в буфере) просмотр статуса Git

<Space>-f : (при наведении курсора на предупреждение/ошибку в буфере) Показать окно диагностики (используйте h или l, чтобы закрыть окно)

<Space>-gd : Перейти к определению — одному из самых полезных для кодирования…

<Space>-ca : (Когда в буфере) Действие LSP — если вы привыкли, чтобы интерфейсы автоматически создавали шаблоны для вас при получении типа, это команда, чтобы заставить его сделать это.

После ввода 1 и нажатия <Enter>

<Shift>-K : (в буфере) показывает информацию о символе, над которым вы навели курсор.

И вот, пожалуйста, надеюсь, это было полезным продолжением — я определенно застрял в этом путешествии и получаю массу удовольствия от этого! Учиться довольно много!