def start_insert(self, where):
        """Enable insert mode and perform setups.

        Parameters
        ==========
        where (string)
            indicates where to begin inserting text.
        """
        ### enable insert mode
        self.enable_insert_mode()

        ### perform extra setups according to specific
        ### position from where to start inserting text

        ## if must start inserting text 'after' cursor
        ## position, just move cursor one character to the
        ## right in insert mode
        if where == "after":
            self.go_right_ins()

        ## if must start inserting text before the cursor,
        ## there's no need to do anything else
        elif where == "before":
            pass

        ## if must start inserting text above or below
        ## the current position of the cursor, call
        ## special method to perform extra setups

        elif where in ("above", "below"):
            self.add_line(where)

        ## there shouldn't possibly be another scenario,
        ## in which case we indicate it by raising an
        ## exception

        else:

            raise RuntimeError(
                (
                    "Entered 'else' block never supposed to"
                    " be entered; logic went wrong somewhere"
                )
            )
Enable insert mode and perform setups.

        Parameters
        ==========
        where (string)
            indicates where to begin inserting text.
        
nodezator/textman/editor/cursor/modes/normal.py