コード例 #1
0
        private static bool ProcessInit()
        {
            try
            {
                var gateway = PluginBase.GetGatewayFactory().Invoke();

                // загружаем настройки плагина
                _settings = SettingsParser.LoadMapping(_iniConfig);

                // чтобы SCN_MODIFIED вызывался только, если был добавлен или удален текст
                gateway.SetModEventMask((int)SciMsg.SC_MOD_INSERTTEXT | (int)SciMsg.SC_MOD_DELETETEXT);

                // NPPN_READY вызывается перед последним вызовом NPPN_BUFFERACTIVATED, поэтому нужно инициализировать SearchEngine
                SearchEngine.Reload(_settings, gateway.GetFullCurrentPath());

                // инициализация обработчика кликов мышкой
                UserInputHandler.Reload(HandleMouseEvent, OnKeyboardDown);

                // инициализация поддержки кнопок navigate forward/backward
                NavigationHandler.Reload(gateway.GetCurrentLocation());

                // инициализация поддержки подсветки ссылок
                _linksHighlighter?.Dispose();
                _linksHighlighter = new LinksHighlighter(gateway, _settings);

                // при запуске NPP вызывается миллиард событий, в том числе и интересующие нас NPPN_BUFFERACTIVATED, SCN_MODIFIED, etc. Но их не нужно обрабатывать до инициализации.
                _isPluginInited = true;
                return(true);
            }
            catch (Exception e)
            {
                Logger.Error(e.Message, e, true);
                return(false);
            }
        }