# Folding reconcilers

###### Identifier:

org.eclipse.ui.genericeditor.foldingReconcilers

###### Since:

1.1

###### Description:

This extension point is used to contribute folding reconcilers for controlling the folding on a file with a given content type.

###### Configuration Markup:

<!ELEMENT extension (foldingReconciler)+>

<!ATTLIST extension

point CDATA #REQUIRED

id CDATA #IMPLIED

name CDATA #IMPLIED>

- point - a fully qualified identifier of the target extension point
- id - an optional identifier of the extension instance
- name - an optional name of the extension instance

<!ELEMENT foldingReconciler (enabledWhen?)>

<!ATTLIST foldingReconciler

class CDATA #REQUIRED

contentType IDREF #REQUIRED>

- class - The fully qualified class name implementing the interface `org.eclipse.jface.text.reconciler.IReconciler` To manipulate folding, the implementation reconciler needs to use ProjectionAnnotation and viewer.getProjectionModel(). You can find a sample in org.eclipse.ui.internal.genericeditor.folding.DefaultFoldingReconciler.
- contentType - The target content-type for this extension. Content-types are defined as extension to the org.eclipse.core.contenttype.contentTypes extension point.

<!ELEMENT foldingReconcilingStrategy (enabledWhen?)>

<!ATTLIST foldingReconcilingStrategy

class CDATA #REQUIRED

contentType IDREF #REQUIRED>

- class - The fully qualified class name implementing the interface `org.eclipse.jface.text.reconciler.IReconcilingStrategy`
- contentType - The target content-type for this extension. Content-types are defined as extension to the org.eclipse.core.contenttype.contentTypes extension point.

<!ELEMENT enabledWhen (not | or | and | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate | reference)?>

A core Expression that controls the enabled of the given folding reconciler. The viewer, editor, and editor input are registered in the evaluation context as variable: * : use it if your expression requires the viewer. * : use it if your expression requires the document. * : use it if your expression requires the editor (deprecated, not always set). * : use it if your expression requires the editor input (deprecated, not always set).

###### Examples:

Below is an example of how to use the Folding Reconciler extension point:

    <extension point="org.eclipse.ui.genericeditor.foldingReconcilers">
       <foldingReconciler
           class="org.eclipse.ui.genericeditor.examples.TargetDefinitionFoldingReconciler"
           contentType="org.eclipse.pde.targetFile">
          <enabledWhen>
             <with variable="editor">
                <test property="org.eclipse.ui.genericeditor.examples.TargetDefinitionPropertyTester">
                </test>
             </with>
          </enabledWhen>
       </foldingReconciler>
    </extension>

Copyright (c) 2017 Red Hat Inc. 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-v20.html/ SPDX-License-Identifier: EPL-2.0