Encouragement was using the presence of an ITextDocument as the
predicate for whether or not a given ITextView is eligible for
encouragement tips Having an ITextDocument means a given ITextView is
backed by a physical file and saving such an item should be encouraged.
The problem is windows like the 'Immediate Window' are backed by
physical files (esp with Roslyn). These files are implementation
details though and saving them has no benefit to the user. In these
cases the save operation isn't even directly surfaced to the user. It
happens as a consequence of a non-save like action (in the case of the
'Immediate Window', it happens on every key stroke). This causes
Encouragement to be displayed at unexpected times
This change fixes this problem by changing the predicate slightly. We
now check for ITextDocument (has ITextView has a physical backing file)
and the Document role (this ITextView is being displayed as a document).
Encouragement was using the presence of an ITextDocument as the predicate for whether or not a given ITextView is eligible for encouragement tips Having an ITextDocument means a given ITextView is backed by a physical file and saving such an item should be encouraged.
The problem is windows like the 'Immediate Window' are backed by physical files (esp with Roslyn). These files are implementation details though and saving them has no benefit to the user. In these cases the save operation isn't even directly surfaced to the user. It happens as a consequence of a non-save like action (in the case of the 'Immediate Window', it happens on every key stroke). This causes Encouragement to be displayed at unexpected times
This change fixes this problem by changing the predicate slightly. We now check for ITextDocument (has ITextView has a physical backing file) and the Document role (this ITextView is being displayed as a document).
closes #19