2009-03-15 8 views
2

pour un outil que je dois comprendre tous les tampons de vim qui sont toujours sur la liste (il y a cotées et non cotées tampons)comment puis-je savoir si un tampon vim est répertorié ou non dans l'api python de vim?

vim.buffers malheureusement contient tous les tampons et il ne marche pas semblent être un attribut pour déterminer si un tampon est inscrit ou non cotées

la commande vim de ce que je veux faire est

:buffers 

malheureusement des thats possible avec le api python vim émule

:buffers! 

mais sans les métadonnées à propos des thats Coté/non nous avons besoin

Répondre

6

Voici comment vous pouvez gérer cela en utilisant simplement la langue 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

L'utilisation de api python Vim:

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

ou si vous ne me dérange pas sacrifier une certaine lisibilité:

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