Find declaration with interfaces lazarus / 9-Editor ---------------------------------------------------------------------- kokesssss · 2016-10-27 13:05 Hi, I'm using pascal interfaces in my new project heavily, which turns code navigation feature to be a bit annoying. When I call an object instance method via interface and do a ctrl+click on that call, it shows be the method declaration in interface (which is logical but not practical). Eclipse (for example) has a feature called Quick type hierarchy, which shows implementations of given interface method. It also has Open implementation feature, which brings a dialog where user selects which implementation of interface method he wants to jump to. Do someone know about a way how to do something similar in Lazarus? Either natively, via package or via some workaround? Thanks ---------------------------------------------------------------------- Thaddy · 2016-10-27 13:14 ctrl-shift-downarrow jumps to implementation. ctrl-shift-uparrow jumps back to the interface section for a given piece of code.. Even if inside a procedure, function or method body, which I think even eclipse can't do.. (eclipse is much younger) ctrl-space or ctrl-j will open a searchable dropbox..... Code navigation is way better than in eclipse   and much, much faster.... Project inspector and components inspector also have powerful filtered search/navigate options..... This is all very well documented. ---------------------------------------------------------------------- kokesssss · 2016-10-27 13:27 Thanks, I know these shortcuts, the question is about different kind of interface Let me add a code example: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i  Type  IFoo = Interface    [SOME_GUID];     Procedure Foo;    Procedure Bar;  End;   TFirst = Class(TObject, IFoo)    Procedure Foo;    Procedure Bar;  End;   TSecond = Class(TObject, IFoo)    Procedure Foo;    Procedure Bar;  End; // Implementation of the methods is irrelevant, ommiting them// Now some procedure using the interface Procedure Test(aFoo: IFoo);Begin  aFoo.Bar;End;   When I ctrl+click or run FindDeclaration on Bar word in procedure Test, code navigator puts me on the Procedure Bar; line in IFoo declaration. Ctrl+shift+arrow does nothing, because there's no procedure implementation - it's an interface. I'd like to show existing implementations of method Bar and choose where to jump - to TFirst.Bar or TSecond.Bar. That's what aforementioned quick type hierarchy does. Is there a way? Thanks ---------------------------------------------------------------------- Thaddy · 2016-10-27 13:31 right click on ifoo and choose find implementation, resp declaration. Note that implementation depends on context of the implementing class you are working on, not all implementations. ---------------------------------------------------------------------- kokesssss · 2016-10-27 13:45 Hi, Please see the attached screenshot, no such option there. It is Lazarus 1.6. I also tried on the declaration and on Interface itself. All declarations and implementations are in one file so project shouldn't influence this by some wrong path settings/missing files. Thx ---------------------------------------------------------------------- Thaddy · 2016-10-27 13:48 It clearly says find declaration of bar...... ---------------------------------------------------------------------- kokesssss · 2016-10-27 14:08 Yes, that will find the declaration - i.e. it will jump to Procedure IFoo.Bar declaration. But I'd like to see somehow a list of implementations of IFoo.Bar (or at least classes implementing IFoo). Right clicking on IFoo and selecting Find declaration of IFoo tells Error: identifier not found: IFoo. ---------------------------------------------------------------------- kokesssss · 2016-10-27 14:14 Eclipse example showing what I'd like to achieve. I'm looking for some similar feature, need not to be the same (and need not to be that slow like in eclipse ;-) ) Thanks