116 Star 438 Fork 75

吴侃 / NovalIDE

 / 详情

python语言之外的其他语言自动补全显示有误。

待办的
成员
创建于  
2020-05-13 14:37

输入“e”直接按下tab补全
输入e之后按下tab再输入c
如上图,shell编辑时,输入字符“e”,按下tab补全,可以唤出补全菜单,但与已经输入的字母无法对应。只有再输入一个字符“c”才可对应。
不仅是shell,对于c语言等的编辑器,问题也是存在的。

评论 (1)

hzy15610046011 创建了任务
hzy15610046011 关联仓库设置为吴侃/NovalIDE
hzy15610046011 修改了描述
hzy15610046011 修改了描述
hzy15610046011 修改了描述
展开全部操作日志

我修改了一下,
https://gitee.com/wekay/NovalIDE/blob/hzy15610046011/noval/editor/code.py
修改的是class CodeView中的 GetAutoCompleteHint方法,修改成了大概这样。提pull request有点麻烦,而且更改只有这里,所以就直接贴在下面:

    def GetAutoCompleteHint(self):
        """获取自动完成的上下文以及提示内容,适用于其他类型的语言。"""
        
        line,col = self.GetCtrl().GetCurrentPos()
        if line == 0 and col == 0:
            return None, None
        hint=''
        lexer=self.GetCtrl().GetLangLexer()   # 获取Lexer
        if hasattr(lexer,"validStrSet"):        # 新定义一个validStr属性,定义可以用于补全的字符。
            validStrSet=lexer.validStrSet
        else:
            validStrSet=set(string.ascii_letters + string.digits + '_')
        for c in range(col-1,-1,-1):
            ch=self.GetCtrl().GetCharAt(line,c)
            if ch in validStrSet:
                hint=ch+hint
            else:
                break

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
Python
1
https://gitee.com/wekay/NovalIDE.git
git@gitee.com:wekay/NovalIDE.git
wekay
NovalIDE
NovalIDE

搜索帮助