一种基于ace扩展的代码补全的实现方法及装置与流程

文档序号:17987919发布日期:2019-06-22 00:33阅读:426来源:国知局
一种基于ace扩展的代码补全的实现方法及装置与流程

本发明涉及通信技术领域,尤其涉及一种基于ace扩展的代码补全的实现方法及装置。



背景技术:

在web开发中,需要使用很多的第三方库,用来实现编辑器的各种功能。而ace作为一个成熟的第三方库,提供了强大的编辑器组件。ace编辑器可以编写代码或文本,能够实现代码高亮、缩进等功能。ace本身自带代码补全功能,然而ace本身自带的代码补全功能不完善,例如函数自动补自带括号、自定义的函数的变量加入到自动补全列表中,函数体内的变量名联想补全,等现有的ace都无法实现,因此现有的ace补全功能缺少一些常用的补全功能,代码编辑效率低。

因此,现有技术还有待于改进和发展。



技术实现要素:

鉴于上述现有技术的不足,本发明的目的在于提供一种基于ace扩展的代码补全的实现方法及装置,旨在解决现有技术中ace编辑器中补全功能缺少一些常用的补全功能,代码编辑效率低的问题。

本发明的技术方案如下:

一种基于ace扩展的代码补全的实现方法,应用于图形化编辑器,所述方法包括:

通过ace的api接口绑定函数;

获取用户输入的文本,检测到文本输入结束时,解析当前文本;

将当前文本中已定义好的函数和变量加入ace内置的联想列表中;

当检测到用户再次输入时,获取用户选中的字符串,若字符串对应为函数,则在字符串后添加函数括号;

获取用户当前的光标位置,根据用户当前的光标位置,将对应的变量添加到自动补全列表中。

可选地,所述通过ace的api接口绑定函数,包括:

通过ace的api接口,将函数绑定至ace的afterexec中。

可选地,所述获取用户输入的文本,检测到文本输入结束时,解析当前文本,包括:

获取用户输入的文本,检测到文本输入结束时,通过skulpt解析当前文本。

可选地,所述将当前文本中已定义好的函数和变量加入ace内置的联想列表中,包括:

将解析后的当前文本中已定义好的函数和变量加入到本地联想列表中;

通过ace的api定义好的函数和变量加入ace内置的联想列表。

可选地,所述当检测到用户再次输入时,获取用户选中的字符串,若字符串对应为函数,则在字符串后添加函数括号,包括:

当检测到用户再次输入时,获取用户输入的文本,ace显示对应的联想列表;

获取用户在联想列表中选中的字符串,判断字符串是否为函数;

若字符串对应为函数,则在字符串后添加函数括号,并移动光标。

可选地,所述获取用户当前的光标位置,根据用户当前的光标位置,将对应的变量添加到自动补全列表中;

获取用户当前的光标位置;

若用户当前的光标位置在定义函数的区间内,则通过语法解析,获取当前函数自定义的变量;

将对应的变量添加到自动补全列表中。

可选地,所述若字符串对应为函数,则在字符串后添加函数括号,还包括:

若字符串对应为函数,则识别对应的字符串为自动补全函数;

在字符串后添加函数括号,并将光标移动至括号内;

获取用户在括号内输入的字符,将括号内输入的字符当作参数传送给对应的函数。

本发明又一实施例还提供了一种基于ace扩展的代码补全的实现装置,所述装置包括至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的基于ace扩展的代码补全的实现方法。

本发明的另一实施例还提供了一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的基于ace扩展的代码补全的实现方法。

本发明的另一种实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被处理器执行时,使所述处理器执行上述的基于ace扩展的代码补全的实现方法。

有益效果:本发明公开了一种基于ace扩展的代码补全的实现方法及装置,相比于现有技术,本发明实施例可以完善ace本身的补全功能,自动补全内置函数和对象,识别内置函数,在自动补全函数时带上函数括号。将用户的自定义函数和变量也加入到自动补全列表中,用户输入的时候可以联想到自定义的函数并且实现跟内置函数一样的补全效果。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为本发明一种基于ace扩展的代码补全的实现方法较佳实施例的流程图;

图2为本发明一种基于ace扩展的代码补全的实现装置较佳实施例的硬件结构示意图。

具体实施方式

为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下结合附图对本发明实施例进行介绍。

请参阅图1,图1为本发明一种基于ace扩展的代码补全的实现方法较佳实施例的流程图。本发明实施例中的基于ace扩展的代码补全的实现方法应用于图形化编辑器,如图1所示,其包括步骤:

步骤s100、通过ace的api接口绑定函数;

步骤s200、获取用户输入的文本,检测到文本输入结束时,解析当前文本;

步骤s300、将当前文本中已定义好的函数和变量加入ace内置的联想列表中;

步骤s400、当检测到用户再次输入时,获取用户选中的字符串,若字符串对应为函数,则在字符串后添加函数括号;

步骤s500、获取用户当前的光标位置,根据用户当前的光标位置,将对应的变量添加到自动补全列表中。

具体实施时,图形化编辑器是指同时支持文本模式编程和积木编程的编程软件,例如,点猫公司的海龟编辑器就是其中的一种。本发明实施例的技术方案应用在海龟编辑器的网页端。以海龟编辑器的网页端为例,海龟编辑器网页端在文本模式下,使编辑器窗口显示编程文本,而在积木模式下,编辑器窗口一侧显示积木编程,另一侧显示对应的编程文本。本发明实施例中的图形化编辑器是使用python文本进行编程。

ace是一个开源的、独立的、基于浏览器的代码编辑器,可以嵌入到任何web页面或javascript应用程序中。ace支持超过60种语言语法高亮,并能够处理代码多达400万行的大型文档。ace开发团队称,ace在性能和功能上可以媲美本地代码编辑器(如sublimetext、textmate和vim等)。

ace是mozillaskywriter(以前称为bespin)项目的继任者,并作为cloud9的主要在线编辑器。

使用技术方案开发的ace的代码补全实现方法,可以完善ace本身的补全功能,自动补全内置函数和对象,识别内置函数,在自动补全函数时带上函数括号。将用户的自定义函数和变量也加入到自动补全列表中,用户输入的时候可以联想到自定义的函数并且实现跟内置函数一样的补全效果。

进一步地,通过ace的api接口绑定函数,包括:

通过ace的api接口,将函数绑定至ace的afterexec中。

具体实施时,通过ace自身提供的api,api(applicationprogramminginterface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。绑定函数到ace的afterexec,在每一次文本输入结束时都要对进行检查,检查是否有已定义好的函数和变量,若有已定义好的函数和变量,则添加至自动补全列表中。afterexec是指每次成功执行作业后,将调用相应服务进行后续处理。

进一步地,获取用户输入的文本,检测到文本输入结束时,解析当前文本,包括:

获取用户输入的文本,检测到文本输入结束时,通过skulpt解析当前文本。

具体实施时,实时获取用户输入文本的情况,若检测到文本输入结束时,通过skulpt解析当前文本。其中skulpt是由js编写而成的,然后可以将python代码转换为js代码,从而让python代码可以直接运行在浏览器上。

进一步地,将当前文本中已定义好的函数和变量加入ace内置的联想列表中,包括:

将解析后的当前文本中已定义好的函数和变量加入到本地联想列表中;

通过ace的api定义好的函数和变量加入ace内置的联想列表。

具体实施时,将当前文本中已定义好的函数和变量加入到本地联想列表中,通过ace提供的api加入ace内置的联想列表。

例如,用户自定义函数test,语法解析库通过实时解析该文档,识别test为自定义函数,将test加入代码联想列表中,输入te匹配到已加入自动补全库的test函数。

在一些其他的实施例中,当检测到用户再次输入时,获取用户选中的字符串,若字符串对应为函数,则在字符串后添加函数括号,包括:

当检测到用户再次输入时,获取用户输入的文本,ace显示对应的联想列表;

获取用户在联想列表中选中的字符串,判断字符串是否为函数;

若字符串对应为函数,则在字符串后添加函数括号,并移动光标。

具体实施时,判断用户选中,若用户选中的字符串为函数,则在该字符串后添加括号,并移动光标。

进一步地,若字符串对应为函数,则在字符串后添加函数括号,还包括:

若字符串对应为函数,则识别对应的字符串为自动补全函数;

在字符串后添加函数括号,并将光标移动至括号内;

获取用户在括号内输入的字符,将括号内输入的字符当作参数传送给对应的函数。

具体实施时,判断用户当前的光标位置,若用户当前的光标位置在函数括号中,若函数括号中,获取用户在括号内输入的字符,将括号内输入的字符当作参数传送给对应的函数。例如,用户输入pri时,编辑器截取并匹配到内置函数print等;回车选中函数,识别为自动补全函数,带上括号,并将光标落入括号中,帮助用户继续输入,传参到该函数。

进一步地,获取用户当前的光标位置,根据用户当前的光标位置,将对应的变量添加到自动补全列表中;

获取用户当前的光标位置;

若用户当前的光标位置在定义函数的区间内,则通过语法解析,获取当前函数自定义的变量;

将对应的变量添加到自动补全列表中。

具体实施时,获取用户当前的光标位置,若用户当前的光标位置在定义函数的区间内,则将通过语法解析,获取当前函数自定义的变量,并将该变量加入到自动补全列表中。

例如,用户自定义变量apple,同自定义函数的步骤一样,实时解析当前文本,并识别apple为用户自定义的变量,将该变量加入到自动补全列表中,输入ap匹配到已加入自动实例库的apple变量名;

例如,用户自定义函数area,并定义了函数的两个参数,分别为width和height。在ares函数中输入wi,会自动匹配函数定义的变量;

根据python的语法,函数内部定义的变量名,在该函数之外的作用域内是取不到的。或用户此时的输入光标已在函数外,则不匹配。

由以上方法实施例可知,本发明提供了一种基于ace扩展的代码补全的实现方法,完善ace的代码联想和自动补全机制,使ace的自动补全功能日趋完善,媲美现代ide,实现函数自动补全和自定义函数和变量的联想功能,提供给用户友好的编辑体验,提高用户对海龟编辑器的喜欢。

本发明另一实施例提供一种基于ace扩展的代码补全的实现装置,如图2所示,装置10包括:

一个或多个处理器110以及存储器120,图2中以一个处理器110为例进行介绍,处理器110和存储器120可以通过总线或者其他方式连接,图2中以通过总线连接为例。

处理器110用于完成装置10的各种控制逻辑,其可以为通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、单片机、arm(acornriscmachine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器110还可以是任何传统处理器、微处理器或状态机。处理器110也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp核、或任何其它这种配置。

存储器120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的基于ace扩展的代码补全的实现方法对应的程序指令。处理器110通过运行存储在存储器120中的非易失性软件程序、指令以及单元,从而执行装置10的各种功能应用以及数据处理,即实现上述方法实施例中的基于ace扩展的代码补全的实现方法。

存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需要的应用程序;存储数据区可存储根据装置10使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器120可选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至装置10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

一个或者多个单元存储在存储器120中,当被一个或者多个处理器110执行时,执行上述任意方法实施例中的基于ace扩展的代码补全的实现方法,例如,执行以上描述的图1中的方法步骤s100至步骤s500。

本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图1中的方法步骤s100至步骤s500。

作为示例,非易失性存储介质能够包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦rom(eeprom)或闪速存储器。易失性存储器能够包括作为外部高速缓存存储器的随机存取存储器(ram)。通过说明丽非限制,ram可以以诸如同步ram(sram)、动态ram、(dram)、同步dram(sdram)、双数据速率sdram(ddrsdram)、增强型sdram(esdram)、synchlinkdram(sldram)以及直接rambus(兰巴斯)ram(drram)之类的许多形式得到。本文中所描述的操作环境的所公开的存储器组件或存储器旨在包括这些和/或任何其他适合类型的存储器中的一个或多个。

本发明的另一种实施例提供了一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行上述方法实施例的基于ace扩展的代码补全的实现方法。例如,执行以上描述的图1中的方法步骤s100至步骤s500。

以上所描述的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际需要选择其中的部分或者全部模块来实现本实施例方案的目的。

通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存在于计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机电子设备(可以是个人计算机,服务器,或者网络电子设备等)执行各个实施例或者实施例的某些部分的方法。

除了其他之外,诸如"能够'、"能"、"可能"或"可以"之类的条件语言除非另外具体地陈述或者在如所使用的上下文内以其他方式理解,否则一般地旨在传达特定实施方式能包括(然而其他实施方式不包括)特定特征、元件和/或操作。因此,这样的条件语言一般地不旨在暗示特征、元件和/或操作对于一个或多个实施方式无论如何都是需要的或者一个或多个实施方式必须包括用于在有或没有学生输入或提示的情况下判定这些特征、元件和/或操作是否被包括或者将在任何特定实施方式中被执行的逻辑。

已经在本文中在本说明书和附图中描述的内容包括能够提供基于ace扩展的代码补全的实现方法及装置的示例。当然,不能够出于描述本公开的各种特征的目的来描述元件和/或方法的每个可以想象的组合,但是可以认识到,所公开的特征的许多另外的组合和置换是可能的。因此,显而易见的是,在不脱离本公开的范围或精神的情况下能够对本公开做出各种修改。此外,或在替代方案中,本公开的其他实施例从对本说明书和附图的考虑以及如本文中所呈现的本公开的实践中可能是显而易见的。意图是,本说明书和附图中所提出的示例在所有方面被认为是说明性的而非限制性的。尽管在本文中采用了特定术语,但是它们在通用和描述性意义上被使用并且不用于限制的目的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1