mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-28 01:07:49 +08:00
82 lines
4.4 KiB
Markdown
82 lines
4.4 KiB
Markdown
Basics of working with the editor
|
|
===========
|
|
|
|
Classes for working with editor, e.g. to manipulate the caret, get an access to a text selection, or modify the text, currently represented in the editor, are located in
|
|
[editor-ui-api] (https://github.com/JetBrains/intellij-community/tree/master/platform/editor-ui-api)
|
|
package. Note, that this part of the API allows to operate only with text.
|
|
If you need to access PSI please see
|
|
[PSI Cookbook] (https://confluence.jetbrains.com/display/IDEADEV/PSI+Cookbook)
|
|
section.
|
|
|
|
-----------
|
|
|
|
#Editor
|
|
An instance on IntelliJ IDEA editor is represented by an interface
|
|
[Editor.java] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/editor/Editor.java),
|
|
and it's implementation can be found in a class
|
|
[EditorImpl.java] (https://github.com/JetBrains/intellij-community/blob/master/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java).
|
|
|
|
##Get an instance of the active editor
|
|
A reference to an instance of the editor can be obtained by calling
|
|
|
|
CommonDataKeys.EDITOR
|
|
|
|
To access the editor instance directly the following ways can be used:
|
|
|
|
* If [DataContext] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/DataContext.java)
|
|
object is available ```final Editor editor = CommonDataKeys.EDITOR.getData(context);```
|
|
* If [ActionEvent] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/AnActionEvent.java)
|
|
object is available ```final Editor editor = actionEvent.getData(CommonDataKeys.EDITOR);```
|
|
|
|
##Obtaining content: document, caret, selection, and more
|
|
###Document.
|
|
[Document.java] (https://github.com/JetBrains/intellij-community/blob/master/platform/core-api/src/com/intellij/openapi/editor/Document.java)
|
|
represents the contents of a text file loaded into memory, and possibly opened in an IDEA
|
|
text editor. Line breaks in the document text are always normalized as single \n characters,
|
|
and are converted to proper format when the document is saved.
|
|
[Document] (https://github.com/JetBrains/intellij-community/blob/master/platform/core-api/src/com/intellij/openapi/editor/Document.java)
|
|
can be obtained by calling ```Document document = editor.getDocument();```
|
|
|
|
###Models
|
|
Different services for controlling and getting information about visible areas the editor can be accessible set of getters, e.g.
|
|
```final SelectionModel selectionModel = editor.getSelectionModel();```
|
|
|
|
Editor model classes are located in
|
|
[editor] (https://github.com/JetBrains/intellij-community/tree/master/platform/editor-ui-api/src/com/intellij/openapi/editor)
|
|
subpackage of the
|
|
[editor-ui-api] (https://github.com/JetBrains/intellij-community/tree/master/platform/editor-ui-api)
|
|
package and include:
|
|
[CaretModel.java] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/editor/CaretModel.java),
|
|
[FoldingModel.java] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/editor/FoldingModel.java),
|
|
[IndentsModel.java] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/editor/IndentsModel.java),
|
|
[ScrollingModel.java] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/editor/ScrollingModel.java),
|
|
[ScrollingModel.java] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/editor/ScrollingModel.java),
|
|
[SoftWrapModel.java] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/editor/SoftWrapModel.java)
|
|
|
|
Please see
|
|
[EditorIllustration.java] (https://github.com/JetBrains/intellij-sdk/blob/master/code_samples/editor_basics/src/org/jetbrains/plugins/editor/basics/EditorIllustration.java)
|
|
for more details.
|
|
|
|
#EditorFactory
|
|
**TODO**
|
|
|
|
#DataContext
|
|
**TODO**
|
|
|
|
#AnActionEvent
|
|
**TODO**
|
|
|
|
----------------
|
|
|
|
See also
|
|
[CommonDataKeys.java] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/CommonDataKeys.java),
|
|
[DataKey.java] (https://github.com/JetBrains/intellij-community/blob/master/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/DataKey.java)
|
|
|
|
**TODO**
|
|
Link to architectural overview and threading issues
|
|
|
|
|
|
|
|
|
|
|