代碼在actionPerformed
方法中,有個AnActionEvent e
插件開發就是要求咱們複寫上述的這個方法便可,在此方法中寫上咱們須要處理的相關邏輯 全部的對象都是PsiElement
html
Project mProject = e.getData(PlatformDataKeys.PROJECT);
//在Action顯示以前,根據選中文件擴展名斷定是否顯示此Action String extension = getFileExtension(event.getDataContext()); this.getTemplatePresentation().setEnabled(extension != null && "jar".equals(extension)); public static String getFileExtension(DataContext dataContext) { VirtualFile file = DataKeys.VIRTUAL_FILE.getData(dataContext); return file == null ? null : file.getExtension(); }
參考連接java
Messages.showMessageDialog("message", "title", Messages.getInformationIcon());
PsiFile psiFile = e.getData(DataKeys.PSI_FILE);//得到文件 GlobalSearchScope globalSearchScope = GlobalSearchScope.fileScope(psiFile); String fullName = psiFile.getName(); String className = fullName.split("\\.")[0]; PsiClass psiClass = PsiShortNamesCache.getInstance(psiFile.getProject()).getClassesByName(className, globalSearchScope)[0];//得到class文件
PsiMethod method = psiClass.findMethodsByName("initView", false)[0];//經過方法名找到方法
PsiMethod method = psiClass.findMethodsByName("onCreate", false)[0];//經過方法名找到方法 PsiCodeBlock body = method.getBody(); PsiStatement[] statements = body.getStatements();//這裏的PsiStatement數組就是方法中的一行行代碼,經過遍歷就能夠找到對應的代碼 for (PsiStatement statement : statements) { String s = statement.getText();//得到代碼內容 }
WriteCommandAction.runWriteCommandAction(psiClass.getProject(), new Runnable() { @Override public void run() { //寫文件操做 //delete,replace,add... } });
Editor editor = e.getData(PlatformDataKeys.EDITOR);
官方開發文檔api
寫好插件後,導出插件到本地,而後使用Android Studio安裝插件,提示「Plugin 'Plugin display name here' is incompatible with this installation」,意思是版本不兼容; 解決辦法是打開插件工程的plugin.xml文件,修改版本號數組
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description --> <!--這句話的意思是最低支持的ide版本,查看當前的Android Studio版本號修改--> <idea-version since-build="171.0"/>
IDEA的插件支持的版本最低爲173,而個人Android Studio的內置IDEA的版本號爲171,因此安裝的時候出現了錯誤提示,也就是不兼容。編輯器
因此,咱們查看Android Studio的版本號(help->about) 修改插件中的plugin.xml中的版本號便可解決問題
ide
緣由:本來有個插件出問題了,把本身插件的錯誤提示給覆蓋了,因此沒法知道本身的插件出現了什麼問題 剛開始使用插件的時候,發現沒有效果,右下角出現了個錯誤提示,說我當前的某個插件有錯誤(不是我開發的那個插件) 而後我就把那個插件更新了,再次使用個人插件,右下角出現的錯誤提示終因而個人了ui
使用插件功能的時候,發現右下角出現錯誤, java.lang.NullPointerException at com.intellij.ide.SystemHealthMonitor.getActionNamethis
寫好插件,導出插件到本地,而後使用Android Studio安裝插件,提示「java.lang.NullPointerException at com.intellij.ide.SystemHealthMonitor.getActionName」 從參考連接可知,具體緣由不明 但解決辦法是,將全部的Action及其餘Java文件都放到包下,而不是直接放在src目錄下,也就是在src在新建個包,把全部的java文件放入便可解決問題idea