Я пишу плагин vim, в котором мне нужно определить все те файлы, которые в настоящее время различаются. Это те, для которых установлен diff
. Я проходил через руководство, но не мог найти много.Как получить список файлов, которые в настоящее время различаются в vim
Возможно ли это.
Этот вопрос фактически связан с вопросом how-to-detect-the-position-of-window-in-vim. В этом вопросе я пытался получить положение окна, чтобы определить, какой из различий является правильным и который остается одним. solution я получил использовать winnr()
Это решение может работать только в том случае, если есть только 2 окна (которые различаются). Я хочу сделать его общим, так что, даже если в vim открыты несколько окон, я могу определить, какой из них слева, а какой правильный. Это то, что я думал решить проблему
- Получить список всех перечисленных буферов
- Для каждого из этого буферов определить, если
diff
является1
для этого - If
diff
является1
использованияbufwinnr()
к получает это номер окна. - Из номеров окон определяется, какой из них находится, а какой - справа. левый один будет иметь меньший номер окна
- И затем определите, является ли текущий буфер (в котором нажато
alt-left
`alt-right`) слева или справа, используя winnr текущего буфера.
Теперь части, которые отсутствуют, равны 1 и 2. Для 1 ls можно использовать, но мне нужно разобрать его выход. Есть ли прямой способ получить список всех перечисленных буферов. И тогда есть ли способ проверить, что для этого буфера diff
равен 1 или нет.
Любые предложения по более простому решению также приветствуются.