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
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
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
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
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
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 = {}
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
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
def GetCurrentSource(self): using_source = vim_lib.CallEval('ECY_main#GetCurrentUsingSourceName()') # if using_source is '': # using_source = 'nothing' return using_source
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
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
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
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
def GetCurrentWorkSpace(self): temp = vim_lib.CallEval("ECY#rooter#GetCurrentBufferWorkSpace()") if temp == '': temp = None return temp
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