# Derived Source Search Participants

###### Identifier:

org.eclipse.jdt.core.derivedSourceSearchParticipant

###### Since:

3.46

###### Description:

This extension point allows clients to contribute search participants for non-Java source files that are registered under the `org.eclipse.jdt.core.javaDerivedSource` content type. When files with the specified extensions are discovered in source folders, JDT Core's indexing pipeline will route them to the registered search participant for indexing. The participant's indexes are also queried during search operations.

###### Configuration Markup:

<!ELEMENT extension (derivedSourceSearchParticipant*)>

<!ATTLIST extension

point CDATA #REQUIRED

id CDATA #IMPLIED

name CDATA #IMPLIED>

<!ELEMENT derivedSourceSearchParticipant EMPTY>

<!ATTLIST derivedSourceSearchParticipant

class CDATA #REQUIRED

id CDATA #REQUIRED

fileExtensions CDATA #REQUIRED

languageId CDATA #IMPLIED>

Definition of a search participant for non-Java source files.

- class - The class that implements this search participant. This class must extend `org.eclipse.jdt.core.search.DerivedSourceSearchParticipant` with a public 0-argument constructor.
- id - A unique identifier for this search participant.
- fileExtensions - A comma-separated list of file extensions (without dots) that this participant handles. These extensions must be registered under the `org.eclipse.jdt.core.javaDerivedSource` content type. For example: `kt,kts`.
- languageId - The LSP language identifier for the source files handled by this participant (e.g. `kotlin`, `scala`). Used by language server handlers to tag hover content and other language-specific responses. If omitted, defaults to the first file extension.

###### Examples:

Example of a declaration of a `derivedSourceSearchParticipant`:

    <extension
          point="org.eclipse.jdt.core.derivedSourceSearchParticipant">
       <derivedSourceSearchParticipant
             class="co.karellen.jdt.kotlin.search.KotlinSearchParticipant"
             id="co.karellen.jdt.kotlin.derivedSourceSearchParticipant"
             fileExtensions="kt,kts"
             languageId="kotlin">
       </derivedSourceSearchParticipant>
    </extension>

###### API Information:

The contributed class must extend `org.eclipse.jdt.core.search.DerivedSourceSearchParticipant`. It will be called by JDT Core's `IndexManager` when files matching the declared extensions are discovered in source folders. The participant is responsible for parsing the file content and calling `SearchDocument.addIndexEntry()` to populate the search index.

###### Supplied Implementation:

JDT Core provides the default Java search participant via `SearchEngine.getDefaultSearchParticipant()`, which handles `.java` and `.class` files. This extension point is for additional non-Java languages.

Copyright (c) 2026 Eclipse Foundation and others.
This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0