Как я могу понять, если буфер vim указан или не указан в API-интерфейсе Python vim? - PullRequest
2 голосов
/ 16 марта 2009

для инструмента мне нужно вычислить все буферы vim, которые все еще перечислены (есть буферы в списке и в списке)

к сожалению vim.buffers содержит все буферы, и, кажется, нет атрибута для определения, если буфер указан или не указан

команда vim того, что я хочу сделать, это

:buffers

к сожалению, все, что возможно с API vim Python, эмулирует

:buffers!

но без метаданных о перечисленных / не перечисленных вот то, что нам нужно

Ответы [ 2 ]

6 голосов
/ 16 марта 2009

Вот как вы можете управлять этим, используя только язык Vim.

function s:buffers_list()
    let result = []

    for buffer_number in range(1, bufnr('$'))
        if !buflisted(buffer_number)
            continue
        endif

        call add(result, buffer_number)
    endfor

    return result
endfunction
3 голосов
/ 28 октября 2009

Использование API-интерфейса Vim для Python:

listedBufs = []
for b in vim.buffers:
    listed = vim.eval('buflisted(bufnr("%s"))' % b.name)
    if int(listed) > 0:
        listedBufs.append(b)

или если вы не против того, чтобы пожертвовать читабельностью:

listedBufs = [b for b in vim.buffers
              if int(vim.eval('buflisted(bufnr("%s"))' % b.name)) > 0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...