Instead of changing the document contents, you should paint your navigation markers over the document using, for example, the HintManager class.
If you change the actual document contents, this will have many more consequences besides breaking undo and local history - for example, the document will be reparsed causing false syntax errors to be displayed; any other plugin or IntelliJ IDEA component watching for changes to the document will react to this; the document will be checked out from the VCS if the user is using a VCS such as Perforce that requires an explicit checkout operation; etc. TL/DR: don't do that.