CN116149629A - 编辑代码的方法和装置 - Google Patents

编辑代码的方法和装置 Download PDF

Info

Publication number
CN116149629A
CN116149629A CN202111386829.6A CN202111386829A CN116149629A CN 116149629 A CN116149629 A CN 116149629A CN 202111386829 A CN202111386829 A CN 202111386829A CN 116149629 A CN116149629 A CN 116149629A
Authority
CN
China
Prior art keywords
node
path
nodes
window
candidate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111386829.6A
Other languages
English (en)
Inventor
肖剑
刘金华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111386829.6A priority Critical patent/CN116149629A/zh
Publication of CN116149629A publication Critical patent/CN116149629A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本申请提供了一种编辑代码的方法和装置,涉及开发辅助工具领域,该方法包括:在代码编辑窗口中显示第一窗口,第一窗口包括至少一条候选路径,至少一条候选路径中的每条候选路径包括一个或多个节点;检测用户对第一窗口的第一操作,第一操作用于从至少一条候选路径中确定目标路径;响应于第一操作,在代码编辑窗口中生成目标路径。上述技术方案可以一次性补全多个节点,有助于提升用户的开发效率和体验。

Description

编辑代码的方法和装置
技术领域
本申请实施例涉及计算机技术领域,特别地,涉及一种编辑代码的方法和装置。
背景技术
代码补全技术一直是软件工程领域的研究热点之一,该技术可以极大减少程序员的工作量,提升开发效率、质量及体验。当前所有主流集成开发环境(integrated developenvironment,IDE)的核心功能中均包括了代码补全功能。
现有的代码补全技术可以利用描述文件对代码文件进行代码编辑,通过精确匹配光标位置在描述文件语义树中的相对位置,从而编辑光标位置的节点的代码,对其进行补全。
然而,大部分的代码文件的语义都比较复杂,用户在该类代码文件中使用代码补全功能进行代码编辑时,普遍存在工作效率低下的问题。
发明内容
本申请提供一种编辑代码方法和装置,可以一次性补全多个节点,有助于提升用户的开发效率和体验。
第一方面,提供了一种编辑代码的方法,包括:在代码编辑窗口中显示第一窗口,所述第一窗口包括至少一条候选路径,所述至少一条候选路径中的每条候选路径包括一个或多个节点;检测用户对所述第一窗口的第一操作,所述第一操作用于从所述至少一条候选路径中确定目标路径;响应于所述第一操作,在所述代码编辑窗口中生成所述目标路径。
根据该技术方案,可以一次性补全多个节点,例如一次性补全一条路径上的全部节点,避免了用户需要在不同位置进行多次代码补全,提高了用户编写代码的效率、质量,节省时间和精力,提升用户体验。
结合第一方面,在一种可能的实现方式中,所述方法还包括:检测用户的第二操作;所述在代码编辑窗口中显示第一窗口包括:响应于所述第二操作,在所述代码编辑窗口中显示所述第一窗口。
用户可以根据需要使用本申请提供的编辑代码的方法。
结合第一方面,在一种可能的实现方式中,所述第二操作为输入字符、输入命令、输入快捷键、输入快捷键组合和点击菜单调用中的任意一项操作。
结合第一方面,在一种可能的实现方式中,所述代码编辑窗口包括定位节点;所述在所述代码编辑窗口中生成所述目标路径,包括:从所述定位节点开始,在所述代码编辑窗口中生成所述目标路径。
应理解,该代码编辑窗口用于编写待编写文件,代码编辑窗口中的代码即为待编写文件中已经编写的代码。定位节点可以理解为待编辑窗口中光标位置所在的节点。
在该代码编辑窗口中生成该目标路径,是将该目标路径直接替换代码编辑窗口中的定位节点。或者,删除代码编辑窗口中的定位节点,再生成所述目标路径。或者,根据目标路径与代码编辑窗口中的定位节点,确定二者之间缺失的路径,生成所述缺失的路径。
还应理解,当光标处于某条路径的中间的节点处时,也就是说,当定位节点下属一个或多个已编写的子孙节点时,在该代码编辑窗口中生成该目标路径,是将该目标路径直接替换代码编辑窗口中的定位节点及其下属子孙节点。或者,删除代码编辑窗口中的定位节点及其下属子孙节点,再生成所述目标路径。或者,根据目标路径与代码编辑窗口中的定位节点及其下属子孙节点,确定二者之间缺失的路径,生成所述缺失的路径。
结合第一方面,在一种可能的实现方式中,所述至少一条候选路径中的每条候选路径的开始节点包括所述定位节点对应的字段。
结合第一方面,在一种可能的实现方式中,所述定位节点对应的字段为所述每条候选路径的开始节点的前缀。
这样可以提高候选路径的准确性,以为用户提供更可能被用户选择的路径。
结合第一方面,在一种可能的实现方式中,在所述检测用户对所述第一窗口的第一操作之前,还包括:检测用户对所述第一窗口的第三操作,所述第三操作为输入字符的操作;响应于所述第三操作,通过对所述至少一条候选路径进行筛选,得到一条或多条筛选后的候选路径,其中所述一条或多条筛选后的候选路径中的每条候选路径包括用户输入的字符;在所述第一窗口中显示所述筛选后的候选路径。
这样,用户可以在第一窗口中显示的多条候选路径中,进行进一步的筛选,以缩小候选路径的范围,特别是在候选路径很多时,该筛选操作可以提高代码编写的效率。
结合第一方面,在一种可能的实现方式中,在所述在代码编辑窗口中显示第一窗口之前,还包括:根据所述代码编辑窗口中的至少一个节点,从描述文件对应的第一路径集合中确定所述至少一条候选路径,其中所述代码编辑窗口用于编写待编写文件的代码,所述待编写文件与所述描述文件符合相同的语法结构。
应理解,用户正在根据该描述文件在代码编辑器中编写待编写文件,在编写待编写文件的过程中,待编写文件应该始终满足该描述文件所定义的规范,也就是说,待编写文件中的节点、节点与节点之间的关系、节点的相对位置都应与该描述文件中所描述的保持一致,使得待编写文件与描述文件符合相同的语法结构。
结合第一方面,在一种可能的实现方式中,所述代码编辑窗口包括定位节点;所述根据所述代码编辑器中的至少一个节点,从描述文件对应的第一路径集合中确定所述至少一条候选路径,包括:根据所述至少一个节点,从所述第一路径集合中确定至少一个候选节点,其中所述至少一个候选节点中的每个候选节点包括所述定位节点对应的字段;以所述至少一个候选节点中的每个候选节点为开始节点,从所述第一路径集合中确定所述至少一条候选路径。
结合第一方面,在一种可能的实现方式中,所述至少一个节点包括所述定位节点和所述定位节点的父节点;所述根据所述至少一个节点,从所述第一路径集合中确定至少一个候选节点,包括:根据所述定位节点的父节点,从所述第一路径集合中确定第一节点,其中所述第一节点与所述定位节点的父节点具有相同字段;根据所述定位节点对应的字段,从所述第一节点的子节点中确定所述至少一个候选节点。
结合第一方面,在一种可能的实现方式中,所述至少一个节点包括所述定位节点至所述定位节点的根节点之间的全部节点;所述根据所述至少一个节点,从所述第一路径集合中确定至少一个候选节点,包括:根据所述定位节点的根节点至所述定位节点的父节点的路径,从所述第一路径集合中确定第一路径,所述第一路径与所述定位节点的根节点至所述定位节点的父节点的路径相同;根据所述定位节点对应的字段,从所述第一路径的终端节点的子节点中确定所述至少一个候选节点。
结合第一方面,在一种可能的实现方式中,所述代码编辑窗口包括定位节点,且所述定位节点为空;所述根据所述代码编辑窗口中的至少一个节点,从描述文件对应的第一路径集合中确定所述至少一条候选路径,包括:根据所述定位节点的父节点,从所述第一路径集合中确定第一节点,其中所述第一节点与所述定位节点的父节点具有相同字段;以所述第一节点的每个子节点为开始节点,从所述第一路径集合中确定所述至少一条候选路径。
第二方面,提供了一种编辑代码的方法,包括:在代码编辑窗口中显示第二窗口,所述第二窗口包括多个节点,所述多个节点用于指示描述文件对应的第一路径集合;检测用户对所述第二窗口的第四操作,所述第四操作用于从所述多个节点中确定目标节点;响应于所述第四操作,在所述代码编辑窗口中生成目标路径,其中所述目标路径的终端节点为所述目标节点,所述目标路径包括的节点属于所述代码编辑窗口中未配置的节点。
应理解,该代码编辑窗口用于编写待编写文件,代码编辑窗口中的代码即为待编写文件中已经编写的代码。
根据该技术方案,可以显示全部可进行代码编辑的节点,即未配置的节点,当用户从中选择目标节点后,可以一次性生成以该目标节点为终端节点的目标路径中的全部未配置的节点。这样,用户可直观地看到待编写文件中未配置的节点,并且可以一次性生成多个未配置的节点,提高了用户编写代码的效率、质量,节省时间和精力,提升用户体验。
结合第二方面,在一种可能的实现方式中,所述在所述代码编辑窗口中生成目标路径,包括:从所述第一路径集合中确定根节点至目标节点之间的路径;根据所述根节点至目标节点之间的路径与所述代码编辑窗口中已配置的节点,确定所述目标路径。
这样,可以一次性生成根节点至目标节点之间的路径中全部未配置的节点,提高了用户编写代码的效率、质量,节省时间和精力,提升用户体验。
结合第二方面,在一种可能的实现方式中,所述多个节点排列为树形结构或者多级目录结构。
结合第二方面,在一种可能的实现方式中,所述多个节点包括第一节点集合和第二节点集合,其中所述第一节点集合中的节点为在所述代码编辑窗口中已配置的节点,所述第二节点集合中的节点为在所述代码编辑窗口中未配置的节点。
结合第二方面,在一种可能的实现方式中,所述第二窗口包括第一标识符,所述第一标识符用于指示所述第二节点集合中的节点。
这样,第一标识符可以直观地提示用户哪些节点已配置,哪些节点未配置,有助于提高编写效率。
结合第二方面,在一种可能的实现方式中,所述第二窗口包括第二标识符,所述第二标识符用于指示所述多个节点中的每个节点的类型。
这样,第二标识符可以表示每个节点的类型,便于用户选择某一类型需要配置的节点。
结合第二方面,在一种可能的实现方式中,所述第二窗口包括第一控件,所述第一控件用于显示或隐藏所述第二节点集合中的节点。
这样,用户可以根据需要选择隐藏或显示未配置的节点,在需要代码编辑时,可以快速调出第二窗口进行编辑。
第三方面,提供了一种编辑代码的装置,所述装置包括:显示单元,用于在代码编辑窗口中显示第一窗口,所述第一窗口包括至少一条候选路径,所述至少一条候选路径中的每条候选路径包括一个或多个节点。检测单元,用于检测用户对所述第一窗口的第一操作,所述第一操作用于从所述至少一条候选路径中确定目标路径。生成单元,用于响应于所述第一操作,在代码编辑窗口中生成所述目标路径。
结合第三方面,在一种可能的实现方式中,所述检测单元还用于检测用户的第二操作;所述显示单元还具体用于响应于所述第二操作,在所述代码编辑窗口中显示第一窗口。
结合第三方面,在一种可能的实现方式中,第二操作为输入字符、输入命令、输入快捷键、输入快捷键组合和点击菜单调用中的任意一项操作。
结合第三方面,在一种可能的实现方式中,所述生成单元具体用于从所述代码编辑窗口中的定位节点开始,在所述代码编辑窗口中生成所述目标路径。
结合第三方面,在一种可能的实现方式中,所述至少一条候选路径中的每条候选路径的开始节点包括所述定位节点对应的字段。
结合第三方面,在一种可能的实现方式中,所述定位节点对应的字段为所述每条候选路径的开始节点的前缀。
结合第三方面,在一种可能的实现方式中,所述装置还可以包括确定单元;所述检测单元还用于检测用户对所述第一窗口的第三操作,所述第三操作为输入字符的操作;所述确定单元用于响应于用户对所述第一窗口的第三操作,通过对所述至少一条候选路径进行筛选,得到一条或多条筛选后的候选路径,其中所述一条或多条筛选后的候选路径中的每条候选路径包括用户输入的字符;所述显示单元还用于在第一窗口显示所述筛选后的候选路径。
结合第三方面,在一种可能的实现方式中,所述确定单元还用于根据所述代码编辑窗口中的至少一个节点,从描述文件对应的第一路径集合中确定所述至少一条候选路径,其中所述代码编辑窗口用于编写待编写文件的代码,所述待编写文件与所述描述文件符合相同的语法结构。
结合第三方面,在一种可能的实现方式中,所述确定单元还可以具体用于:根据所述至少一个节点,从第一路径集合中确定至少一个候选节点,其中所述至少一个候选节点中的每个候选节点包括定位节点对应的字段;以所述至少一个候选节点中的每个候选节点为开始节点,从所述第一路径集合中确定至少一条候选路径。
结合第三方面,在一种可能的实现方式中,所述确定单元还可以具体用于:根据所述定位节点的父节点,从第一路径集合中确定第一节点,其中第一节点与所述定位节点的父节点具有相同字段;根据所述定位节点对应的字段,从所述第一节点的子节点中确定所述至少一个候选节点。
结合第三方面,在一种可能的实现方式中,所述确定单元还可以具体用于根据所述定位节点的根节点至所述定位节点的父节点的路径,从第一路径集合中确定第一路径,所述第一路径与所述定位节点的根节点至所述定位节点的父节点的路径相同;根据所述定位节点对应的字段,从所述第一路径的终端节点的子节点中确定所述至少一个候选节点。
结合第三方面,在一种可能的实现方式中,所述确定单元还可以具体用于:根据所述定位节点的父节点,从所述第一路径集合中确定第一节点,其中第一节点与定位节点的父节点具有相同字段;所述确定单元还可以具体用于以所述第一节点的每个子节点为开始节点,从所述第一路径集合中确定所述至少一条候选路径。
第四方面,提供了一种编辑代码的装置,所述装置包括:显示单元,用于在代码编辑窗口中显示第二窗口,所述第二窗口包括多个节点,所述多个节点用于指示描述文件对应的第一路径集合。检测单元,用于检测用户对所述第二窗口的第四操作,第四操作用于从所述多个节点中确定目标节点。生成单元,用于响应于所述第四操作,在所述代码编辑窗口中生成目标路径,其中所述目标路径的终端节点为所述目标节点,所述目标路径包括的节点属于所述代码编辑窗口中未配置的节点。
结合第四方面,在一种可能的实现方式中,所述装置还可以包括确定单元,所述确定单元用于:从第一路径集合中确定根节点至目标节点之间的路径;根据所述根节点至目标节点之间的路径与所述代码编辑窗口中已配置的节点,确定所述目标路径。
结合第四方面,在一种可能的实现方式中,所述多个节点排列为树形结构或者多级目录结构。
结合第四方面,在一种可能的实现方式中,所述多个节点包括第一节点集合和第二节点集合,其中第一节点集合中的节点为在所述代码编辑窗口中已配置的节点,所述第二节点集合中的节点为在所述代码编辑窗口中未配置的节点。
结合第四方面,在一种可能的实现方式中,所述第二窗口包括第一标识符,所述第一标识符用于指示第二节点集合中的节点。
结合第四方面,在一种可能的实现方式中,所述第二窗口包括第二标识符,所述第二标识符用于指示多个节点中的每个节点的类型。
结合第四方面,在一种可能的实现方式中,所述第二窗口包括第一控件,所述第一控件用于显示或隐藏所述第二节点集合中的节点。
第五方面,提供了一种编辑代码的装置,包括用于执行上述第一方面或第一方面中任一种可能实现方式中的方法的模块或单元。该模块或单元可以是硬件电路,也可是软件,也可以是硬件电路结合软件实现。
第六方面,提供了一种编辑代码的装置,包括用于执行上述第二方面或第二方面中任一种可能实现方式中的方法的模块或单元。该模块或单元可以是硬件电路,也可是软件,也可以是硬件电路结合软件实现。
第七方面,提供了一种编辑代码的装置,包括:存储器,用于存储计算机程序;处理器,用于执行所述存储器中存储的计算机程序,以使得所述装置执行第一方面或第二方面中任意一种实现方式中的方法。
结合七方面,在一种可能的实现方式中,所述装置为代码编辑器。
第八方面,提供一种芯片系统,包括至少一个处理器,当程序指令在所述至少一个处理器中执行时,使得所述至少一个处理器执行上述第一方面或第二方面中任一种可能实现方式中的方法。
第九方面,提供了一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,当所述计算机可执行指令在计算机上运行时,使得所述计算机执行第一方面或第二方面中任意一种实现方式中的方法。
第十方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第二方面中任一种可能实现方式中的方法。
可以理解的是,上述提供的任一种编辑代码的装置、芯片系统、计算机可读存储介质或计算机程序产品等均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
附图说明
图1是本申请实施例提供的一种编辑代码的方法的示意性流程图。
图2是本申请实施例提供的另一种编辑代码的方法的示意性流程图。
图3是本申请实施例提供的一种描述文件示意图。
图4是图3示出的描述文件对应的树形结构的示意图。
图5是本申请实施例提供的一种代码编辑器界面的示意图。
图6是本申请实施例提供的一种编辑代码的方法的示意性流程图。
图7是本申请实施例提供的另一种编辑代码的方法的示意性流程图。
图8是本申请实施例提供的一种代码编辑器界面的示意图。
图9是本申请实施例提供的一种编辑代码的装置的示意性框图。
图10是本申请实施例提供的一种编辑代码的装置的示意性框图。
图11是本申请实施例提供的一种编辑代码的装置的示意性结构图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例中的方法可以应用于智能手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等电子设备上,本申请实施例对电子设备的具体类型不作任何限制,只要能够用于进行代码编辑即可,例如该电子设备包括集成开发环境。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
JSON、YAML、XML都是常用的数据序列化的语言,JSON、YAML、XML等格式的文档可以存储结构化的数据,常用于作为应用程序的配置文件(configuration file)。配置文件本质上是一种文本文档,可以为一些计算机程序配置参数和初始设置,例如HarmonyOS的config.json,AndroidManifest.xml,service.yml等。
描述文件(schemafile)是一种用于注释和校验配置文件的词汇表,提供了统一的数据规范语法。每种格式的配置文件都有自己的描述文件,例如JSON描述文件,YAML描述文件,XML描述文件。每种类型的描述文件和其所描述的配置文件的语法相同,例如JSONSchema也是符合JSON语法的JSON文件。
在应用程序开发过程中,用户常常使用JSON、XML或者YAML等格式的文档作为配置文件,为保证编写的配置文件能被正确配置和解析,用户需要根据描述文件来编写配置文件。例如,Java持久化框架MyBatis的配置文件是使用XML编写的,为保证该配置文件是合法的、有效的且MyBatis框架能够正确解析,用户需要根据XML描述文件来编写配置文件,保证该配置文件不仅符合XML的基本语法,而且符合XML描述文件定义的数据规范语法。
为方便理解,下面先对本申请中涉及的技术术语进行解释和说明。
集成开发环境(integrated development environment,IDE):是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。IDE集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。全部具备这一特性的软件或者软件套(组)都可以叫集成开发环境,如Visual Studio系列、C++Builder、Deveco Studio等。该程序可以独立运行,也可以和其它程序并用。
在计算机科学中,树(tree)是一种抽象数据类型(abstract data type,ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下特点:
(1)每个节点都只有有限个子节点或无子节点;
(2)没有父节点的节点称为根节点;
(3)每一个非根节点有且只有一个父节点;
(4)除了根节点外,每个子节点可以分为多个不相交的子树;
(5)树里面没有环路,根节点至任意节点的路径是唯一确定的。
在树形结构中,一般有以下几种类型的节点:
叶子节点或终端节点:不含子节点的节点;
父亲节点或父节点的:若一个节点含有子节点,则这个节点称为该子节点的父节点;
孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
子孙节点:以某节点为根的子树中任一节点都称为该节点的子孙节点。
兄弟节点:具有相同父节点的节点称为兄弟节点。
通常,我们认为某个描述文件或者配置文件中只含有一个根节点,部分格式的描述文件或配置文件的根节点在文件中就有体现。例如XML格式的文件有且只有一个根节点,每个根节点都有开始标记和结束标记,其他节点都包含在根节点内部。还有部分格式的描述文件或配置文件的根节点不直接体现在文件中。例如JSON格式的文件,文件本身可以包含多个并列的子树,该多个并列的子树都以文件本身为根节点。
代码补全技术可以基于用户的输入和已编写的代码,即时预测待补全代码的类名、方法名和代码片段,并为用户提供建议列表,用户选择建议列表中的补全选项之后,可以补全相应的代码。现有技术可以利用描述文件来实现配置文件的代码补全,通过精确匹配光标位置在描述文件语法树中的相对位置,从而对光标位置的节点进行代码编辑。但这种方式只能补全当前节点的缺失字段,若用户需要补全多个节点的话,需要进行多次补全操作,效率较低。并且,由于配置文件在大部分开发场景下的语义复杂,包含多层嵌套结构,例如,AndroidManifest.xml中的action配置,activity>inten>filter>action,HarmonyOSconfig.json中的方舟编译器配置,deviceConfig>phone>ark>flag,在利用代码补全实现代码编辑操作时,用户不仅需要在配置文件中进行多次代码补全,例如先补全activity再补全inten,然后补全filter,最终才能补全action,操作繁琐,而且需要了解配置文件完整的数据结构,才能在正确的位置进行代码编辑操作。
鉴于此,本申请提供了一种编辑代码的方法和装置,该编辑代码的方法可以一次性补全多个节点,例如可以例如一次性补全一条路径上的全部节点,避免了用户在代码编辑窗口中的不同位置需要进行多次代码编辑操作,从而提高了代码文件的编写效率、质量,节省时间和精力,提升用户体验。
下文中将结合附图对本申请实施例编辑代码的方法进行详细描述。
图1是本申请实施例提供的编辑代码的方法的一例示意性流程图。图1所示的方法包括步骤S110至步骤S130,下面对各个步骤进行介绍。
S110,在代码编辑窗口中显示第一窗口,第一窗口包括至少一条候选路径,至少一条候选路径中的每条候选路径包括一个或多个节点。
需要说明的是,代码编辑窗口用于编辑待编写文件的代码。用户可以在代码编辑窗口中输入字符以编写待编写文件的代码,也可以通过代码补全技术在代码编辑窗口中生成待编写文件的代码。代码编辑窗口中的节点为待编写文件的已配置的节点。
该待编写文件可以是配置文件,也可以是其他类型或格式的代码文件。例如,待编写文件可以是JSON、YAML、XML格式的配置文件,也可以是JSON、YAML、XML格式的其他类型的代码文件,或者也可以是其他格式的代码文件,本申请对待编写文件的类型不作限定。
在本申请实施例中,节点可以理解为描述文件或待编写文件中单个的语法单元。需要说明的是,描述文件中的关键字,例如“type”、“properties”,不属于节点。
在本申请实施例中,路径指的是一个或多个节点组成的有顺序、有层次的节点序列。示例性的,“a”的子节点有“b1”和“b2”,“b1”的子节点有“c1”和“c2”,“a>b1”或者“a>b1>c2”都是一条路径。应理解,当第一窗口包括的候选路径只有一个节点时,该候选路径也应被视为一条路径。
在一些实施例中,该至少一条候选路径中的每条候选路径的开始节点对应代码编辑窗口中的定位节点,该开始节点包括该定位节点对应的字段。
应理解,该开始节点应完整且连续地包括该定位节点对应的字段。也就是说,该开始节点对应的字段中有至少部分是与该定位节点对应的字段是完全相同的,包括组成字段的字符和字符的长度相同。示例性的,假设定位节点对应的字段为“abc”,则节点“dabc”包括定位节点对应的字段,而节点“adbc”则不包括定位节点对应的字段。
可选的,定位节点对应的字段为该每条候选路径的开始节点的前缀。
这样可以提高候选路径的准确性,以为用户提供更可能被用户选择的路径。可以理解的是,某个开始节点的前缀包括从第一个字符开始的若干个字符。示例性的,假设定位节点对应的字段为“abc”,则该“abc”可以认为是节点“abcd”的前缀,而不是节点“dabc”的前缀。实际上,节点“dabc”的前缀中第一个字符为“d”。
需要说明的是,定位节点为代码编辑窗口中的光标所在节点,也是用户在代码编辑器中正在编辑的节点,本申请对光标位置不作限定。也就是说,定位节点可以是在某条路径的叶子节点处,也可以是在某条路径中间的某个节点处。该定位节点可以是符合描述文件规范的节点,也可以是不符合描述文件规范的节点;可以是完整的节点,也可以是不完整的节点。该定位节点对应字段可以是字母或符号,也可以为空,本申请对此不作限定。
在一些实施例中,可以根据代码编辑窗口中的至少一个节点,从描述文件对应的第一路径集合中确定该至少一条候选路径。
本申请实施例中,代码编辑窗口中正在编辑的文件为待编写文件,该待编写文件与描述文件符合相同的语法结构。这里,第一路径集合包括了描述文件所描述的全部的路径,既包括完整的路径(如从根节点至叶子节点间的路径),也包括不完整的路径(如包括一个或多个节点的路径)。
该至少一条候选路径的确定方式有多种。
作为一个示例,若代码编辑窗口包括定位节点,且定位节点为空,则可以根据定位节点的父节点,从第一路径集合中确定第一节点,其中第一节点与定位节点的父节点具有相同字段。然后以第一节点的每个子节点为开始节点,从第一路径集合中确定至少一条候选路径。
也就是说,当代码编辑窗口中的定位节点为空时,可以根据定位节点的父节点确定定位节点在第一路径集合中的相对位置,即在第一路径集合中确定与定位节点的父节点对应的第一节点,则该第一节点的子节点为定位节点在第一路径集合中的相对位置。这样,可以枚举第一路径集合中以该第一节点为开始节点的候选路径。
作为另一个示例,可以根据上述至少一个节点,从第一路径集合中确定至少一个候选节点,其中至少一个候选节点中的每个候选节点包括定位节点对应的字段。以至少一个候选节点中的每个候选节点为开始节点,从第一路径集合中确定至少一条候选路径。
也就是说,可以直接根据定位节点,在第一路径集合中确定与包括该定位节点对应的字段的候选节点,然后在第一路径集合中枚举以该候选节点为开始节点的候选路径。
在该示例中,候选节点的确定方式有多种。
例如,至少一个节点包括定位节点和定位节点的父节点,则可以根据定位节点的父节点,从第一路径集合中确定第一节点,其中第一节点与定位节点的父节点具有相同字段。根据定位节点对应的字段,从第一节点的子节点中确定该至少一个候选节点。
也就是说,可以先根据定位节点的父节点确定定位节点在第一路径集合中的相对位置,即在第一路径集合中确定与定位的父节点对应的第一节点,则该第一节点的子节点为定位节点在第一路径集合中的相对位置。然后在第一节点的子节点中确定与该定位节点具有相同的字段的候选节点。此时,第一路径集合中的候选节点的父节点与代码编辑窗口中的定位节点的父节点具有相同的字段,且候选节点包括定位节点的字段,提升了候选节点的准确度。
再如,至少一个节点包括定位节点至定位节点的根节点之间的全部节点,则可以根据定位节点的根节点至定位节点的父节点的路径,从第一路径集合中确定第一路径,第一路径与定位节点的根节点至定位节点的父节点的路径相同。根据定位节点对应的字段,从第一路径的终端节点的子节点中确定该至少一个候选节点。
也就是说,可以先根据代码编辑窗口中的定位节点的根节点至定位节点的父节点路径,确定定位节点在第一路径集合中的相对位置,即在第一路径集合中确定与该路径相同的第一路径,则该第一路径的终端节点的子节点为定位节点在第一路径集合中的相对位置。然后在第一路径的终端节点的子节点中确定与该定位节点具有相同的字段的候选节点。此时,候选节点的根节点至候选节点的父节点之间的路径与定位节点的根节点至定位节点的父节点之间的路径相同,且候选节点包括定位节点对应的字段,极大地提升了候选节点的准确度。关于如何确定候选路径的内容,下文将结合图2进行更为详细的说明,在此暂不详述。
在一些实施例中,检测用户的第二操作,响应于第二操作,在代码编辑窗口中显示第一窗口。
因此,用户可以根据需要调用第一窗口,以进行代码编辑。在用户不需要代码编辑时,第一窗口隐藏,方便用户自行在代码编辑窗口中进行代码编写。
可选地,该第二操作可以为输入字符、输入命令、输入快捷键、输入快捷键组合或者点击菜单调用中的任意一项操作。其中,输入的字符可以是字母或符号。
当然,该第二操作也可以为其他的操作,例如,该第二操作也可以是用户自定义或者程序预定义的其他类型的操作,只要能够调出第一窗口以进行代码编辑的操作,均在本申请的保护范围内。
S120,检测用户对第一窗口的第一操作,第一操作用于从至少一条候选路径中确定目标路径。
其中,该第一操作是对至少一条候选路径中的候选路径的选择和确定操作。该第一操作可以是点击操作,例如用户可以通过鼠标点击确定目标路径,或者通过键盘选择并确定目标路径。
在一些实施例中,在检测用户对第一窗口的第一操作之前,还可以检测用户的第三操作,该第三操作为用户输入字符的操作,根据用户输入的字符对该至少一条候选路径进行筛选,使得筛选后的至少一条候选路径中每条候选路径包括用户输入的字符。相应地,第一窗口可以显示筛选后的候选路径。
也就是说,用户可以在第一窗口中显示的多条候选路径中,进行进一步的筛选,以缩小候选路径的范围,特别是在候选路径很多时,该筛选操作可以提高代码编写的效率。
S130,响应于第一操作,在代码编辑窗口中生成目标路径。
在本申请实施例中,生成的目标路径包括了该目标路径中的全部节点和必要的符号,使得生成的目标路径符合待编写文件对应格式的基本语法规范。
示例性的,在编写JOSN格式的文件时,利用本申请实施例提供的编辑代码的方法生成的目标路径应符合JSON的基本语法规范。假设目标路径为“a>b1>c1”,当前代码编辑窗口中的待编写文件为空,最终生成的目标路径为:
Figure BDA0003367364170000101
可选地,在一些实施例中,可以根据节点的数据类型确定该必要的符号。也就是说,该必要的符号与节点的数据类型相对应。示例性的,假设目标路径为“a>b1>c1”,且“c1”的数据类型为数组,代码编辑窗口中的待编写文件为空,最终生成的目标路径为:
Figure BDA0003367364170000102
Figure BDA0003367364170000111
在一些实施例中,当检测到用户的第一操作时,从代码编辑窗口中的定位节点开始,在代码编辑窗口中生成所述目标路径。
即,在执行本申请提供的代码编辑的方法时,是从定位节点开始生成目标路径中的节点。
应理解,当光标处于某条路径的终端节点处时,在该代码编辑窗口中生成该目标路径,是将该目标路径直接替换代码编辑窗口中的定位节点。或者,删除代码编辑窗口中的定位节点,再生成所述目标路径。或者,根据目标路径与代码编辑窗口中的定位节点,确定二者之间缺失的路径,生成所述缺失的路径。
或者,当定位节点下属一个或多个已配置的子孙节点时,在该代码编辑窗口中生成该目标路径,是将该目标路径直接替换代码编辑窗口中的定位节点及其下属子孙节点。或者,删除代码编辑窗口中的定位节点及其下属子孙节点,再生成所述目标路径。或者,根据目标路径与代码编辑窗口中的定位节点及其下属子孙节点,确定二者之间缺失的路径,生成所述缺失的路径。
本申请实施例中,可以根据代码编辑窗口中的内容,给用户提供联想路径建议列表,供用户从中选择一条路径进行补全,这样用户执行一次补全操作就可以补全多个节点,例如可以补全一条路径上的全部节点,有助于提升用户的开发效率和体验。
图2是本申请实施例提供的另一种编辑代码的方法的示意性流程图。图2所示的方法包括步骤S210至步骤S250,下面对各个步骤进行介绍。
S210,解析描述文件,获取描述文件对应的第一路径集合。
本申请实施例可以通过解析描述文件,获取描述文件中的全部节点,获取节点与节点之间的路径。本申请对解析描述文件的方式不予限制,例如,可以通过深度优先遍历的方式解析描述文件。
可选地,在一些实施例中,在S210中,也可以不解析描述文件,而是在执行S210之前通过外部解析工具对描述文件进行解析,得到该描述文件对应的第一路径集合后,将该第一路径集合导入到代码编辑器中。
这样,通过直接获取描述文件对应的第一路径集合的方式,而不用导入完整的描述文件,避免了加载描述文件和解析描述文件的过程,减少了资源开销,降低了内存和算力的负担。
应理解,描述文件对应的第一路径集合包括描述文件中的全部节点以及节点与节点之间的路径,也就是说,第一路径集合至少包括一条或多条路径,该第一条或多条路径中的每条路径包括一个或多个节点。
可选地,该第一路径集合可以是树形结构,也可以是多级目录结构,还可以是以节点和路径的形式存储的集合。
在本申请实施例中,节点可以理解为描述文件或待编写文件中单个的语法单元,例如图3所示的描述文件中,“a”、“b1”、“c1”、“d1”都属于节点。而描述文件中有一些预定义的关键字,例如,“type”、“properties”、“string”、“array”等,仅表示了节点的数据类型或者赋值范围等信息,这些关键字不属于本申请提供的方法中需要编辑的节点。描述文件中定义了上述节点后,根据描述文件编写的待编写文件中,也包括上述节点。通常,本领域技术人员可以通过阅读代码文件的结构进行判断一个语法单元是否是节点。
可选地,该第一路径集合还可以包括描述文件定义的节点的数据类型。
示例性的,图3示出了申请实施例提供的一种描述文件示意图。如图3所示,该描述文件中定义了JSON对象“a”、“b1”、“c1”,定义了字符串“b2”、“c2”、“d1”和“d2”,解析图3所示的描述文件可以获得该描述文件对应的第一路径集合。
为便于理解,图4示出了图3示出的描述文件对应的树形结构的示意图。如图4所示,该描述文件含有一个子树,该子树的根节点为“a”,“b1”和“b2”的父节点是“a”,“c1”和“c2”的父节点是“b1”,“d1”和“d2”的父节点是“c1”。即,“b1”和“b2”是“a”的子节点,c1、c2是b1的子节点,“d1”和“d2”是“c1”的子节点。其中,“d1”、“d2”、“c2”和“b2”是叶子节点。
需要说明的是,图3所示的描述文件和图4所示的树形结构仅作为一种示例,不应对描述文件或第一路径集合构成任何限制。例如,描述文件中还可以包括其他并列的子树,如以“a”的兄弟节点为根的其他子树。
需要说明的是,在本申请实施例中,解析描述文件、获取描述文件或者获取描述文件对应的第一路径集合都是在步骤S220之前完成的。
S220,检测用户的第二操作,该第二操作用于触发代码补全功能。
该第二操作可以为输入字符、输入命令、输入快捷键、输入快捷键组合或者点击菜单调用中的任意一项操作。其中,输入的字符可以是字母或符号。该第二操作也可以是用户自定义或者程序预定义的其他类型的操作,本申请对其不予限制。例如,用户输入双引号、单引号或者用户同时键入ctrl和shift键。
应理解,当检测到用户的第二操作时,开始执行步骤S230及后续步骤。
S230,根据代码编辑窗口中的至少一个节点,从描述文件对应的第一路径集合中确定至少一条候选路径。
需要说明的是,用户可以在代码编辑窗口中输入字符以编写待编写文件的代码,也可以通过代码补全技术在代码编辑窗口中生成待编写文件的代码,即代码编辑窗口用于编写待编写文件的代码。代码编辑窗口中的节点为待编写文件或代码编辑窗口中的已配置的节点。
在本申请实施例中,用户正在代码编辑窗口中根据该描述文件编写待编写文件的代码,待编写文件中的节点、节点与节点之间的路径、节点的相对位置、节点的数据类型都应与该描述文件中所定义的保持一致,使得待编写文件与描述文件符合相同的语法结构。
示例性的,假设用户根据图3所示的描述文件编写待编写文件,则待编写文件中的节点必须是“a”、“b1”、“b2”、“c1”、“c2”、“d1”、“d2”中的一个,且节点在待编写文件中的相对位置与描述文件中的相对位置应保持一致。即如果待编写文件中存在“c1”,则待编写文件中“c1”必须有父节点“b1”,且“b1”必须有父节点“a”,但是此时待编写文件中可以有“d1”、“d2”、“c2”和“b2”,也可以没有上述节点。
当待编写文件中存在描述文件中不存在的节点时,该节点及其下属子孙节点将被视为不合法的节点,以该节点为开始节点的路径将被视为不合法的路径。当然,并不排除人为或者其他因素导致的待编写文件中的某些字段不符合描述文件定义的规范的情况,在这种情况下,现有技术会通常会报错提示待编写文件中不合规范的节点,用户会进行针对性的修改。
在一些实施例中,可以根据代码编辑窗口中的定位节点,从描述文件对应的第一路径集合中确定至少一条候选路径。
具体的,遍历第一路径集合中的节点,查询与代码编辑窗口中的定位节点匹配的节点,将其确定为候选节点,其中该候选节点应包括该定位节点对应的字段。
示例性的,例如定位节点为“abc”,节点“dabc”与该定位节点匹配,而节点“adbc”与该定位节点不匹配,最后枚举第一路径集合中以该候选节点为开始节点的路径,将其确定为候选路径。
通过这种方式确定出的候选路径,其开始节点仅包括了定位节点对应的字段,其开始节点在描述文件中的相对位置与定位节点在待编写文件中的相对位置可以是一致的,也可以是不一致的,因此确定出的候选路径的范围较大、数量较多。
在一些实施例中,也可以根据定位节点和该定位节点的父节点,从描述文件对应的第一路径集合中确定至少一条候选路径。
具体的,遍历第一路径集合中的节点,查询与该定位节点的父节点具有相同字段的第一节点,然后遍历该第一节点的子节点,查询该第一节点的子节点中包括该定位节点对应字段的节点,将其确定为候选节点,最后枚举第一路径集合中以该候选节点为开始节点的路径,将其确定为候选路径。
通过这种方式确定出的候选路径,其开始节点不仅包括了定位节点对应的字段,且其开始节点的父节点与定位节点的父节点对应的字段相同,很大程度上提升了候选路径的准确性。
在一些实施例中,也可以根据定位节点和该定位节点的父节点至根节点之间的全部节点,从描述文件对应的第一路径集合中确定至少一条候选路径。
具体的,根据该定位节点的根节点至该定位节点的父节点之间的路径,在该第一路径集合中确定与其相同的第一路径,获取该第一路径的终端节点的子节点中包括该定位节点对应字段的节点,将其确定为候选节点,最后枚举第一路径集合中以该候选节点为开始节点的路径,将其确定为候选路径。
应理解,该定位节点的根节点至该定位节点的父节点之间的路径包括了该定位节点的父节点至根节点之间的全部节点。
或者,根据该定位节点的父节点至该定位节点根节点之间的全部节点,从定位节点的根节点开始逐层确定其在第一路径集合中对应的节点。例如,先确定定位节点的根节点在第一路径集合中对应的节点,再确定定位节点的根节点的子节点在第一路径集合中对应的节点,最终确定定位节点的父节点在第一路径集合中对应的第二节点。遍历该第二节点的子节点,查询该第二节点的子节点中包括该定位节点对应字段的节点,将其确定为候选节点。最后枚举第一路径集合中以该候选节点为开始节点的路径,将其确定为候选路径。
通过这种方式确定出的候选路径,其开始节点不仅包括了该定位节点对应的字段,而且该开始节点在描述文件中的相对位置与该定位节点在待编写文件中的相对位置也相同,因此极大的提升了确定出来的候选路径的准确性。
在一些实施例中,当定位节点为空时,或者当定位节点处为符号时,根据该定位节点的父节点,从描述文件对应的第一路径集合中确定至少一条候选路径。
具体的,遍历第一路径集合中的节点,查询与该定位节点的父节点具有相同字段的第一节点,以第一节点的每个子节点为开始节点,从第一路径集合中确定至少一条候选路径。
在一些实施例中,当定位节点为空时,或者当定位节点处为符号时,根据该定位节点的父节点至该定位节点的根节点之间的全部节点,从描述文件对应的第一路径集合中确定至少一条候选路径。
具体的,根据该定位节点的根节点至该定位节点的父节点之间的路径,在该第一路径集合中确定与其相同的第一路径,以该第一路径的终端节点的每个子节点为开始节点,从第一路径集合中确定至少一条候选路径。
在一些实施例中,当代码编辑窗口中的待编写文件为空时,即代码编辑窗口中不存在任意一个节点时,以第一路径集合中的子树的根节点为开始节点,从第一路径集合中确定至少一条候选路径。示例性的,假设描述文件对应的树形结构参考图4,当代码编辑窗口中不存在任意一个节点时,以子树的根节点“a”为开始节点,可以确定“a>b2”、“a>b1>c2”“a>b1>c1>d1”等候选路径。
在本申请实施例中,定位节点可能不符合描述文件定义的规范,在描述文件中查询不到与之匹配的节点,因此,候选节点的数量可以是零,或者候选节点的数量也可以是一个或多个。而一个候选节点可以对应一条或者多条候选路径,也就是说,候选路径的数量可以是零,或者候选路径的数量也可以是一条或多条。
在一些实施例中,该至少一条候选路径中的每条候选路径的开始节点对应代码编辑窗口中的定位节点,该开始节点包括该定位节点对应的字段。
应理解,当用户在代码编辑窗口的光标处输入字符时,定位节点对应的字段会随着用户的输入实时更新,因此候选节点也会随着定位节点对应的字段的更新而更新。即显示在代码补全窗口中的候选路径会随着用户在代码编辑窗口中输入的字符而实时进行更新。
在一些实施例中,定位节点对应的字段为每条候选路径的开始节点的前缀,即候选节点的前缀应与该定位节点对应的字段相同。
为方便理解,下面结合具体例子进行说明。示例性的,假设描述文件对应的第一路径集合的树形结构如下所示:
Figure BDA0003367364170000141
其中,“code”的子节点为“completion”和“helps”,“completion”的子节点有“you”、“yourself”、“complete”,“helps”的子节点为“tips”,“you”的子节点为“select”,“yourself”的子节点为“service”,“complete”的子节点为“classes”,“select”的子节点为“path”,其中“path”、“service”、“classes”、“tips”为叶子节点。
假设代码编辑窗口中存在的待编写文件如下所示:
Figure BDA0003367364170000142
Figure BDA0003367364170000151
其中,“|”代表光标,即定位节点为“yo”,该定位节点的父节点至该定位节点的根节点之间的路径为“code>completion”,确定“code>completion”在第一路径集合中对应的第一路径,该第一路径的终端节点的子节点有“you”、“yourself”和“complete”,其中节点“you”和“yourself”的前缀和该定位节点对应的字段“yo”相同,可以确定节点“you”和“yourself”为候选节点,分别枚举第一路径集合中以“you”和“yourself”为开始节点的路径,进而确定“you>select”、“you>select>path”和“yourself>service”为候选路径。
在一些实施例中,该候选路径以第一路径集合中的候选节点为开始节点,且以第一路径集合中的叶子节点为终端节点。应理解,该终端节点为候选路径的终端节点。
示例性的,如上述示例所示,可以确定节点“you”和“yourself”为候选节点,分别枚举第一路径集合中以“you”和“yourself”为开始节点,并且以叶子节点为终端节点的路径,即可以确定“you>select>path”和“yourself>service”为候选路径。
S240,将至少一条候选路径显示在第一窗口,以便用户从中确定目标路径。
该步骤与图1中的步骤S110类似,如下未详尽描述之处可以参考关于步骤S10的相关描述。这里为方便理解,结合了具体的示例进行说明。
示例性的,图5示出了本申请实施例提供的一种代码编辑器界面的示意图。如图5所示,该代码编辑器界面包括代码编辑窗口510和第一窗口520。用户可以在代码编辑窗口510中手动编写待编写文件,也可以通过代码补全技术在代码编辑窗口510中自动生成需要补全的代码。第一窗口520中包括候选路径,候选路径的名称显示为父节点1(+)>父节点2(+)>父节点3(+)>……>叶子节点(+),名称中的“+”号表示即将自动插入的节点,名称中的右括号“>”用于分割候选路径中的节点。
在一些实施例中,检测用户对第一窗口的第三操作,响应于该第三操作,对候选路径进行筛选,得到一条或多条筛选后的候选路径,在第一窗口中显示筛选后的候选路径。
可选的,该第三操作可以是用户在第一窗口中输入字符的操作
示例性的,假设在步骤S230中已经得到了候选路径“you>select”、“you>select>path”和“yourself>service”,例如用户输入了字母“s”,在候选路径“you>select”、“you>select>path”和“yourself>service”中都搜索到了“s”,代码补全窗口中能够显示全部候选路径,假设用户再次输入字母“el”,此时搜索序列为“sel”,由于“yourself>service”中没有出现“sel”序列,“yourself>service”被过滤掉,得到筛选后的候选路径为“you>select”和“you>select>path”,代码补全窗口中显示“you>select”和“you>select>path”两条路径,以供用户进行选择。
S250,从定位节点开始,在所述代码编辑窗口中生成所述目标路径。
步骤S250与步骤S130类似,具体可参考步骤S130的相关描述,为简洁,在此不再赘述。
图6示出了本申请实施例提供的一种编辑代码的方法的示意性流程图。图6所示的方法包括步骤S610至步骤S630,下面对各个步骤进行介绍。
S610,在代码编辑窗口中显示第二窗口,第二窗口包括多个节点,该多个节点用于指示描述文件对应的第一路径集合。
应理解,描述文件对应的第一路径集合包括描述文件中的全部节点以及节点与节点之间的路径。也就是说,第一路径集合至少包括一条或多条路径,该第一条或多条路径中的每条路径包括一个或多个节点。
应理解,该多个节点对应第一路径集合,因此第二窗口可以显示出该多个节点之间的连接关系或者在第一路径集合中的相对位置关系。
可选地,该第一路径集合还可以包括描述文件定义的节点的数据类型。
在一些实施例中,将多个节点排列成树形结构或者多级目录结构,该多个节点是第一路径集合中的节点。也就是说,将第一路径集合中的多个节点排列成树形结构或者多级目录结构。
这样,可以直观的展现出第一路径集合中的多个节点,方便用户从中选择需要配置的目标节点。
在本申请实施例中,代码编辑窗口是用户用来编写待编写文件的代码的窗口,代码编辑窗口中的节点为待编写文件的已配置的节点,将这些已配置的节点记为第一节点集合;不存在与代码编辑窗口中,但是存在于该第一路径集合中的节点为未配置的节点,将这些未配置的节点记为第二节点集合。
在一些实施例中,所述多个节点包括第一节点集合和第二节点集合,其中所述第一节点集合中的节点为在所述代码编辑窗口中已配置的节点,所述第二节点集合中的节点为在所述代码编辑窗口中未配置的节点。
在一些实施例中,第二窗口包括第一标识符,第一标识符用于指示代码编辑窗口中未配置的节点,即第一表示符用于指示第二节点集合中的节点。
这样,第一标识符可以直观地提示用户哪些节点已配置,哪些节点未配置,有助于提高编写效率。
在一些实施例中,第二窗口包括第二标识符,该第二标识符用于指示该多个节点中的每一个节点的类型。
这样,第二标识符可以表示每个节点的类型,便于用户选择某一类型需要配置的节点。
在一些实施例中,第二窗口包括第一控件,该第一控件用于显示或隐藏第二节点集合中的节点。
这样,用户可以根据需要选择隐藏或显示未配置的节点,在需要代码编辑时,可以快速调出第二窗口进行编辑。
在一些实施例中,检测用户的第五操作,响应于所述第五操作,显示或隐藏第二窗口。
可选地,该第五操作为输入命令、输入快捷键、输入快捷键组合或者点击菜单调用中的任意一项操作。
S620,检测用户对第二窗口的第四操作,该第四操作用于从所述多个节点中确定目标节点。
其中,该第四操作可以是对该多个节点中的节点的选择和确定操作,该第四操作可以是用户通过鼠标点击确定目标节点,也可以是用户通过键盘选择并确定目标节点,本申请对其不予限制。
用户确定目标节点可以是先选中一个或者多个节点,然后确定该一个或多个节点为目标节点。
可选地,该目标节点可以是一个或者多个。
S630,响应于第四操作,在代码编辑窗口中生成目标路径,其中目标路径的终端节点为目标节点,目标路径包括的节点属于代码编辑窗口中未配置的节点。
在代码编辑窗口中生成目标路径与步骤S130类似,具体可参考步骤S130的相关描述,为简洁,在此不再赘述。
应理解,目标路径应包括一个或多个代码编辑窗口中未配置的节点。
值得注意的是,可选地,当用户确定多个目标节点时,在代码编辑窗口中生成多条目标路径,其中多条目标路径为以多个目标节点中的每个目标节点为终端节点的路径,目标路径包括的节点属于代码编辑窗口中未配置的节点。
在一些实施例中,目标路径包括根节点至目标节点之间的路径中全部未配置的节点。
本申请实施例中,第二窗口可以显示全部可进行代码编辑的节点,即未配置的节点,当用户从中选择目标节点后,可以生成以目标节点为终端节点的路径。这样,用户可直观地看到待编写文件中未配置的节点,并且可以一次性生成定位节点至目标节点之间的目标路径,提高了用户编写代码的效率、质量,节省时间和精力,提升用户体验。
图7示出了本申请实施例提供的另一种编辑代码的方法的示意性流程图。图7所示的方法包括步骤S710至步骤S130,下面对各个步骤进行介绍。
S710,解析描述文件,获取所述描述文件对应的第一路径集合。
步骤S710和步骤S210相同,为简洁,在此不再赘述。
S720,解析代码编辑窗口中的待编写文件,获取代码编辑窗口中已配置的节点。
与解析描述文件的过程类似,本申请实施例可以通过解析代码编辑窗口中的待编写文件,获取代码编辑窗口中的全部节点、节点与节点之间的路径。本申请对解析代码编辑窗口中的待编写文件的方式不予限制,例如,可以通过深度优先遍历的方式进行解析。
需要说明的是,用户可以在代码编辑窗口中输入字符以编写待编写文件的代码,也可以通过代码补全技术在代码编辑窗口中生成待编写文件的代码,即代码编辑窗口用于编写待编写文件的代码,代码编辑窗口中的节点为待编写文件或代码编辑窗口中已配置的节点。
在本申请实施例中,用户正在根据该描述文件编写待编写文件,在编写待编写文件的过程中,待编写文件应该始终满足该描述文件所定义的规范,也就是说,待编写文件中的节点、节点与节点之间的路径、节点的相对位置、节点的数据类型都应与该描述文件中所描述的保持一致,使得待编写文件与描述文件符合相同的语法结构。
S730,根据第一路径集合中的节点和代码编辑窗口中已配置的节点,确定可配置结构化视图。
应理解,在本申请实施例中,该可配置结构化视图相当于步骤S610中的第二窗口。
具体的,可配置结构化视图是以树形结构或者多级目录结构的形式展现出该第一路径集合中的多个节点,并使用第一标识符指示代码编辑窗口中未配置的节点。
应理解,可配置结构化视图不仅包括了代码编辑窗口中已配置的节点,还包括其相对于第一路径集合未配置的节点,即待编写文件中未配置的节点。将待编写文件中已配置的节点记为第一节点集合,将未配置的节点记为第二节点集合,也就是说,可配置节点化视图中包括第一节点集合和第二节点集合。
应理解,该未配置的节点为代码编辑窗口中已配置的节点在第一路径集合中对应的节点的子孙节点、兄弟节点或者兄弟节点的子孙节点。
示例性的,图8示出了本申请实施例提供的一种代码编辑器界面的示意图。如图8所示,本申请实施例中的代码编辑器界面包括代码编辑窗口510、可配置结构化视图810和可配置结构化视图开关820。
可配置结构化视图开关820可以是第一控件的一个示例,可以用于显示或隐藏第二节点集合中的节点。
在一些实施例中,该可配置结构化视图可以集成在现有的结构化视图中,通过在现有的结构化视图中添加第一控件,来控制显示或隐藏第二节点集合中的节点。或者,打开了现有结构化视图后,通过输入命令、输入快捷键、输入快捷键组合或者点击菜单调用的方式显示或隐藏第二节点集合中的节点。
可选地,在一些实施例中,可配置结构化视图也可以作为一个与现有结构化视图并列的单独的功能,用户可以通过输入命令、输入快捷键、输入快捷键组合或者点击菜单调用的方式独立开启该功能。
在一些实施例中,使用第一标识符指示该第二路径集合相对于该第一路径集合不存在的节点。示例性的,参考图8,在可配置结构化视图中使用标识符号“+”指示待编写文件中未配置的节点。
在一些实施例中,在可配置结构化视图中,使用第二标识符指示可配置结构化视图中的节点的类型。示例性的,参考图8,使用标识符号“{}”表示该节点为一个JSON对象,使用
Figure BDA0003367364170000181
表示该节点为一个JSON属性。
在一些实施例中,可配置结构化视图中包括第三标识符,该第三标识符用于表示节点含有子节点,通过点击第三标识符可以显示或隐藏可配置结构化视图中的节点的子节点。示例性的,参考图8,符号“ˇ”表示节点含有子节点,并且可以通过点击“ˇ”收起或展开子节点。
S740,检测用户对可配置结构化视图的第四操作,从可配置结构化视图中确定目标节点。
步骤S740与步骤S620类似,具体可参考步骤S620的相关描述,为了简洁,在此不再赘述。
S750,根据根节点至目标节点之间的路径和代码编辑窗口中已配置的节点,确定目标路径。
在本申请实施例中,在第一路径集合中,从根节点至目标节点之间的路径是唯一确定的,也就是说,确定了目标节点后,可以从第一路径集合中确定一条从根节点至目标节点之间的路径。在该路径中,部分节点是代码编辑窗口中已配置的节点,部分节点是代码编辑窗口中未配置的节点,去除掉该路径中代码编辑窗口中已配置的节点,即可得到目标路径。此时,目标路径包括该根节点至目标节点中全部未配置的节点。
代码编辑窗口中已配置的节点有可能是该根节点至目标节点之间的路径之外的节点,例如,参考图4,假设用户确定目标节点为“d2”,则该根节点至目标节点之间的路径为“a>b1>c1>d2”,但是此时,代码编辑窗口中可能存在路径“a>b1>c1>d1”,即“d1”为该根节点至目标节点之间的路径之外的节点。这种情况将不需要去除该根节点至目标节点之间的路径之外的已配置的节点。
根节点可以是是描述文件或者待编写文件本身,也可以是目标节点所在子树的根节点,这二者的不同不影响目标路径的确定。例如,图3所示的描述文件仅包括一个子树,假设将描述文件本身或待编写文件本身视作根节点,都记为root,则代码编辑窗口中的待编写文件的路径“a>b1”实际上应表示为“root>a>b1”,当用户确定目标节点为“d2”时,则第一路径集合中该根节点至目标节点之间的路径为“root>a>b1>c1>d2”,去除掉代码编辑窗口中已配置的节点,则可以得到目标路径“c1>d2”。也就是说,当将描述文件本身或待编写文件本身视作根节点时,该根节点可以视为已配置的节点。
S760,在所述代码编辑窗口中生成目标路径。
在本申请实施例中,生成的目标路径包括了该目标路径中的全部节点和必要的符号,使得生成的目标路径符合待编写文件对应格式的基本语法规范。示例性的,在编写JOSN格式的文件时,生成的目标路径应符合JSON的基本语法规范。
示例性的,用户选择目标节点“d2+”和“b2+”,执行步骤S770后,最终代码编辑窗口中的代码如下:
Figure BDA0003367364170000191
可选的,在一些实施例中,该必要的符号与节点的数据类型相对应。例如,节点为数组,该节点对应的符号为[]。
上文结合图1至图8详细的描述了本申请实施例的方法实施例,下面结合图9至图11,详细描述本申请实施例的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图9示出了本申请实施例提供的一种编辑代码的装置的示意性框图。该装置可用于执行如图1或图2所示的方法,以及执行如图5所示的实施例。如图9所示,该装置900包括显示单元901、检测单元902和生成单元903。
显示单元901,用于在代码编辑窗口中显示第一窗口,该第一窗口包括至少一条候选路径,该至少一条候选路径中的每条候选路径包括一个或多个节点。
检测单元902,用于检测用户对该第一窗口的第一操作,该第一操作用于从该至少一条候选路径中确定目标路径。
生成单元903,用于响应于该第一操作,在代码编辑窗口中生成该目标路径。
本申请实施例的编辑代码的装置,可以一次性补全多个节点,例如一次性补全一条路径上的全部节点,避免了用户需要在不同位置进行多次代码编辑,提高了用户编辑代码的效率、质量,节省时间和精力,提升用户体验。
可选地,该检测单元902还用于检测用户的第二操作;该显示单元901还用于响应于该第二操作,在该代码编辑窗口中显示第一窗口。
可选地,第二操作为输入字符、输入命令、输入快捷键、输入快捷键组合或点击菜单调用中的任意一项操作。
可选地,该生成单元903具体用于从代码编辑窗口中的定位节点开始,在代码编辑窗口中生成该目标路径。
可选地,该至少一条候选路径中的每条候选路径的开始节点包括该定位节点对应的字段。
可选地,该定位节点对应的字段为该每条候选路径的开始节点的前缀。
可选地,该装置900还可以包括确定单元,
该检测单元还用于检测用户对该第一窗口的第三操作,该第三操作为输入字符的操作;
该确定单元用于响应于用户对该第一窗口的第三操作,对该至少一条候选路径进行筛选,得到一条或多条筛选后的候选路径,其中该一条或多条筛选后的候选路径中的每条候选路径包括用户输入的字符;
该显示单元901还用于在第一窗口显示该筛选后的候选路径。
可选地,该确定单元还用于根据代码编辑窗口中的至少一个节点,从描述文件对应的第一路径集合中确定该至少一条候选路径,其中该代码编辑窗口用于编写待编写文件的代码,该待编写文件与该描述文件符合相同的语法结构。
可选地,该确定单元还可以具体用于:
根据至少一个节点,从第一路径集合中确定至少一个候选节点,其中至少一个候选节点中的每个候选节点包括定位节点对应的字段;
以至少一个候选节点中的每个候选节点为开始节点,从第一路径集合中确定至少一条候选路径。
可选地,该确定单元具体用于:
根据定位节点的父节点,从第一路径集合中确定第一节点,其中第一节点与定位节点的父节点具有相同字段;
根据该定位节点对应的字段,从第一节点的子节点中确定至少一个候选节点。
可选地,该确定单元还可以具体用于根据定位节点的根节点至定位节点的父节点的路径,从第一路径集合中确定第一路径,第一路径与定位节点的根节点至定位节点的父节点的路径相同;
根据定位节点对应的字段,从第一路径的终端节点的子节点中确定至少一个候选节点。
可选地,该确定单元还可以具体用于:
根据定位节点的父节点,从第一路径集合中确定第一节点,其中第一节点与定位节点的父节点具有相同字段;
该确定单元还可以具体用于以第一节点的每个子节点为开始节点,从第一路径集合中确定至少一条候选路径。
本申请实施例还提供的另一种编辑代码的装置,为简洁,其示意性框图仍参考图9。该装置可用于执行如图6或图7所示的方法,以及执行如图8所示的实施例。如图9所示,该装置900包括显示单元901、检测单元902和生成单元903。
显示单元901,用于在代码编辑窗口中显示第二窗口,第二窗口包括多个节点,该多个节点用于指示描述文件对应的第一路径集合。
检测单元902,用于检测用户对第二窗口的第四操作,该第四操作用于从多个节点中确定目标节点。
生成单元903,用于响应于该第四操作,在该代码编辑窗口中生成目标路径,其中该目标路径的终端节点为该目标节点,该目标路径包括的节点属于该代码编辑窗口中未配置的节点。
本申请实施例的编辑代码的装置,通过在第二窗口显示可配置结构化视图,用户确定目标节点后,可以一次性生成以该目标节点为终端节点的目标路径中的全部未配置的节点,提高了代码的编写效率和质量,提升用户体验。
可选地,该装置900还可以包括确定单元,该确定单元用于
从第一路径集合中确定根节点至目标节点之间的路径;
根据根节点至目标节点之间的路径与代码编辑窗口中已配置的节点,确定目标路径。
可选地,该多个节点排列为树形结构或者多级目录结构。
可选地,该多个节点包括第一节点集合和第二节点集合,其中第一节点集合中的节点为在代码编辑窗口中已配置的节点,该第二节点集合中的节点为在代码编辑窗口中未配置的节点。
可选地,第二窗口包括第一标识符,该第一标识符用于指示第二节点集合中的节点。
可选地,第二窗口包括第二标识符,该第二标识符用于指示多个节点中的每个节点的类型。
可选地,第二窗口包括第一控件,该第一控件用于显示或隐藏第二节点集合中的节点。
图10示出了本申请实施例提供的一种编辑代码的装置的示意性框图。如图10所示,该编辑代码的装置包括代码编辑窗口1001、代码补全窗口1002、路径计算模块1004、代码生成模块1005和待编写文件加载模块1007。
代码编辑窗口1001可以用于用户手动编写待编写文件的代码,也可以利用代码补全在代码编辑窗口1002中自动生成代码。
代码补全窗口1002相当于图1或图2所示方法中的第一窗口,代码补全窗口1002用于显示图1或图2所示实施例中由第一窗口显示的内容。
路径计算模块1004用于执行图2所示方法中的步骤S230或者用于执行图7所示方法中的步骤S760。
待编写文件加载模块1007可以用于获取代码编辑窗口中的待编写文件的已配置的节点。例如,在图2所示实施例中的步骤S230之前,待编写文件加载模块1007对待编写文件进行解析,获取代码编辑窗口中的至少一个节点。
可选地,该装置1000还可以包括描述文件解析模块1006,该描述文件解析模块1006可以用于执行图2所示实施例中的步骤S210,或者执行图7所示实施例中的步骤S710。
可选地,该装置1000还可以包括可配置结构化视图1003,该可配置结构化视图窗口相当于图6所示方法中的第二窗口或图7所示方法中的可配置结构化视图。
应理解,在该装置1000中,可以包括代码补全窗口1002,也可以包括可配置结构化视图1003,还可以同时包括代码补全窗口1002和可配置结构化视图1003。
值得注意的是,图10仅是本申请实施例提供的一种编辑代码的装置的示意框图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图10中,解析模块可以是外部解析工具。
图11是本申请实施例提供的编辑代码的装置的硬件结构示意图。图11所示的编辑代码的装置1100(该装置1100具体可以是一种计算机设备)包括存储器1110、处理器1120、通信接口1130以及总线1140。其中,存储器1110、处理器1120、通信接口1130通过总线1140实现彼此之间的通信连接。
存储器1110可以是ROM,静态存储设备,动态存储设备或者RAM。存储器1110可以存储程序,当存储器1110中存储的程序被处理器1120执行时,处理器1120用于执行本申请实施例的编辑代码的方法的各个步骤。
处理器1120可以采用通用的CPU,微处理器,ASIC,GPU或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的编辑代码的装置中的单元所需执行的功能,或者执行本申请方法实施例的编辑代码的方法。
处理器1120还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的编辑代码的方法的各个步骤可以通过处理器1120中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1120还可以是通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1110,处理器1120读取存储器1110中的信息,结合其硬件完成本申请实施例的编辑代码的装置中包括的单元所需执行的功能,或者执行本申请方法实施例的编辑代码的方法。
通信接口1130使用例如但不限于收发器一类的收发装置,来实现装置1100与其他设备或通信网络之间的通信。例如,可以通过通信接口1130获取描述文件或者描述文件对应的第一路径集合。
总线1140可包括在装置1100各个部件(例如,存储器1110、处理器1120、通信接口1130)之间传送信息的通路。
应注意,尽管图11所示的装置1100仅仅示出了存储器、处理器、通信接口,但是在具体实现过程中,本领域的技术人员应当理解,装置1100还包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,装置1100还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,装置1100也可仅仅包括实现本申请实施例所必须的器件,而不必包括图11中所示的全部器件。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (22)

1.一种编辑代码的方法,其特征在于,包括:
在代码编辑窗口中显示第一窗口,所述第一窗口包括至少一条候选路径,所述至少一条候选路径中的每条候选路径包括一个或多个节点;
检测用户对所述第一窗口的第一操作,所述第一操作用于从所述至少一条候选路径中确定目标路径;
响应于所述第一操作,在所述代码编辑窗口中生成所述目标路径。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测用户的第二操作;
所述在代码编辑窗口中显示第一窗口包括:
响应于所述第二操作,在所述代码编辑窗口中显示所述第一窗口。
3.根据权利要求2所述的方法,其特征在于,所述第二操作为输入字符、输入命令、输入快捷键、输入快捷键组合和点击菜单调用中的任意一项操作。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述代码编辑窗口包括定位节点;
所述在所述代码编辑窗口中生成所述目标路径,包括:
从所述定位节点开始,在所述代码编辑窗口中生成所述目标路径。
5.根据权利要求4所述的方法,其特征在于,所述至少一条候选路径中的每条候选路径的开始节点包括所述定位节点对应的字段。
6.根据权利要求5所述的方法,其特征在于,所述定位节点对应的字段为所述每条候选路径的开始节点的前缀。
7.根据权利要求1至6中任一项所述的方法,其特征在于,在所述检测用户对所述第一窗口的第一操作之前,还包括:
检测用户对所述第一窗口的第三操作,所述第三操作为输入字符的操作;
响应于所述第三操作,通过对所述至少一条候选路径进行筛选,得到一条或多条筛选后的候选路径,其中所述一条或多条筛选后的候选路径中的每条候选路径包括用户输入的字符;
在所述第一窗口中显示所述筛选后的候选路径。
8.根据权利要求1至7中任一项所述的方法,其特征在于,在所述在代码编辑窗口中显示第一窗口之前,还包括:
根据所述代码编辑窗口中的至少一个节点,从描述文件对应的第一路径集合中确定所述至少一条候选路径,其中所述代码编辑窗口用于编写待编写文件的代码,所述待编写文件与所述描述文件符合相同的语法结构。
9.根据权利要求8所述的方法,其特征在于,所述代码编辑窗口包括定位节点;
所述根据所述代码编辑窗口中的至少一个节点,从描述文件对应的第一路径集合中确定所述至少一条候选路径,包括:
根据所述至少一个节点,从所述第一路径集合中确定至少一个候选节点,其中所述至少一个候选节点中的每个候选节点包括所述定位节点对应的字段;
以所述至少一个候选节点中的每个候选节点为开始节点,从所述第一路径集合中确定所述至少一条候选路径。
10.根据权利要求9所述的方法,其特征在于,所述至少一个节点包括所述定位节点和所述定位节点的父节点;
所述根据所述至少一个节点,从所述第一路径集合中确定至少一个候选节点,包括:
根据所述定位节点的父节点,从所述第一路径集合中确定第一节点,其中所述第一节点与所述定位节点的父节点具有相同字段;
根据所述定位节点对应的字段,从所述第一节点的子节点中确定所述至少一个候选节点。
11.根据权利要求9所述的方法,其特征在于,所述至少一个节点包括所述定位节点至所述定位节点的根节点之间的全部节点;
所述根据所述至少一个节点,从所述第一路径集合中确定至少一个候选节点,包括:
根据所述定位节点的根节点至所述定位节点的父节点的路径,从所述第一路径集合中确定第一路径,所述第一路径与所述定位节点的根节点至所述定位节点的父节点的路径相同;
根据所述定位节点对应的字段,从所述第一路径的终端节点的子节点中确定所述至少一个候选节点。
12.根据权利要求8所述的方法,其特征在于,所述代码编辑窗口包括定位节点,且所述定位节点为空;
所述根据所述代码编辑窗口中的至少一个节点,从描述文件对应的第一路径集合中确定所述至少一条候选路径,包括:
根据所述定位节点的父节点,从所述第一路径集合中确定第一节点,其中所述第一节点与所述定位节点的父节点具有相同字段;
以所述第一节点的每个子节点为开始节点,从所述第一路径集合中确定所述至少一条候选路径。
13.一种编辑代码的方法,其特征在于,包括:
在代码编辑窗口中显示第二窗口,所述第二窗口包括多个节点,所述多个节点用于指示描述文件对应的第一路径集合;
检测用户对所述第二窗口的第四操作,所述第四操作用于从所述多个节点中确定目标节点;
响应于所述第四操作,在所述代码编辑窗口中生成目标路径,其中所述目标路径的终端节点为所述目标节点,所述目标路径包括的节点属于所述代码编辑窗口中未配置的节点。
14.根据权利要求13所述的方法,其特征在于,所述在所述代码编辑窗口中生成目标路径,包括:
从所述第一路径集合中确定根节点至所述目标节点之间的路径;
根据所述根节点至所述目标节点之间的路径与所述代码编辑窗口中已配置的节点,确定所述目标路径。
15.根据权利要求13或14所述的方法,其特征在于,所述多个节点排列为树形结构或者多级目录结构。
16.根据权利要求13至15中任一项所述的方法,其特征在于,所述多个节点包括第一节点集合和第二节点集合,其中所述第一节点集合中的节点为在所述代码编辑窗口中已配置的节点,所述第二节点集合中的节点为在所述代码编辑窗口中未配置的节点。
17.根据权利要求16所述的方法,其特征在于,所述第二窗口包括第一标识符,所述第一标识符用于指示所述第二节点集合中的节点。
18.根据权利要求16或17所述的方法,其特征在于,所述第二窗口包括第二标识符,所述第二标识符用于指示所述多个节点中的每个节点的类型。
19.根据权利要求16至18任一项所述的方法,其特征在于,所述第二窗口包括第一控件,所述第一控件用于显示或隐藏所述第二节点集合中的节点。
20.一种编辑代码的装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,使得所述装置执行如权利要求1至19中任一项所述的方法。
21.根据权利要求20所述的装置,其特征在于,所述装置为代码编辑器。
22.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,当所述计算机可执行指令在计算机上运行时,使得所述计算机执行如权利要求1至19中任一项所述的方法。
CN202111386829.6A 2021-11-22 2021-11-22 编辑代码的方法和装置 Pending CN116149629A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111386829.6A CN116149629A (zh) 2021-11-22 2021-11-22 编辑代码的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111386829.6A CN116149629A (zh) 2021-11-22 2021-11-22 编辑代码的方法和装置

Publications (1)

Publication Number Publication Date
CN116149629A true CN116149629A (zh) 2023-05-23

Family

ID=86356906

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111386829.6A Pending CN116149629A (zh) 2021-11-22 2021-11-22 编辑代码的方法和装置

Country Status (1)

Country Link
CN (1) CN116149629A (zh)

Similar Documents

Publication Publication Date Title
US10324909B2 (en) Omega names: name generation and derivation utilizing nested three or more attributes
US9244658B2 (en) Multi-step auto-completion model for software development environments
JP4401292B2 (ja) グリフレット
US20210191919A1 (en) Using path encoding method and relational set operations for search and comparison of hierarchial structures
CN110502227B (zh) 代码补全的方法及装置、存储介质、电子设备
CN108027721B (zh) 用于使用控件来配置通用程序的技术
CN107273109B (zh) 对源代码建模的方法和系统以及使用数据模型的方法
US9483508B1 (en) Omega names: name generation and derivation
CN111736840A (zh) 小程序应用的编译方法、运行方法、存储介质及电子设备
CN106980619B (zh) 数据查询方法及装置
CN114090671A (zh) 数据导入方法、装置、电子设备及存储介质
CN113419721B (zh) 基于web的表达式编辑方法、装置、设备和存储介质
CN111797111A (zh) 一种基于es搜索引擎的动态组合查询方法
US20120151441A1 (en) Efficient generation of executable file from program files when some of the program files expressly incorporate other program files
CN116028062A (zh) 目标代码的生成方法、npu指令的显示方法及装置
CN108090034B (zh) 基于集群的单证代码统一编码生成方法和系统
CN116149629A (zh) 编辑代码的方法和装置
CN114297443B (zh) 图数据查询语句的处理方法、装置、设备及存储介质
CN112699642B (zh) 复杂医疗文书的索引提取方法及装置、介质及电子设备
CN111563363B (zh) 一种超文本标记语言文档内容生成及解析方法
CN114722112A (zh) 一种可视化列表数据展示方法及其装置
CN114296726A (zh) 一种代码生成方法、装置、计算机设备和存储介质
US9910647B2 (en) Field size calculation and color coding display options usable in an emulated integrated development environment (IDE)
US20070153342A1 (en) Display and editing of documents described by schemas
CN111813749A (zh) 文件过滤方法及装置、电子设备、存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination