Как я могу сделать vim indent dplyr-код с помощью оператора pipe (%>%) правильно?

Например, vim будет иметь не отступ, следующий код:

flights <- flights %>%
    group_by(year, month, day) %>%
    select(arr_delay, dep_delay) %>%
    summarise(
        arr = mean(arr_delay, na.rm = TRUE),
        dep = mean(dep_delay, na.rm = TRUE)
    ) %>%
    filter(arr > 30 | dep > 30)

Есть ли способ исправить это?

Я использую Vim-R-Plugin, связанная с этим проблема здесь.

Ответы

Ответ 1

Одна вещь, которую вы можете сделать, это научиться vimscript и самостоятельно изменить это поведение. Если он работает хорошо, вы можете внести изменения в оригинального автора.

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

В ответ на ваш запрос Я поместил свой код в github. Вы можете попробовать использовать мой код отступа вместо кода r-plugin, если хотите. Он может или не может решить вашу проблему (нет promises). Если я получу достаточную мотивацию, я могу исправить ее настолько, что мы могли бы сделать ее стандартным кодом отступа vim.