Best Python code snippet using ATX
contexts.py
Source:contexts.py  
1import sublime2from Vintageous.vi.constants import MODE_NORMAL, MODE_NORMAL_INSERT, MODE_INSERT, ACTIONS_EXITING_TO_INSERT_MODE, MODE_VISUAL_LINE, MODE_VISUAL, MODE_SELECT3from Vintageous.vi.constants import MODE_VISUAL_BLOCK4from Vintageous.vi import constants5from Vintageous.vi import utils6from Vintageous.vi.constants import action_to_namespace7class KeyContext(object):8    def __get__(self, instance, owner):9        self.state = instance10        return self11    def vi_must_change_mode(self, key, operator, operand, match_all):12        is_normal_mode = self.state.settings.view['command_mode']13        is_exit_mode_insert = (self.state.action in ACTIONS_EXITING_TO_INSERT_MODE)14        if (is_normal_mode and is_exit_mode_insert):15            return self._check(True, operator, operand, match_all)16        # Close the ':' panel.17        if self.vi_is_cmdline(key, operator, operand, match_all):18            # We return False so that vi_esc will be skipped and the default Sublime Text command19            # will be triggered instead. When the input panel finally closes, the initialization20            # code in state.py will take care of clearing the state so we are left in a consistent21            # state.22            return False23        # If we have primed counts, we have to clear the state.24        if self.state.user_provided_count or self.state.motion or self.state.action:25            return True26        # TODO: Simplify comparisons.27        if self.state.mode == MODE_NORMAL_INSERT:28            return True29        if self.state.mode == MODE_INSERT:30            return True31        # check if we are NOT in normal mode -- if NOT, we need to change modes32        # This covers, for example, SELECT_MODE.33        if self.state.mode != MODE_NORMAL:34            return True35        # Clear non-empty selections if there any.36        # For example, this will be the case when we've used select mode (gh).37        if not all(r.empty() for r in self.state.view.sel()):38            return True39        # XXX Actually, if we already are in normal mode, we still need to perform certain40        # cleanup tasks, so let the command run anyway.41        if self.state.view.get_regions('vi_search'):42            return True43    def vi_is_buffer(self, key, operator, operand, match_all):44        # !! The following check is based on an implementation detail of Sublime Text. !!45        is_console = False if (getattr(self.state.view, 'settings') is not None) else True46        is_widget = self.state.view.settings().get('is_widget')47        value = (is_console or is_widget)48        return self._check(value, operand, operand, match_all)49    def vi_must_exit_to_insert_mode(self, key, operator, operand, match_all):50        # XXX: This conext most likely not needed any more.51        is_normal_mode = self.state.settings.view['command_mode']52        is_exit_mode_insert = (self.state.action in ACTIONS_EXITING_TO_INSERT_MODE)53        value = (is_normal_mode and is_exit_mode_insert)54        return self._check(value, operator, operand, match_all)55    def vi_use_ctrl_keys(self, key, operator, operand, match_all):56        value = self.state.settings.view['vintageous_use_ctrl_keys']57        return self._check(value, operator, operand, match_all)58    def vi_is_cmdline(self, key, operator, operand, match_all):59        value = (self.state.view.score_selector(0, 'text.excmdline') != 0)60        return self._check(value, operator, operand, match_all)61    def vi_enable_cmdline_mode(self, key, operator, operand, match_all):62        value = self.state.settings.view['vintageous_enable_cmdline_mode']63        return self._check(value, operator, operand, match_all)64    def vi_has_incomplete_action(self, key, operator, operand, match_all):65        value = any(x for x in (self.state.action, self.state.motion) if66                          x in constants.INCOMPLETE_ACTIONS)67        return self._check(value, operator, operand, match_all)68    def vi_has_action(self, key, operator, operand, match_all):69        value = self.state.action70        value = value and (value not in constants.INCOMPLETE_ACTIONS)71        return self._check(value, operator, operand, match_all)72    def vi_has_motion_count(self, key, operator, operand, match_all):73        value = self.state.motion_digits74        return self._check(value, operator, operand, match_all)75    def vi_mode_normal_insert(self, key, operator, operand, match_all):76        value = self.state.mode == MODE_NORMAL_INSERT77        return self._check(value, operator, operand, match_all)78    def vi_mode_visual_block(self, key, operator, operand, match_all):79        value = self.state.mode == MODE_VISUAL_BLOCK80        return self._check(value, operator, operand, match_all)81    def vi_mode_cannot_push_zero(self, key, operator, operand, match_all):82        value = False83        if operator == sublime.OP_EQUAL:84            value = not (self.state.motion_digits or85                             self.state.action_digits)86        return self._check(value, operator, operand, match_all)87    def vi_mode_visual_any(self, key, operator, operand, match_all):88        value = self.state.mode in (MODE_VISUAL_LINE, MODE_VISUAL, MODE_VISUAL_BLOCK)89        return self._check(value, operator, operand, match_all)90    def vi_mode_select(self, key, operator, operand, match_all):91        value = self.state.mode == MODE_SELECT92        return self._check(value, operator, operand, match_all)93    def vi_mode_visual_line(self, key, operator, operand, match_all):94        value = self.state.mode == MODE_VISUAL_LINE95        return self._check(value, operator, operand, match_all)96    def vi_mode_insert(self, key, operator, operand, match_all):97        value = self.state.mode == MODE_INSERT98        return self._check(value, operator, operand, match_all)99    def vi_mode_visual(self, key, operator, operand, match_all):100        value = self.state.mode == MODE_VISUAL101        return self._check(value, operator, operand, match_all)102    def vi_mode_normal(self, key, operator, operand, match_all):103        value = self.state.mode == MODE_NORMAL104        return self._check(value, operator, operand, match_all)105    def vi_mode_normal_or_visual(self, key, operator, operand, match_all):106        # XXX: This context is used to disable some keys for VISUALLINE.107        # However, this is hiding some problems in visual transformers that might not be dealing108        # correctly with VISUALLINE.109        normal = self.vi_mode_normal(key, operator, operand, match_all)110        visual = self.vi_mode_visual(key, operator, operand, match_all)111        visual = visual or self.vi_mode_visual_block(key, operator, operand, match_all)112        return self._check((normal or visual), operator, operand, match_all)113    def vi_mode_normal_or_any_visual(self, key, operator, operand, match_all):114        normal_or_visual = self.vi_mode_normal_or_visual(key, operator, operand, match_all)115        visual_line = self.vi_mode_visual_line(key, operator, operand, match_all)116        return self._check((normal_or_visual or visual_line), operator, operand, match_all)117    def vi_state_next_character_is_user_input(self, key, operator, operand, match_all):118        value = (self.state.expecting_user_input or119                 self.state.expecting_register)120        return self._check(value, operator, operand, match_all)121    def vi_state_expecting_user_input(self, key, operator, operand, match_all):122        value = self.state.expecting_user_input123        return self._check(value, operator, operand, match_all)124    def vi_state_expecting_register(self, key, operator, operand, match_all):125        value = self.state.expecting_register126        return self._check(value, operator, operand, match_all)127    def vi_mode_can_push_digit(self, key, operator, operand, match_all):128        motion_digits = not self.state.motion129        action_digits = self.state.motion130        value = motion_digits or action_digits131        return self._check(value, operator, operand, match_all)132    def vi_is_recording_macro(self, key, operator, operand, match_all):133        value = self.state.is_recording134        return self._check(value, operator, operand, match_all)135    def vi_in_key_namespace(self, key, operator, operand, match_all):136        has_incomplete_action = self.vi_has_incomplete_action('vi_has_incomplete_action', sublime.OP_EQUAL, True, False)137        if not has_incomplete_action:138            return False139        value = action_to_namespace(self.state.action) or action_to_namespace(self.state.motion)140        if not value:141            return False142        value = value == operand143        return value144        # return self._check(value, operator, True, match_all)145    def vi_can_enter_any_visual_mode(self, key, operator, operand, match_all):146        sels = self.state.view.sel()147        rv = True148        for sel in sels:149            # We're assuming we are in normal mode.150            if sel.b == self.state.view.size() and self.state.view.line(sel.b).empty():151                rv = False152                break153        if not rv:154            print("Vintageous: Can't enter visual mode at EOF if last line is empty.")155            utils.blink()156        return self._check(rv, operator, operand, match_all)157    def check(self, key, operator, operand, match_all):158        func = getattr(self, key, None)159        if func:160            return func(key, operator, operand, match_all)161        else:162            return None163    def _check(self, value, operator, operand, match_all):164        if operator == sublime.OP_EQUAL:165            if operand == True:166                return value167            elif operand == False:168                return not value169        elif operator == sublime.OP_NOT_EQUAL:170            if operand == True:171                return not value172            elif operand == False:...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
