예제 #1
0
    def _return_buffer(self, msg, file_path):
        """ return current buffer difference text.
        """
        msg['IsFullList'] = False
        msg['IsDebugging'] = self._is_debugging
        msg['UsingTextDiffer'] = self._use_textdiffer

        if self._use_textdiffer:
            cached_buffer = vim_lib.GetVariableValue(
                'g:ECY_server_cached_buffer')
        else:
            cached_buffer = []

        if self._is_debugging and self._use_textdiffer:
            current_buffer = vim_lib.CallEval('getbufline(bufnr(), 1, "$")')
            msg['AllTextList'] = current_buffer

        # TODO, there are bug in vim, check
        # https://github.com/vim/vim/issues/5840
        if self._use_textdiffer and file_path in cached_buffer:
            msg['Commands'] = self._parse_differ_commands()
        else:
            current_buffer = vim_lib.CallEval('getbufline(bufnr(), 1, "$")')
            msg['IsFullList'] = True
            msg['AllTextList'] = current_buffer

        return msg
예제 #2
0
 def _get_is_save_log_file(self):
     ''' Output log file to corresponding workspace.
     '''
     if self._is_output_log is None:
         self._is_output_log = vim_lib.CallEval(
             "get(g:,'ECY_gopls_output_log_file_to_workspace',v:false)")
     return self._is_output_log
예제 #3
0
 def _parse_differ_commands(self):
     infos = vim_lib.GetVariableValue('g:ECY_buffer_need_to_update')
     buffer_info = vim_lib.GetVariableValue(
         'g:ECY_cached_buffer_nr_to_path')
     vim_lib.Command('let g:ECY_buffer_need_to_update = {}')
     commands = {}
     g_logger.debug(infos)
     for buffer_nr in infos:
         info = infos[buffer_nr]
         buffer_path = buffer_info[buffer_nr]
         commands[buffer_path] = []
         # last_command = None
         for item in info:
             kind = item[0]
             start_line = int(item[1])
             end_line = int(item[2])
             # if last_command == item:
             #     continue
             # last_command = item
             deleted_line = 0
             for line in range(start_line, end_line + 1):
                 temp = {'kind': kind, 'line': line}
                 if kind != 'delete':
                     try:
                         evals = 'getbufline({0}, {1})'.format(
                             buffer_nr, line + 1)
                         temp['newtext'] = vim_lib.CallEval(evals)[0]
                     except:
                         continue
                 else:
                     temp['line'] -= deleted_line
                     deleted_line += 1
                 commands[buffer_path].append(temp)
     g_logger.debug(commands)
     return commands
예제 #4
0
 def _get_starting_cmd(self):
     ''' After open a new filetype in Vim, ECY will ask the server what sources
     are available in that filetype, so 
     '''
     if self._starting_server_cmd is None:
         self._starting_server_cmd = vim_lib.CallEval(
             "get(g:,'ECY_typescripte_starting_cmd', 'tsserver')")
     return self._starting_server_cmd
예제 #5
0
 def _get_starting_cmd(self):
     ''' After open a new filetype in Vim, ECY will ask the server what sources
     are available in that filetype, so 
     '''
     if self._starting_server_cmd is None:
         self._starting_server_cmd = vim_lib.CallEval(
             "get(g:,'ECY_vim_lsp_starting_cmd','vim-language-server --stdio')")
     return self._starting_server_cmd
예제 #6
0
    def __init__(self, source_name):
        self._workspace = None
        self.source_name = source_name
        self._is_return_match_point = vim_lib.GetVariableValue(
            "g:ECY_use_floating_windows_to_be_popup_windows")
        self._trigger_len = vim_lib.GetVariableValue("g:ECY_triggering_length")
        self._is_debugging = vim_lib.GetVariableValue("g:ECY_debug")
        self._use_textdiffer = vim_lib.CallEval(
            'ECY_main#UsingTextDifferEvent()')
        self._snippets_cache = None
        self._lsp_setting = None

        self.preview_file_dir = None
        self.preview_file_list = []
        self.preview_content = {}
        # self._get_difference = MyDiffer()
        self.buffer_cache = {}
예제 #7
0
 def _get_snippets(self, is_reflesh=False):
     results = {'HasSnippetSupport': True}
     try:
         if is_reflesh or self._snippets_cache is None:
             vim_lib.CallEval('UltiSnips#SnippetsInCurrentScope(1)')
             self._snippets_cache =\
                 vim_lib.GetVariableValue('g:current_ulti_dict_info')
             preview = self._get_preview_content()
             for key in self._snippets_cache:
                 if key in preview.keys():
                     self._snippets_cache[key]['preview'] = preview[key][
                         'preview']
                 else:
                     self._snippets_cache[key]['preview'] = []
         results['UltisnipsSnippets'] = self._snippets_cache
     except:
         results = {'HasSnippetSupport': False}
         g_logger.debug("Failed to load snippets.")
     return results
예제 #8
0
 def _list_preview_file(self):
     if self.preview_file_dir is None:
         self.preview_file_dir = vim_lib.CallEval(
             "get(g:, 'snippets_preview_dir', '1')")
         if self.preview_file_dir == '1':
             g_logger.debug("Not install plugin of preview.")
             self.preview_file_dir = 'failed to get variable.'
             self.preview_file_list = []
         else:
             try:
                 os.chdir(self.preview_file_dir)
                 file_list = os.listdir(os.curdir)
                 for item in file_list:
                     if os.path.isfile(item):
                         self.preview_file_list.append(item)
                 g_logger.debug(self.preview_file_list)
             except:
                 g_logger.debug("have no preview file path.")
                 self.preview_file_dir = 'failed to get variable.'
                 self.preview_file_list = []
     return self.preview_file_list
예제 #9
0
 def GetCurrentSource(self):
     using_source = vim_lib.CallEval('ECY_main#GetCurrentUsingSourceName()')
     # if using_source is '':
     #     using_source = 'nothing'
     return using_source
예제 #10
0
 def _get_ignore(self):
     if self._ignore_dict is None:
         self._ignore_dict = vim_lib.CallEval(
             "get(g:,'ECY_file_path_ignore',{'dir': ['.svn','.git','.hg', '__pycache__'],'file': ['*.sw?','~$*','*.bak','*.exe','*.o','*.so','*.py[co]','~$','swp$']})"
         )
     return self._ignore_dict
예제 #11
0
 def _get_limit_results(self):
     if self._limit_results is None:
         self._limit_results = vim_lib.CallEval(
             "get(g:,'ECY_clangd_results_limitation', 500)")
     return self._limit_results
예제 #12
0
 def _get_starting_cmd(self):
     if self._starting_server_cmd is None:
         self._starting_server_cmd = vim_lib.CallEval(
             "get(g:,'ECY_clangd_starting_cmd','clangd')")
     return self._starting_server_cmd
예제 #13
0
 def _get_HTMLHint_cmd(self):
     if self._HTMLHint_cmd is None:
         self._HTMLHint_cmd = vim_lib.CallEval(
             "get(g:,'ECY_html_lsp_HtmlHint_cmd','htmlhint')")
     return self._HTMLHint_cmd
예제 #14
0
 def GetCurrentWorkSpace(self):
     temp = vim_lib.CallEval("ECY#rooter#GetCurrentBufferWorkSpace()")
     if temp == '':
         temp = None
     return temp
예제 #15
0
 def _get_lsp_setting_dict(self):
     if vim_lib.CallEval('get(g:, "ECY_lsp_setting_new_server", 0)') == 1 \
             or self._lsp_setting is None or self._lsp_setting == []:
         self._lsp_setting = vim_lib.CallEval('lsp#GetDict()')
     return self._lsp_setting