├── README.md └── rplugin └── python3 └── deoplete └── sources └── minisnip.py /README.md: -------------------------------------------------------------------------------- 1 | # deoplete-minisnip 2 | 3 | A Deoplete source for [vim-minisnip](https://github.com/joereynolds/vim-minisnip), the lightweight snippet manager. 4 | 5 | ## Installation 6 | 7 | With vim-plug 8 | 9 | ``` 10 | Plug 'joereynolds/deoplete-minisnip' 11 | ``` 12 | 13 | You may need to `:UpdateRemotePlugins` 14 | 15 | ## Demo 16 | 17 | [![asciicast](https://asciinema.org/a/iDJMTBZfmTftp34SuWoPHpGAR.png)](https://asciinema.org/a/iDJMTBZfmTftp34SuWoPHpGAR) 18 | -------------------------------------------------------------------------------- /rplugin/python3/deoplete/sources/minisnip.py: -------------------------------------------------------------------------------- 1 | import os 2 | import re 3 | 4 | from .base import Base 5 | 6 | class Source(Base): 7 | 8 | def __init__(self, vim): 9 | Base.__init__(self, vim) 10 | 11 | self.name = 'minisnip' 12 | self.mark = '[minisnip]' 13 | self.min_pattern_length = 0 14 | self.minisnip_dir = None 15 | self.snippets = [] 16 | 17 | def gather_candidates(self, context): 18 | if not self.minisnip_dir: 19 | self.minisnip_dir = self.vim.eval('g:minisnip_dir') 20 | self.snippets = os.listdir(os.path.expanduser(self.minisnip_dir)) 21 | 22 | ft = context['filetype'] 23 | 24 | # Converts compound filetypes into a prefix pattern. 25 | # (`ruby.rspec` → `^_(ruby|rspec)_`) 26 | # 27 | # @see https://github.com/joereynolds/vim-minisnip/blob/b5bcaff0ddea13d3ce2cf25f4dc88b0569da60b1/autoload/minisnip.vim#L14-L20 28 | ft_reg = '^_(' + ft.replace('.', '|') + ')_' 29 | 30 | candidates = [] 31 | 32 | for snippet in self.snippets: 33 | if snippet.startswith('_'): 34 | m = re.search(ft_reg, snippet) 35 | if m: 36 | candidates.append(snippet[len(m.group(0)):]) 37 | else: 38 | candidates.append(snippet) 39 | 40 | return [{'word': c} for c in candidates] 41 | --------------------------------------------------------------------------------