###############################################################################
# Copyright (c) 2001, 2018 IBM Corporation and others.
# All rights reserved. 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
#
# Contributors:
#     IBM Corporation - initial API and implementation
#     Jens Lukowski/Innoopract - initial renaming/restructuring
#     
###############################################################################
bin.includes = plugin.xml,\
               .options,\
               .,\
               css/,\
               icons/,\
               plugin.properties,\
               META-INF/,\
               about.html
bin.excludes = bin/**,\
               @dot/**,\
               temp.folder/**
src.includes = toc.xml,\
               testToc.xml,\
               schema/,\
               html/
source.. = src/,\
           src-extensions/,\
           src-encoding/,\
           src-tasktags/
