As I explained in CSSCodeHints comment, it can't be delayed and have all the code in insertHint() since by the time the user selects the hint from the list, we can't tell whether the user is inserting a new one or replacing an existing one. The logic needs to be initialized (using ``exclusion``) when the user explicitly starts a tag hint session by typing ``<`` or implicitly starts a tag hint or attribute hints session by pressing Ctrl+Space at the very first position of a tag or an attribute name. And ``exclusion`` also needs to be updated to capture any left/right arrow key that invalidate the ``exclusion` (which is done in ``hasHint()`` and ``getHint()``).