java - 工具在 Eclipse 插件开发中延迟输出

标签 java eclipse eclipse-plugin eclipse-rcp jobs

我正在为 Eclipse 开发插件。它将运行我的 clang 工具。在 clang 工具中,我正在编写简单的传递来检查每个 case 和 default 语句都必须有 break 语句。

我正在使用进程生成器运行我的 clang 工具。 我正在使用作业 API 来运行我的工具并使用 Display 类来打印错误。

当我运行我的插件时,我遇到了一些问题。 假设我评论了 case 或default 语句之一的break 语句,它应该在控制台中打印错误,即每个case 和default 语句都必须有break 语句。 在我输入其他内容或一些空格或尝试在我的评论后取消注释后,出现打印错误。 同样,当我取消注释时,它不应该打印错误,但它正在打印,但是当我输入某些内容或一些空格或尝试注释时,错误就会消失。

以下是我的代码的链接

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

下图显示了我正在开发插件的 Eclipse 控制台上未打印错误的第一种情况。 enter image description here 这显示了我正在开发插件的 Eclipse 控制台上的第二个案例打印错误。 enter image description here

这方面有什么帮助吗?

编辑: 我希望我的插件在控制台 View 上(而不是在开发控制台上)输出一些内容,或者在文本编辑器的装订线上输出一些点类型的内容,当我单击或悬停在该点上时,我想显示一些带有错误消息的弹出窗口.

我尝试通过使用此链接 https://wiki.eclipse.org/FAQ_How_do_I_write_to_the_console_from_a_plug-in%3F 打包控制台来在控制台 View 上打印消息 它有效,但新问题是,我将焦点从文本编辑器转移到了我创建的控制台,因此我无法测试我提到的问题。

对不起,我太期待了。

下图显示文本编辑器失去了对控制台 View 的焦点,并且您提到的按钮不在控制台 View 中,但在我正在编写代码的 Eclipse 控制台中。 enter image description here

最佳答案

当我按下 Ctrl+s 时,以下按键方法和 addKeyListener 不起作用。为了获取保存事件,我们必须使用带有保存命令的 ICommandService。

((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 编辑器的当前 Activity 文件上运行我的工具,我正在使用 IPartService 服务。

以下是我的代码链接

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

工作正常。如果有人发现任何问题请告诉我。

关于java - 工具在 Eclipse 插件开发中延迟输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59985275/

相关文章:

java - 每当我点击播放按钮时,它就会开始播放同一首歌曲(上一首歌曲也在播放),它会无限次播放

Java 从 JsonArray 获取一个 JSONObject

java - 无法打开从 Eclipse 中的基类添加到接口(interface)的方法的实现

java - 按钮的 setOnClickListener 不起作用

java - 插件在 Eclipse 中不生效

java - 在 PostgreSql 中批量更新或删除哪个更有效?

java - Spring Webflow 最佳实践

python - Pydev 找不到 matplotlib 模块

java - Eclipse 插件 - TableViewer 是否适合需要多个表时

java - Eclipse 无法关闭 BEA WebLogic 服务器