diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 9d5c7a435..2c56f99eb 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -14,6 +14,7 @@ This document provides a high-level view of the changes introduced by release. - Bump org.asciidoctor:asciidoctorj-diagram from 2.3.0 to 2.3.1 (#1639) - Bump org.asciidoctor:asciidoctorj-diagram-plantuml from 1.2024.3 to 1.2024.5 (#1638) - Don't show an error in the editor if an include doesn't find the Antora component (#1660) +- When creating a missing file in an Antora component, put it in the correct family folder === 0.42.2 diff --git a/src/main/java/org/asciidoc/intellij/psi/AsciiDocFileReference.java b/src/main/java/org/asciidoc/intellij/psi/AsciiDocFileReference.java index ac0ee9080..11031634c 100644 --- a/src/main/java/org/asciidoc/intellij/psi/AsciiDocFileReference.java +++ b/src/main/java/org/asciidoc/intellij/psi/AsciiDocFileReference.java @@ -182,6 +182,21 @@ public boolean canBeCreated() { if (resolved.size() == 1) { PsiElement baseElement = resolved.get(0).getElement(); if (baseElement instanceof PsiDirectory) { + if (isAntora && AsciiDocUtil.ANTORA_PREFIX_PATTERN.matcher(base).matches()) { + if (macroName.equals("image") || macroName.equals("video") || macroName.equals("audio")) { + PsiDirectory images = ((PsiDirectory) baseElement).findSubdirectory("images"); + if (images == null) { + images = ((PsiDirectory) baseElement).createSubdirectory("images"); + } + baseElement = images; + } else if (macroName.equals("xref") || macroName.equals("xref-attr") || macroName.equals("include")) { + PsiDirectory pages = ((PsiDirectory) baseElement).findSubdirectory("pages"); + if (pages == null) { + pages = ((PsiDirectory) baseElement).createSubdirectory("pages"); + } + baseElement = pages; + } + } PsiDirectory parent = (PsiDirectory) baseElement; String name = AsciiDocUtil.resolveAttributes(root, key); if (name != null) {