###############################################################################
# Copyright (c) 2016, 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-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     Sopot Cela & Mickael Istria (Red Hat Inc.) - initial implementation
#     Lucas Bullen (Red Hat Inc.) - Bug 508829 custom reconciler support
#                                 - Bug 521382 default highlighter
#     Simon Scholz <simon.scholz@vogella.com> - Bug 527830
###############################################################################
genericEditor_name=Generic Text Editor
ExtPoint.reconciliers=Reconciliers
ExtPoint.presentationReconciliers=Presentation Reconciliers
ExtPoint.hoverProviders= Hover Providers
ExtPoint.contentAssistProcessors=Content Assist Providers
ExtPoint.autoEditStrategies=Auto Edit Strategies
ExtPoint.highlightReconcilers=Highlight Reconcilers
ExtPoint.foldingReconcilers=Folding Reconcilers
ExtPoint.characterPairMatchers=Character Pair Matcher Providers
ExtPoint.hyperlinkDetectorTarget=Generic Text Editor
openDeclarationCommand_name=Open Declaration
context_name=in Generic Code Editor
context_description=When editing in the Generic Code Editor
findReferencesCommand_name=Find References
findReferencesCommand_description=Find other code items referencing the current selected item.
Bundle-Vendor=Eclipse.org
Bundle-Name=Generic and Extensible Text Editor
command.toggle.highlight.label = Toggle Mark Occurences
command.toggle.highlight.name = Toggle Highlight
menu.source.label = Source