当前位置: 首页 > 面试题库 >

蚀行号状态行贡献项目如何实施?

宰父德馨
2023-03-14
问题内容

我需要更新状态行编辑器特定的信息。我已经有自己的实现,但是我想看看蚀贡献项目是如何实现的,它显示了状态行中行号/列位置的实现。谁能指出我在哪里可以找到源代码

预先感谢AlexG。


问题答案:

我一直在研究它,它涉及很多,而且我不确定我是否有完整的图片,但是万一这对某人有帮助…

将编辑器与对StatusLine(以及菜单和工具栏)的贡献绑定在一起的声明方式是通过IEditorActionBarContributor类。在plugin.xml中为编辑器类型声明该类-
通常为每个编辑器类型创建一个实例(相同编辑器类型的多个运行实例将共享一个IEditorActionBarContributor实例,并doSetActiveEditor()在激活时调用其方法),并将其处置当该类型的最后一个运行的编辑器关闭时。

让我们以一个示例为例,Eclipse中的默认文本编辑器如何更新状态行中的“插入/覆盖”信息(来自Eclipse 3.7)

默认的文本编辑器在org.eclipse.ui.editors的中被声明为plugin.xml (已剪裁一些行)为:

 <extension point="org.eclipse.ui.editors">
      <editor  name="%Editors.DefaultTextEditor"
            class="org.eclipse.ui.editors.text.TextEditor"
            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
            id="org.eclipse.ui.DefaultTextEditor">
      </editor>
 </extension>

TextEditorActionContributor是关键。我们感兴趣的是在父类BasicTextEditorActionContributor中实现的;它(静态)定义了4个状态字段(STATUS_FIELD_DEFS),并在内部将fStatusFields每个statusField(例如规范)的固定映射()存储到StatusLineContributionItem对象。当从Eclipse
UI调用时,它在方法的状态行(基本上是标题)中注册4个字段,contributeToStatusLine(IStatusLineManager statusLineManager)并且每次激活编辑器时,它将传递给doSetActiveEditor(IEditorPart part)-完整的StatusLineContributionItems
集,并准备了相应的actionHandlers。编辑者理解所有这一切,因为它实现了ITextEditorExtension.setStatusField()

对于AbstractTextEditor,它具有(内部类)类型的私有字段,该私有字段ToggleOverwriteModeAction调用

toggleOverwriteMode()->handleInsertModeChanged()->updateStatusField("InputMode")

编辑器将查看是否statusField具有该类别的 存储,如果是,它将进行调用IStatusField.setText("Insert" / "Overwrite") ,这将导致状态行消息的更新。

这是一个示例,但我想它提供了一个大致的思路:的实例EditorActionContributor,绑定到编辑器类型,保留要更新的StatusLineContributionItem的列表,并且当相应状态更改时,编辑器必须写入此列表的对象。
。这样,编辑器便与状态行分离(它不知道是否/如何在UI中显示状态更改)。



 类似资料:
  • 账户已经建立好了,现在我们来了解一些能帮助你对现有的项目做出贡献的知识。 派生(Fork)项目 如果你想要参与某个项目,但是并没有推送权限,这时可以对这个项目进行“派生”。 派生的意思是指,GitHub 将在你的空间中创建一个完全属于你的项目副本,且你对其具有推送权限。 Note 在以前,“fork”是一个贬义词,指的是某个人使开源项目向不同的方向发展,或者创建一个竞争项目,使得原项目的贡献者分裂

  • 描述如何向一个项目贡献的主要困难在于完成贡献有很多不同的方式。 因为 Git 非常灵活,人们可以通过不同的方式来一起工作,所以描述应该如何贡献并不是非常准确 - 每一个项目都有一点儿不同。 影响因素包括活跃贡献者的数量、选择的工作流程、提交权限与可能包含的外部贡献方法。 第一个影响因素是活跃贡献者的数量 - 积极地向这个项目贡献代码的用户数量以及他们的贡献频率。 在许多情况下,你可能会有两三个开发

  • 文档更新 如果修改了组件代码,需要在组件目录的metas.yml加上changes,直接使用next作为版本号(如果已经存在该版本号,则直接添加变更条目即可)。 中括号内为变更类型,可选值 fix enhance feature change 比如: changes: next: en: - '[fix] fix *** bug #issueId' - '[fe

  • 在 Github 上 Fork 项目到自己的仓库。 将 fork 后的项目拉到本地: git clone https://github.com/<user-name>/kubernetes-handbook。 新建一个分支,并添加或编辑内容:git checkout -b new-branch。 提交并推送到 github:git commit -am "comments"; git push。

  • 我们非常欢迎您的贡献和加入,无论是微不足道的清理或大的新功能。我们希望为每个编程语言提供高质量、有良好文档的代码。 这也不是代码是唯一有贡献项目的方式。我们非常重视文档、与其他项目的集成,并欣然接受这些方面的改进。 联系我们 Nacos Gitter-https://gitter.im/alibaba/nacos Nacos 微博-https://weibo.com/u/6574374908 Na

  • 在Github上Fork到自己的仓库 将fork后的项目拉到本地: git clone https://github.com/<user-name>/sdn-handbook 新建一个分支,并添加或编辑内容:git checkout -b new-branch 提交并推送到github:git commit -am "comments"; git push 在Github上提交Pull Reque