This file is indexed.

/usr/share/gps/plug-ins/methods.py is in gnat-gps-common 6.1.1-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
"""List all primitive operations/methods of current entity

This script adds a contextual menu when you click on an Ada tagged
type or C++ class (or an instance of these).
The submenu will list all the primitive operations (aka methods) of
that object, and clicking on any of these will jump to the body of
that operation.

Worth noting in this example is the way the list of methods is
computed only once, and then stored in the context for later
reuse.
Also worth noting is how a dynamic contextual menu is created, and
can be set up to properly handle overloaded submenu entries, as might
happen when several methods have the same name.
"""


############################################################################
# No user customization below this line
############################################################################

import GPS


class Methods_Contextual (GPS.Contextual):

    def __init__(self):
        GPS.Contextual.__init__(self, "Methods")
        self.create_dynamic(on_activate=self.on_activate,
                            label="References/Methods of %e",
                            filter=self.filter,
                            factory=self.factory)

    def filter(self, context):
        # Store the methods in the context, so that we do not have to
        # recompute them if the menu is selected, and so that we can
        # handle overridden methods as well
        if isinstance(context, GPS.EntityContext) and context.entity():
            context.methods_list = context.entity().methods(
                include_inherited=True)

            # if we have an access to a tagged type, behave as if we had the
            # type itself
            if context.methods_list == [] \
               and context.entity().pointed_type():
                context.methods_list = context.entity(
                ).pointed_type().methods()

            return context.methods_list != []
        else:
            return False

    def factory(self, context):
        own = set(context.entity().methods())  # overridden methods
        context.methods_list.sort()
        result = []
        for m in context.methods_list:
            if m in own:
                result.append("%s" % m.name())
            else:
                result.append("%s (inherited)" % m.name())
        return result

    def on_activate(self, context, choice, choice_index):
        decl = context.methods_list[choice_index].body()
        buffer = GPS.EditorBuffer.get(decl.file())
        buffer.current_view().goto \
            (buffer.at(decl.line(), decl.column()))


def on_gps_started(hook_name):
    Methods_Contextual()

GPS.Hook("gps_started").add(on_gps_started)