dhaumann requested changes to this revision. dhaumann added a comment. This revision now requires changes to proceed.
The KTextEditor::Command implementation is wrong, see my other comments. Please fix this first :-) INLINE COMMENTS > plugin_kateopenselection.cpp:80 > +{ > + return new PluginViewKateOpenSelection(this,mainWindow); > +} A PluginViewKateOpenSelection instance is created here for every KTextEditor::MainWindow - this is ok and works as designed / intended. However, PluginViewKateOpenSelection inherits KTextEditor::Command, which itself registers in its constructor with the command "open-selection" in the Kate's command line. Now when you create multiple MainWindows in Kate (View > New Window), then you will add *the same* "open-selection" command twice, which is wrong. In short: PluginViewKateOpenSelection must not inherit KTextEditor::Command. Instead, the PluginKateOpenSelection should inherit it. > plugin_kateopenselection.cpp:107 > + if (selection.isEmpty()) { > + const KTextEditor::Cursor &cursor = editView->cursorPosition(); > + const QString line = editView->document()->line(cursor.line()); Please factor this code part out into a separate function: QString findPathAtCursor(...). Reasoning: Currently, you are mixing different levers of logic, i.e. slotOpenSelection() should open the selection, but not itself do the work to find the path under a cursor. REPOSITORY R40 Kate REVISION DETAIL https://phabricator.kde.org/D22199 To: nononux, dhaumann Cc: dhaumann, pino, yurchor, kwrite-devel, kde-doc-english, gennad, fbampaloukas, domson, michaelh, ngraham, demsking, skadinna, cullmann, sars