@Override public boolean isMyContext(@NotNull PsiElement element) { return GoLanguage.INSTANCE.is(element.getLanguage()); } }
@NotNull @Override public FileViewProvider createFileViewProvider(@NotNull VirtualFile virtualFile, @NotNull Language language, @NotNull PsiManager psiManager, boolean eventSystemEnabled) { assert language.isKindOf(org.elixir_lang.eex.Language.INSTANCE); return new ViewProvider(psiManager, virtualFile, eventSystemEnabled, language); } }
private static IElementType elementType(com.intellij.lang.Language language) { return ELEMENT_TYPE_BY_LANGUAGE_ID.computeIfAbsent( language.getID(), languageID -> { IElementType elementType; if (language == ElixirLanguage.INSTANCE) { elementType = new EmbeddedElixir(); } else { elementType = new TemplateData(language); } return elementType; } ); }
private void registerExternalAnnotatorForAllLanguages() { // filters fix #212: displaying annotations three times Language.getRegisteredLanguages().stream() .filter(SonarIntellijPluginApplicationComponent::doesNotImplementMetaLanguage) .filter(SonarIntellijPluginApplicationComponent::doesNotHaveBaseLanguage) .forEach(this::registerExternalAnnotatorFor); }
private EditorHighlighter createHighlighter(EditorColorsScheme settings) { Language language = Language.findLanguageByID("JSON"); if (language == null) { language = Language.ANY; } return new LexerEditorHighlighter(PlainTextSyntaxHighlighterFactory.getSyntaxHighlighter(language, null, null), settings); }
@Nullable @Override public String valueOf(Item item) { Language language = Language.findLanguageByID(item.languageId); return language == null ? PerlBundle.message("perl.settings.markers.language.unsupported", item.languageId) : language.getDisplayName(); } }
public static void fillWithInjectableMarkers(@NotNull PsiElement element, @NotNull final CompletionResultSet resultSet) { // injectable markers PerlInjectionMarkersService injectionService = PerlInjectionMarkersService.getInstance(element.getProject()); for (String marker : injectionService.getSupportedMarkers()) { Language language = injectionService.getLanguageByMarker(marker); if (language == null) { continue; } LookupElementBuilder newItem = LookupElementBuilder .create(marker) .withTypeText("inject with " + language.getDisplayName(), true); if (language.getAssociatedFileType() != null) { newItem = newItem.withIcon(language.getAssociatedFileType().getIcon()); } resultSet.addElement(newItem); } }
type = language.getAssociatedFileType();
@Nullable public static LivePreviewLanguage findInstance(PsiFile psiFile) { VirtualFile vFile = psiFile.getVirtualFile(); if (vFile == null) return null; for (Language language : Language.getRegisteredLanguages()) { if (language instanceof LivePreviewLanguage && vFile.equals(((LivePreviewLanguage)language).getGrammarFile())) { return (LivePreviewLanguage)language; } } return null; }
private List<Item> computeItems() { return PerlInjectionMarkersService.getInstance(myProject).computeMergedMarkersMap().entrySet().stream() .filter(it -> Language.findLanguageByID(it.getValue()) != null) .map(it -> new Item(it.getKey(), it.getValue())) .collect(Collectors.toList()); }
public static PsiFile createFile(Project project, Language language, String text) { LanguageFileType ftype = language.getAssociatedFileType(); if ( ftype==null ) return null; String ext = ftype.getDefaultExtension(); String fileName = "___fubar___."+ext; // random name but must have correct extension PsiFileFactoryImpl factory = (PsiFileFactoryImpl)PsiFileFactory.getInstance(project); return factory.createFileFromText(fileName, language, text, false, false); } }
@Override public Result postProcessEnter(@NotNull PsiFile file, @NotNull Editor editor, @NotNull DataContext dataContext) { if (!file.getLanguage().is(BallerinaLanguage.INSTANCE)) { return Result.Continue;
@Nullable private ParserDefinition getDefinition(@NotNull com.intellij.lang.Language language) { com.intellij.lang.Language baseLanguage = getBaseLanguage(); if (language.isKindOf(baseLanguage)) { language = baseLanguage; } return LanguageParserDefinitions.INSTANCE.forLanguage(language); }
private static void addNavigationElements(@NotNull TreeElement root, @NotNull TIntArrayList navigationOffsets, boolean start) { if (root instanceof PsiTreeElementBase) { PsiElement element = ((PsiTreeElementBase)root).getValue(); int offset; if (start) { offset = element.getTextRange().getStartOffset(); if (element.getLanguage().getID().equals("JAVA")) { // HACK: for Java classes and methods, we want to jump to the opening brace int textOffset = element.getTextOffset(); int braceIndex = element.getText().indexOf('{', textOffset - offset); if (braceIndex >= 0) { offset += braceIndex; } } } else { offset = element.getTextRange().getEndOffset() - 1; } if (!navigationOffsets.contains(offset)) { navigationOffsets.add(offset); } } for (TreeElement child : root.getChildren()) { addNavigationElements(child, navigationOffsets, start); } }
@Override public void initComponent() { plugin = PluginManager.getPlugin(PluginId.getId("org.sonarlint.idea")); Language.getRegisteredLanguages().stream() .filter(SonarApplication::doesNotImplementMetaLanguage) .filter(SonarApplication::doesNotHaveBaseLanguage) .forEach(this::registerExternalAnnotatorFor); registerNotifications(); cleanOldWorkDir(); }
@NotNull private Map<String, Language> computeMarkersMap() { HashMap<String, Language> result = ContainerUtil.newHashMap(); computeMergedMarkersMap().forEach((marker, languageid) -> result.put(marker, Language.findLanguageByID(languageid))); return result; }
@Override public Result postProcessEnter(@NotNull PsiFile file, @NotNull Editor editor, @NotNull DataContext dataContext) { if (!file.getLanguage().is(BallerinaLanguage.INSTANCE)) { return Result.Continue; } // We need to save the file before checking. Otherwise issues can occur when we press enter in a string. Project project = file.getProject(); PsiDocumentManager.getInstance(project).commitDocument(editor.getDocument()); // Checks whether the previous line starts with "#". LogicalPosition caretPos = editor.getCaretModel().getLogicalPosition(); int prevLine = caretPos.line - 1; String lineString = editor.getDocument().getText( new TextRange(editor.getDocument().getLineStartOffset(prevLine), editor.getDocument().getLineEndOffset(prevLine))); if (lineString.trim().startsWith("#")) { int newCol = lineString.indexOf("#"); String enteredText = editor.getDocument().getText( new TextRange(editor.getDocument().getLineStartOffset(caretPos.line), editor.getDocument().getLineEndOffset(caretPos.line))).trim(); editor.getDocument().deleteString(editor.getDocument().getLineStartOffset(caretPos.line), editor.getDocument().getLineEndOffset(caretPos.line)); editor.getCaretModel().moveToLogicalPosition(new LogicalPosition(caretPos.line, 1)); enterNewLine(editor, enteredText, newCol); // Commit the document. PsiDocumentManager.getInstance(project).commitDocument(editor.getDocument()); } return Result.Continue; }
@Override public boolean isInContext(@NotNull PsiFile psiFile, int offset) { if (!PsiUtilCore.getLanguageAtOffset(psiFile, offset).isKindOf(ElixirLanguage.INSTANCE)) return false; PsiElement element = psiFile.findElementAt(offset); return !(element instanceof PsiWhiteSpace) && element != null; } }
@Override public List<AnAction> promote(List<AnAction> actions, DataContext context) { PsiFile psiFile = PlatformDataKeys.PSI_FILE.getData(context); if (psiFile != null) { String languageId = psiFile.getLanguage().getID(); if (isSupported(languageId)) { return checkForExecuteQueryAction(actions); } } return Collections.emptyList(); }
public PerlInjectionMarkersTable(@NotNull Project project) { super(new MyModel()); myProject = project; final TableColumn languageColumn = getColumnModel().getColumn(1); List<String> languageIds = Language.getRegisteredLanguages().stream() .map(Language::getID) .filter(it -> !it.isEmpty()) .sorted() .collect(Collectors.toList()); ComboBoxTableRenderer<String> roleComboBoxTableRenderer = new ComboBoxTableRenderer<String>(ArrayUtil.toStringArray(languageIds)) { @Override public boolean isCellEditable(EventObject event) { if (event instanceof MouseEvent) { return ((MouseEvent)event).getClickCount() >= 1; } return true; } }; languageColumn.setCellRenderer(roleComboBoxTableRenderer); languageColumn.setCellEditor(roleComboBoxTableRenderer); getColumnModel().getColumn(0).setPreferredWidth(200); languageColumn.setPreferredWidth(600); }