Инструмент задерживает вывод в eclipse plugin developmnt - PullRequest
0 голосов
/ 30 января 2020

Я разрабатываю плагин для затмения. Это запустит мой инструмент лязга. В инструменте clang я пишу простой проход, чтобы проверить, что каждый оператор case и default должен иметь оператор break.

Я запускаю инструмент clang, используя построитель процессов. Я использую API задания, чтобы запустить мой инструмент, и класс Display, чтобы напечатать ошибку.

, когда я запускаю свой плагин, я столкнулся с некоторой проблемой. Допустим, я прокомментировал свой оператор break одного из операторов case или default, в консоли должно появиться сообщение об ошибке, что каждый оператор case и default должен иметь оператор break. это ошибка печати после того, как я ввожу что-то другое или пробел или пытаюсь раскомментировать после моего комментария. Точно так же, когда я делаю комментарий, он не должен печатать ошибку, но печатает, но опять же, когда я набираю что-то или пробел или пытаюсь комментировать, ошибка исчезает.

следующая ссылка моего кода

https://github.com/sunilsarode/eclipse_plugin/blob/master/ccchecker/src/ccchecker/handlers/SampleHandler.java

На следующем изображении показан первый случай, когда не печатается ошибка на моей консоли Eclipse, на которой я разрабатываю плагин. enter image description here и это показывает, что вторая ошибка печати случая на моей консоли затмения, на которой я разрабатываю плагин. enter image description here

какая-либо помощь в этом?

РЕДАКТИРОВАТЬ: Я хочу, чтобы мой плагин выводил что-то в виде консоли (не на стадии разработки) консоль) или что-то вроде точки на водостоке текстового редактора, и когда я нажимаю или наводю курсор на эту точку, я хочу показать всплывающее окно с сообщением об ошибке.

Я пытался напечатать сообщение в виде консоли: Создание консоли с помощью этой ссылки https://wiki.eclipse.org/FAQ_How_do_I_write_to_the_console_from_a_plug-in%3F работает, но появилась новая проблема: я потерял фокус из текстового редактора на созданную мной консоль, и из-за этого я не могу проверить проблему, о которой я упоминал в вопросе.

Извините, я ожидаю.

На следующем рисунке показано, что текстовый редактор потерял фокус на виде консоли, а упомянутая вами кнопка отсутствует на виде консоли, а на консоли затмения, для которой я пишу код. enter image description here

1 Ответ

0 голосов
/ 14 февраля 2020

После нажатия клавиши и addKeyListener не работает, когда я нажимаю Ctrl + s. Чтобы получить событие сохранения, мы должны использовать ICommandService с командой save.

((StyledText) editor.getAdapter(Control.class)).addKeyListener(new KeyListener() {

            @Override
            public void keyPressed(KeyEvent keyEvent) {

                if (((keyEvent.stateMask & SWT.CTRL) == SWT.CTRL) && (keyEvent.keyCode == 's')) {
                    // System.out.println("From Display I am the Key down !!" + keyEvent.keyCode);
                    Job job = new Job("My job") {

                        @Override
                        protected IStatus run(IProgressMonitor arg0) {
                            // TODO Auto-generated method stub
                            StringBuilder builder = runCCChecker(path);

                            syncWithUi(builder);
                            return Status.OK_STATUS;
                        }

                    };

                    job.setUser(true);
                    job.schedule();

                }

            }

            @Override
            public void keyReleased(KeyEvent arg0) {

            }
        });

Для отображения предупреждения в каждой строке я использую интерфейс IMarker. Чтобы запустить мой инструмент только в текущем активном файле редактора Eclipse, в котором я запускаю команду сохранения, я использую сервис IPartService.

по ссылке моего кода

https://github.com/sunilsarode/eclipse_plugin/blob/master/ccchecker/src/ccchecker/handlers/SampleHandler.java

Работает нормально. Если кто-нибудь найдет какую-либо проблему, пожалуйста, дайте мне знать.

...