public interface IHandlyXtextDocument
extends org.eclipse.xtext.ui.editor.model.IXtextDocument
IXtextDocument
.Modifier and Type | Interface and Description |
---|---|
static interface |
IHandlyXtextDocument.IUndoableUnitOfWork<R,P>
An undoable top-level unit of work will be
notified of an undo change
just after modifications made by the whole transaction
have been applied to the document. |
Modifier and Type | Method and Description |
---|---|
IDocumentChange |
applyChange(IDocumentChange change)
Applies the given change to the document.
|
ISnapshot |
getReconciledSnapshot()
Returns the snapshot from which the document's resource was parsed
in the last
reconcile
operation, or null if the document has no resource (either
not set or already disposed). |
<T> T |
modify(org.eclipse.xtext.util.concurrent.IUnitOfWork<T,org.eclipse.xtext.resource.XtextResource> work)
Executes the given unit of work under the (exclusive) write lock.
|
boolean |
needsReconciling()
Returns whether the resource contents is out of sync
with the document contents and needs to be reconciled.
|
<T> T |
readOnly(org.eclipse.xtext.util.concurrent.IUnitOfWork<T,org.eclipse.xtext.resource.XtextResource> work)
Executes the given unit of work under the read lock.
|
void |
reconcile(boolean force,
org.eclipse.core.runtime.IProgressMonitor monitor)
Re-parses the resource so it becomes reconciled with the document contents.
|
addModelListener, addXtextDocumentContentObserver, getAdapter, removeModelListener, removeXtextDocumentContentObserver
addDocumentListener, addDocumentPartitioningListener, addPosition, addPosition, addPositionCategory, addPositionUpdater, addPrenotifiedDocumentListener, computeIndexInCategory, computeNumberOfLines, computePartitioning, containsPosition, containsPositionCategory, get, get, getChar, getContentType, getDocumentPartitioner, getLegalContentTypes, getLegalLineDelimiters, getLength, getLineDelimiter, getLineInformation, getLineInformationOfOffset, getLineLength, getLineOffset, getLineOfOffset, getNumberOfLines, getNumberOfLines, getPartition, getPositionCategories, getPositions, getPositionUpdaters, insertPositionUpdater, removeDocumentListener, removeDocumentPartitioningListener, removePosition, removePosition, removePositionCategory, removePositionUpdater, removePrenotifiedDocumentListener, replace, search, set, setDocumentPartitioner
computePartitioning, getContentType, getDocumentPartitioner, getLegalContentTypes, getPartition, getPartitionings, setDocumentPartitioner
tryReadOnly, tryReadOnly, tryReadOnly
boolean needsReconciling()
true
if reconciling is needed,
false
otherwisevoid reconcile(boolean force, org.eclipse.core.runtime.IProgressMonitor monitor)
force == false
.force
- indicates whether reconciling has to be performed
even if it is not neededmonitor
- a progress monitor, or null
if progress reporting is not desired. The caller must not rely on
IProgressMonitor.done()
having been called by the receiverorg.eclipse.core.runtime.OperationCanceledException
- if this method is canceledNoXtextResourceException
- if force == true
and
the document has no resource (either not set or already disposed)ISnapshot getReconciledSnapshot()
reconcile
operation, or null
if the document has no resource (either
not set or already disposed). Note that the returned snapshot may
turn out to be stale.null
<T> T readOnly(org.eclipse.xtext.util.concurrent.IUnitOfWork<T,org.eclipse.xtext.resource.XtextResource> work)
While inside the dynamic context of the unit of work,
the resource contents is guaranteed to be based on the last reconciled snapshot
. Usually,
there is no need for clients to do a reconcile
before calling this method to ensure
a fresh snapshot. Reconciling will happen automatically before
the top-level unit of work is run.
readOnly
in interface org.eclipse.xtext.util.concurrent.IReadAccess<org.eclipse.xtext.resource.XtextResource>
work
- a read-only unit of work - must not be null
null
.
Must not contain any references to the resource or its contents
(both semantic objects and parse tree nodes)<T> T modify(org.eclipse.xtext.util.concurrent.IUnitOfWork<T,org.eclipse.xtext.resource.XtextResource> work)
Automatically updates the document contents so it is reconciled with
the resource modifications performed by the unit of work.
Units of work may be nested - changes are only applied to the document
after successful completion of the top-level modification,
i.e. when all the work is done. If the top-level unit of work is
undoable
, it will be notified
of an undo change that can be later applied
to the document to revert modifications made by
the whole transaction.
Before the top-level unit of work is run, the resource contents
is guaranteed to be based on the last reconciled snapshot
. That snapshot is regarded as the base
snapshot for the whole transaction, i.e. if it turns out to be stale
when changes are to be applied to the document, this method will throw
StaleSnapshotException
. Usually, there is no need for clients
to do a reconcile
before calling this method to ensure a fresh snapshot. Reconciling
will happen automatically before the top-level unit of work is run.
modify
in interface org.eclipse.xtext.util.concurrent.IWriteAccess<org.eclipse.xtext.resource.XtextResource>
work
- a modifying unit of work - must not be null
null
.
Must not contain any references to the resource or its contents
(both semantic objects and parse tree nodes)StaleSnapshotException
- if the document's contents have changed
since the inception of the transaction's base snapshotIDocumentChange applyChange(IDocumentChange change) throws org.eclipse.jface.text.BadLocationException
StaleSnapshotException
is thrown.change
- a document change - must not be null
null
StaleSnapshotException
- if the document's contents have changed
since the inception of the snapshot on which the change is basedorg.eclipse.text.edits.MalformedTreeException
- if the change's edit tree isn't
in a valid stateorg.eclipse.jface.text.BadLocationException
- if one of the edits in the tree
can't be executed