unit-mesh / auto-dev

🧙‍AutoDev: The AI-powered coding wizard(AI 驱动编程助手) with multilingual support 🌐, auto code generation 🏗️, and a helpful bug-slaying assistant 🐞! Customizable prompts 🎨 and a magic Auto Dev/Testing/Document/Agent feature 🧪 included! 🚀
https://ide.unitmesh.cc/
Mozilla Public License 2.0
2.76k stars 317 forks source link

fix: wrong trigger when user typing from code. #206

Closed hanrw closed 3 months ago

hanrw commented 3 months ago
 override fun activeLookupChanged(oldLookup: Lookup?, newLookup: Lookup?) {
        if (!project.coderSetting.state.enableRenameSuggestion) return

        val lookupImpl = newLookup as? LookupImpl ?: return
        val editor = lookupImpl.editor as? EditorEx ?: return
        val targetElement: PsiElement = lookupElement(lookupImpl, editor) ?: return

        // maybe user just typing, we should handle for this
        val originName = (targetElement as? PsiNameIdentifierOwner)?.name ?: return

        if (originName.isBlank()) return

        val promptText =
            "$originName is a badname. Please provide 5 better options name for follow code: \n```${targetElement.language.displayName}\n${targetElement.text}\n```\n\n1."

        try {
            doExecuteNameSuggest(promptText, lookupImpl)
            logger.warn("will trigger when typing from java code") // ======= Note here =========
        } catch (e: Exception) {
            logger.warn("Error in RenameLookupManagerListener", e)
        }
    }
    override fun activeLookupChanged(oldLookup: Lookup?, newLookup: Lookup?) {
        if (!project.coderSetting.state.enableRenameSuggestion) return

        val lookupImpl = newLookup as? LookupImpl ?: return
        val editor = lookupImpl.editor as? EditorEx ?: return
        val targetElement: PsiElement = lookupElement(lookupImpl, editor) ?: return

        // maybe user just typing, we should handle for this
        val originName = (targetElement as? PsiNameIdentifierOwner)?.name ?: return

        // avoid user typing in template. only suggest that user refactor the name
        TemplateManager.getInstance(project).getActiveTemplate(editor) ?: return

        if (originName.isBlank()) return

        val promptText =
            "$originName is a badname. Please provide 5 better options name for follow code: \n```${targetElement.language.displayName}\n${targetElement.text}\n```\n\n1."

        try {
            doExecuteNameSuggest(promptText, lookupImpl)
            logger.warn("will trigger when typing from java code")
        } catch (e: Exception) {
            logger.warn("Error in RenameLookupManagerListener", e)
        }
    }

fixed by

      // avoid user typing in template. only suggest that user refactor the name
        TemplateManager.getInstance(project).getActiveTemplate(editor) ?: return