EmmetPreviewHint (final @NotNull EditorEx parentEditor, @NotNull String templateText, @NotNull FileType fileType) { EditorFactory editorFactory = EditorFactory.getInstance(); Document document = editorFactory.createDocument(templateText); final EditorEx previewEditor = (EditorEx)editorFactory.createEditor(document, parentEditor.getProject(), fileType, true); MarkupModelEx model = previewEditor.getMarkupModel(); if (model instanceof EditorMarkupModel) { ((EditorMarkupModel)model).setErrorStripeVisible(true); } final EditorSettings settings = previewEditor.getSettings(); settings.setLineNumbersShown(false); settings.setAdditionalLinesCount(1); settings.setAdditionalColumnsCount(1); settings.setRightMarginShown(false); settings.setFoldingOutlineShown(false); settings.setLineMarkerAreaShown(false); settings.setIndentGuidesShown(false); settings.setVirtualSpace(false); settings.setWheelFontChangeEnabled(false); settings.setAdditionalPageAtBottom(false); settings.setCaretRowShown(false); previewEditor.setCaretEnabled(false); previewEditor.setBorder(JBUI.Borders.empty()); JBPanel panel = new JBPanel(new BorderLayout()) { @Override public @NotNull Dimension getPreferredSize() { Dimension size = super.getPreferredSize(); Dimension parentEditorSize = parentEditor.getScrollPane().getSize(); int maxWidth = (int)parentEditorSize.getWidth() / 3; int maxHeight = (int)parentEditorSize.getHeight() / 2; final int width = settings.isUseSoftWraps() ? maxWidth : Math.min((int)size.getWidth(), maxWidth); final int height = Math.min((int)size.getHeight(), maxHeight); return new Dimension(width, height); } @Override public @NotNull Insets getInsets() { return JBUI.insets(1, 2, 0, 0); } }; panel.setBackground(previewEditor.getBackgroundColor()); panel.add(previewEditor.getComponent(), BorderLayout.CENTER); return new EmmetPreviewHint(panel, previewEditor, parentEditor); }