Package org.eclipse.jface.text.source

# Interface ILineDiffer

public interface ILineDiffer
Protocol that allows direct access to line information. Usually, implementations will also implement `IAnnotationModel`, which only allows `Iterator` based access to annotations.

`ILineDiffer` also allows to revert any lines to their original contents as defined by the quick diff reference used by the receiver.

This interface may be implemented by clients.

In order to provide backward compatibility for clients of `ILineDiffer`, extension interfaces are used to provide a means of evolution. The following extension interface exists:

- `ILineDifferExtension` (since version 3.1): introducing the concept suspending and resuming an `ILineDiffer`.
- `ILineDifferExtension2` (since version 3.3): allowing to query the suspension state of an `ILineDiffer`.

Since:
  3.0

## Method Summary

Modifier and Type
Method
Description
`ILineDiffInfo`
`getLineInfo(int line)`
Determines the line state for line `line` in the targeted document.
`int`
`restoreAfterLine(int line)`
Restores the deleted lines after `line`.
`void`
`revertBlock(int line)`
Reverts a block of modified / added lines to their original state, including any deleted lines inside the block or at its borders.
`void`
`revertLine(int line)`
Reverts a single changed line to its original state, not touching any lines that are deleted at its borders.
`void`
`revertSelection(int line, int nLines)`
Reverts a range of lines to their original state, including any deleted lines inside the block or at its borders.

## Method Details

### getLineInfo

ILineDiffInfo getLineInfo(int line)
Determines the line state for line `line` in the targeted document.

Parameters:
  `line` - the line to get diff information for
Returns:
  the line information object for `line` or `null` if none

### revertLine

void revertLine(int line) throws BadLocationException
Reverts a single changed line to its original state, not touching any lines that are deleted at its borders.

Parameters:
  `line` - the line number of the line to be restored.
Throws:
  `BadLocationException` - if `line` is out of bounds.

### revertBlock

void revertBlock(int line) throws BadLocationException
Reverts a block of modified / added lines to their original state, including any deleted lines inside the block or at its borders. A block is considered to be a range of modified (e.g. changed, or added) lines.

Parameters:
  `line` - any line in the block to be reverted.
Throws:
  `BadLocationException` - if `line` is out of bounds.

### revertSelection

void revertSelection(int line, int nLines) throws BadLocationException
Reverts a range of lines to their original state, including any deleted lines inside the block or at its borders.

Parameters:
  `line` - any line in the block to be reverted.
  `nLines` - the number of lines to be reverted, must be > 0.
Throws:
  `BadLocationException` - if `line` is out of bounds.

### restoreAfterLine

int restoreAfterLine(int line) throws BadLocationException
Restores the deleted lines after `line`.

Parameters:
  `line` - the deleted lines following this line number are restored.
Returns:
  the number of restored lines.
Throws:
  `BadLocationException` - if `line` is out of bounds.