dhaumann added a comment.
This is already an excellent patch. The API documentation is already really nice. I have some minor suggestions (see inline comments in patch). Besides that, I wonder whether this should really be a View extension interaface. Currently, this interface is implemented by the KTextEditor::Document, while the API documentation mentions this interafce is a View extension interface. I would prefer a View extension interface. Could you provide an updated revision of this patch? And also: I think we have to discuss unit tests as well - since such kind of code will break otherwise when we have to change related code parts. Would be nice to have a discussion about this already now. INLINE COMMENTS > katedocument.cpp:5316-5320 > + // Common cases first > + switch (m_inlineNoteProviders.size()) { > + case 0: return {}; > + case 1: return m_inlineNoteProviders.first()->inlineNotes(line); > + } This look like premature optimization. I would prefer to delete this "common cases first" block. Except if this turned out to be a bottleneck already? > inlinenoteinterface.h:49 > + * property. > + * > + * To register as inline note provider, call registerInlineNoteProvider() > with It would be nice to maybe include a picture here: Put a png into ktexteditor/docs/pics/ and use it like this: - \image html inlinenotes.png "Inline note showing a CSS color" > inlinenoteinterface.h:53 > + * your inline note provider by calling unregisterInlineNoteProvider(). > + * > + * \section inlinenote_access Accessing the InlineNoteInterface Could you add this note: \note A InlineNoteProvider instance can be reused/shared by multipe views, just make sure to unregister the provider from \e all views before deleting the provider. > inlinenoteinterface.h:117 > + */ > + virtual int column() const = 0; > + I would prefer virtual KTextEditor::Cursor position() const = 0; This way, a InlineNote contains not only the column, but ALL information (line + column) that defines the position of the note. > inlinenoteinterface.h:155 > + * > + * InlineNoteProvider is object that can be queried for inline notes in the > + * document. It emits signals when the notes change and should be queried > again. InlineNoteProvider is _a_ object that can be ... (here is 'a' missing) > katerenderer.cpp:773 > + qreal x = > range->viewLine(viewLine).lineLayout().cursorToX(column) - xStart; > + int textLength = range->length(); > + if (column == 0 || column < textLength) { Please use const for variables that do not change anymore: const int textLength = ... REPOSITORY R39 KTextEditor REVISION DETAIL https://phabricator.kde.org/D12662 To: michalsrb, #ktexteditor Cc: dhaumann, cullmann, ngraham, brauch, #frameworks, michaelh, kevinapavew, bruns, demsking, sars