This file is indexed.

/usr/include/codeblocks/ccmanager.h is in codeblocks-dev 16.01+dfsg-2+b1.

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
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/*
 * This file is part of the Code::Blocks IDE and licensed under the GNU Lesser General Public License, version 3
 * http://www.gnu.org/licenses/lgpl-3.0.html
 */

#ifndef CCMANAGER_H
#define CCMANAGER_H

#include "manager.h"

#ifndef CB_PRECOMP
    #include <wx/timer.h>
    #include "cbplugin.h"
#endif

class UnfocusablePopupWindow;
class wxHtmlLinkEvent;
class wxHtmlWindow;
class wxListEvent;
class wxListView;
class wxScintillaEvent;

/** code completion plugin manager
 *
 *  This class manages all kinds of code completion plugins. For example, the native C/C++ code
 *  completion plugin, the Fortran code completion plugin and Python code completion plugin.
 *  The ccmanager asks some informations from the managed ccplugins. The major value passes from the
 *  ccmanager and the ccplugins are CCCallTip and CCToken.
 *
 *  The CCToken is needed when ccmanager needs to fill a code suggestion list, it is the ccplugin's
 *  duty to supply a collection of CCTokens.
 *
 *  When user is entering some function call statement, CCCallTip is used to show the function
 *  information, and especially it can highlight the current function argument.
 *
 *  Another kind of tip is the tooltip, this is the tip window shown when mouse hover on a specified
 *  token(such as variable token), ccmanager queries this information by asking CCToken information
 *  from ccplugin.
 */
class DLLIMPORT CCManager : public Mgr<CCManager>, wxEvtHandler
{
    public:
        friend class Mgr<CCManager>;
        friend class Manager; // give Manager access to our private members

        /** get the ccPlugin instant for the cbEditor
         *  If the editor opened a c/c++ file, then it returns the native c/c++ ccPlugin.
         *  @param ed input editor, uses active editor if one is not passed; has (minimal) cache optimization
         */
        cbCodeCompletionPlugin* GetProviderFor(cbEditor* ed = nullptr);

        /** if the default set of characters that invoke calltip requests are not appropriate, register a new set */
        void RegisterCallTipChars(const wxString& chars, cbCodeCompletionPlugin* registrant);
        /** if the default set of characters that auto-launch codecomplete requests are not appropriate, register a new set */
        void RegisterAutoLaunchChars(const wxString& chars, cbCodeCompletionPlugin* registrant);

        /** let CCManager know that new results are available from cbCodeCompletionPlugin::GetDocumentation() */
        void NotifyDocumentation();
        /** let CCManager know that a change (e.g. active lexer is switched) may invalidate cached active ccPlugin */
        void NotifyPluginStatus();

        /** if for some reason you *need* to use wxScintilla::AutoCompShow(), call this instead so CCManager does not step on you */
        void InjectAutoCompShow(int lenEntered, const wxString& itemList);

        /** used by cbStyledTextCtrl to process ArrowUp and ArrowDown key press. It is not intended to be called by ccPlugins. */
        bool ProcessArrow(int key);
    private:
        CCManager();
        ~CCManager();

        /** event handler to list the suggestion, when a user press Ctrl-space (by default) */
        void OnCompleteCode(CodeBlocksEvent& event);
        /** event handlers to avoid tooltips getting stuck active */
        void OnDeactivateApp(CodeBlocksEvent& event);
        void OnDeactivateEd(CodeBlocksEvent& event);
        void OnEditorOpen(CodeBlocksEvent& event);
        void OnEditorClose(CodeBlocksEvent& event);

        /** hook to the editor, so that we know some specific chars were entered, then we can decide
         *  whether it time to show a calltip or suggestion list
         */
        void OnEditorHook(cbEditor* ed, wxScintillaEvent& event);

        /** mouse hover event */
        void OnEditorTooltip(CodeBlocksEvent& event);

        /** event handler to show the call tip, when user press Ctrl-Shift-Space */
        void OnShowCallTip(CodeBlocksEvent& event);

        /** event handler to show documentation, when user changes autocomplete selection */
        void OnAutocompleteSelect(wxListEvent& event);
        void OnAutocompleteHide(wxShowEvent& event);

        /** defer showing the calltip to avoid a crash issue, @see CCManager::OnDeferredCallTipShow */
        void OnDeferredCallTipShow(wxCommandEvent& event);
        /** defer canceling the calltip to avoid a crash issue, @see CCManager::OnDeferredCallTipShow */
        void OnDeferredCallTipCancel(wxCommandEvent& event);
#ifdef __WXMSW__
        /** intercept cbStyledTextCtrl scroll events and forward to autocomplete/documentation popups */
        void OnPopupScroll(wxMouseEvent& event);
#endif // __WXMSW__

        /** a link is clicked in the document window */
        void OnHtmlLink(wxHtmlLinkEvent& event);

        /** comment timer event handler for several timers */
        void OnTimer(wxTimerEvent& event);

        /** handle the CC related menu click */
        void OnMenuSelect(wxCommandEvent& event);

        void DoBufferedCC(cbStyledTextCtrl* stc);
        void DoHidePopup();
        void DoShowDocumentation(cbEditor* ed);
        void DoUpdateCallTip(cbEditor* ed);

        /** user click the next or previous small button of the tip window */
        enum Direction { Previous, Next };

        /** switch the tip window to the next item */
        void AdvanceTip(Direction direction);

        /** format tips by breaking long lines at (hopefully) logical places */
        void DoShowTips(const wxStringVec& tips, cbStyledTextCtrl* stc, int pos, int argsPos, int hlStart, int hlEnd);

        /** code completion as just insert some text in the editor, ask the smart indent plugin to adjust the indent */
        void CallSmartIndentCCDone(cbEditor* ed);

        typedef std::map< cbCodeCompletionPlugin*, std::set<wxChar> > CCPluginCharMap;
        CCPluginCharMap m_CallTipChars;    //!< chars each plugin is interested in for calltip state
        CCPluginCharMap m_AutoLaunchChars; //!< chars each plugin is interested in for autocomplete
        int m_EditorHookID;
        int m_AutocompPosition;  //!< location of caret when autocomplete timer starts, if caret is still there, launch autocomplete
        int m_CallTipActive;     //!< is CCManager currently displaying a calltip, and if so, where
        int m_LastAutocompIndex; //!< index of currently selected entry in autocomplete popup
        int m_LastTipPos;        //!< last location a tool/call tip was displayed
        int m_WindowBound;       //!< right-most boundary the documentation popup is allowed to stretch to
        bool m_OwnsAutocomp;     //!< do we control the current autocomplete popup?
        typedef std::vector<cbCodeCompletionPlugin::CCCallTip> CallTipVec;
        CallTipVec m_CallTips; //!< cached calltips
        CallTipVec::const_iterator m_CurCallTip;   //!< remember current choice
        std::map<int, size_t> m_CallTipChoiceDict; //!< remember past choices
        std::map<int, size_t> m_CallTipFuzzyChoiceDict; //!< remember past choices based on prefix
        wxTimer m_CallTipTimer;
        wxTimer m_AutoLaunchTimer;
        wxTimer m_AutocompSelectTimer;
        wxSize m_DocSize; //!< size of the documentation popup
        wxPoint m_DocPos; //!< location of the documentation popup
#ifdef __WXMSW__
        wxListView* m_pAutocompPopup;
#endif // __WXMSW__
        cbEditor* m_pLastEditor; //!< last editor operated on
        cbCodeCompletionPlugin* m_pLastCCPlugin; //!< the plugin handling m_pLastEditor
        UnfocusablePopupWindow* m_pPopup; //!< container for documentation popup
        wxHtmlWindow* m_pHtml;            //!< documentation popup
        int m_LastACLaunchState[2];
        std::vector<cbCodeCompletionPlugin::CCToken> m_AutocompTokens; //!< cached autocomplete list
};

#endif // CCMANAGER_H