def rename(clang_service): clang_service.update_buffers(__get_bufctx_list(), False) clang_service.parse_all() cc = clang_service.get_cc(vim.current.buffer.name) if cc is None: return tu = cc.current_tu if tu is None: return symbol = clighter_helper.get_vim_symbol( clighter_helper.get_vim_cursor(tu, tu.get_file(cc.name))) if symbol is None: return old_name = clighter_helper.get_spelling_or_displayname(symbol) vim.command("echohl WildMenu") new_name = vim.eval( "input(' Rename {0} : ', '{1}')".format(old_name, old_name)) vim.command("echohl None") if not new_name or old_name == new_name: return print ' ' pos = vim.current.window.cursor locs = set() locs.add((symbol.location.line, symbol.location.column, symbol.location.file.name)) clighter_helper.search_referenced_tokens( tu, symbol, locs) prompt = string.atoi(vim.eval('g:clighter_rename_prompt_level')) __vim_multi_replace( locs, old_name, new_name, prompt) if clighter_helper.is_global_symbol( symbol) and vim.eval('g:clighter_enable_cross_rename') == '1': __cross_buffer_rename( clang_service, symbol.get_usr(), new_name, prompt) vim.current.window.cursor = pos clang_service.update_buffers(__get_bufctx_list(), True)
def __cross_buffer_rename(clang_service, symbol_usr, new_name, prompt): call_bufnr = vim.current.buffer.number vim.command("bn!") while vim.current.buffer.number != call_bufnr: cc = clang_service.get_cc(vim.current.buffer.name) if cc: try: __search_symbol_and_rename(cc.current_tu, symbol_usr, new_name, prompt) except: pass vim.command("bn!")
def hl_window(clang_service, do_symbol_hl): cc = clang_service.get_cc(vim.current.buffer.name) if cc is None: return parse_tick = cc.parse_tick tu = cc.current_tu if tu is None: return file = tu.get_file(cc.name) top = string.atoi(vim.eval("line('w0')")) bottom = string.atoi(vim.eval("line('w$')")) height = bottom - top + 1 symbol = None if vim.eval('g:ClighterCursorHL') == '1': vim_cursor = clighter_helper.get_vim_cursor(tu, file) symbol = clighter_helper.get_vim_symbol(vim_cursor) w_range = [top, bottom] syntax_range = [ max(top - height, 1), min(bottom + height, len(vim.current.buffer)) ] symbol_range = w_range if vim.current.window.vars['hl_tick'] < parse_tick: clear_highlight() else: if not __is_contained_in(w_range, hl_window.syntax_range): __vim_clear_match_pri(SYNTAX_PRI) else: syntax_range = None if not __is_contained_in(w_range, hl_window.symbol_range) or ( hl_window.symbol and (not symbol or symbol != hl_window.symbol)): clear_symbol_hl() else: symbol_range = None if not do_symbol_hl: symbol_range = None __do_highlight(tu, file, syntax_range, symbol, symbol_range) vim.current.window.vars['hl_tick'] = parse_tick
def __cross_buffer_rename(clang_service, symbol_usr, new_name, prompt): call_bufnr = vim.current.buffer.number vim.command("bn!") while vim.current.buffer.number != call_bufnr: cc = clang_service.get_cc(vim.current.buffer.name) if cc: try: __search_symbol_and_rename( cc.current_tu, symbol_usr, new_name, prompt) except: pass vim.command("bn!")
def rename(clang_service): clang_service.update_buffers(__get_bufctx_list(), False) clang_service.parse_all() cc = clang_service.get_cc(vim.current.buffer.name) if cc is None: return tu = cc.current_tu if tu is None: return symbol = clighter_helper.get_vim_symbol( clighter_helper.get_vim_cursor(tu, tu.get_file(cc.name))) if symbol is None: return old_name = clighter_helper.get_spelling_or_displayname(symbol) vim.command("echohl WildMenu") new_name = vim.eval("input(' Rename {0} : ', '{1}')".format( old_name, old_name)) vim.command("echohl None") if not new_name or old_name == new_name: return print ' ' pos = vim.current.window.cursor locs = set() locs.add((symbol.location.line, symbol.location.column, symbol.location.file.name)) clighter_helper.search_referenced_tokens(tu, symbol, locs) prompt = string.atoi(vim.eval('g:clighter_rename_prompt_level')) __vim_multi_replace(locs, old_name, new_name, prompt) if clighter_helper.is_global_symbol(symbol) and vim.eval( 'g:clighter_enable_cross_rename') == '1': __cross_buffer_rename(clang_service, symbol.get_usr(), new_name, prompt) vim.current.window.cursor = pos clang_service.update_buffers(__get_bufctx_list(), True)
def hl_window(clang_service, do_symbol_hl): cc = clang_service.get_cc(vim.current.buffer.name) if cc is None: return parse_tick = cc.parse_tick tu = cc.current_tu if tu is None: return file = tu.get_file(cc.name) top = string.atoi(vim.eval("line('w0')")) bottom = string.atoi(vim.eval("line('w$')")) height = bottom - top + 1 symbol = None if vim.eval('g:ClighterCursorHL') == '1': vim_cursor = clighter_helper.get_vim_cursor(tu, file) symbol = clighter_helper.get_vim_symbol(vim_cursor) w_range = [top, bottom] syntax_range = [max(top - height, 1), min( bottom + height, len(vim.current.buffer))] symbol_range = w_range if vim.current.window.vars['hl_tick'] < parse_tick: clear_highlight() else: if not __is_contained_in(w_range, hl_window.syntax_range): __vim_clear_match_pri(SYNTAX_PRI) else: syntax_range = None if not __is_contained_in(w_range, hl_window.symbol_range) or (hl_window.symbol and (not symbol or symbol != hl_window.symbol)): clear_symbol_hl() else: symbol_range = None if not do_symbol_hl: symbol_range = None __do_highlight(tu, file, syntax_range, symbol, symbol_range) vim.current.window.vars['hl_tick'] = parse_tick