diff options
Diffstat (limited to 'rplugin')
-rw-r--r-- | rplugin/python3/deoplete/sources/dictionary.py | 13 | ||||
-rw-r--r-- | rplugin/python3/deoplete/sources/tag.py | 14 | ||||
-rw-r--r-- | rplugin/python3/deoplete/util.py | 13 |
3 files changed, 18 insertions, 22 deletions
diff --git a/rplugin/python3/deoplete/sources/dictionary.py b/rplugin/python3/deoplete/sources/dictionary.py index 20b519d..a567f42 100644 --- a/rplugin/python3/deoplete/sources/dictionary.py +++ b/rplugin/python3/deoplete/sources/dictionary.py @@ -23,11 +23,9 @@ # }}} # ============================================================================ -import re -import functools -import operator from os.path import getmtime, exists from collections import namedtuple +from deoplete.util import parse_file_pattern from .base import Base DictCacheItem = namedtuple('DictCacheItem', 'mtime candidates') @@ -51,7 +49,7 @@ class Source(Base): if filename not in self.__cache or self.__cache[ filename].mtime != mtime: with open(filename, 'r', errors='replace') as f: - new_candidates = parse_dictionary( + new_candidates = parse_file_pattern( f, context['keyword_patterns']) candidates += new_candidates self.__cache[filename] = DictCacheItem( @@ -61,12 +59,5 @@ class Source(Base): return [{'word': x} for x in candidates] -def parse_dictionary(f, keyword_patterns): - p = re.compile(keyword_patterns) - return list(set(functools.reduce(operator.add, [ - p.findall(x) for x in f.readlines() - ]))) - - def get_dictionaries(vim, filetype): return vim.current.buffer.options.get('dictionary', '').split(',') diff --git a/rplugin/python3/deoplete/sources/tag.py b/rplugin/python3/deoplete/sources/tag.py index c0139a8..081d7df 100644 --- a/rplugin/python3/deoplete/sources/tag.py +++ b/rplugin/python3/deoplete/sources/tag.py @@ -24,11 +24,9 @@ # }}} # ============================================================================ -import re -import functools -import operator from os.path import getmtime, exists, getsize from collections import namedtuple +from deoplete.util import parse_file_pattern from .base import Base TagsCacheItem = namedtuple('TagsCacheItem', 'mtime candidates') @@ -58,7 +56,8 @@ class Source(Base): if filename not in self.__cache or self.__cache[ filename].mtime != mtime: with open(filename, 'r', errors='replace') as f: - new_candidates = parse_tags(f) + new_candidates = parse_file_pattern( + f, '^[a-zA-Z_]\w*(?=\t)') candidates += new_candidates self.__cache[filename] = TagsCacheItem( mtime, new_candidates) @@ -66,10 +65,3 @@ class Source(Base): else: candidates += self.__cache[filename].candidates return [{'word': x} for x in candidates] - - -def parse_tags(f): - p = re.compile('^[a-zA-Z_]\w*(?=\t)') - return list(set(functools.reduce(operator.add, [ - p.findall(x) for x in f.readlines() - ]))) diff --git a/rplugin/python3/deoplete/util.py b/rplugin/python3/deoplete/util.py index c52d273..4aa47a2 100644 --- a/rplugin/python3/deoplete/util.py +++ b/rplugin/python3/deoplete/util.py @@ -23,7 +23,10 @@ # }}} # ============================================================================ +import re import json +import functools +import operator def get_buffer_config(vim, filetype, buffer_var, user_var, default_var): @@ -85,3 +88,13 @@ def get_custom(vim, source_name): def get_syn_name(vim): return vim.call('deoplete#util#get_syn_name') + + +def parse_file_pattern(f, pattern): + lines = f.readlines() + if not lines: + return [] + p = re.compile(pattern) + return list(set(functools.reduce(operator.add, [ + p.findall(x) for x in lines + ]))) |