mirror of
https://github.com/chylex/IntelliJ-IdeaVim.git
synced 2025-06-02 13:34:07 +02:00
Add readActions & EDT
This commit is contained in:
parent
0e03151505
commit
45a2eadc58
src/main/java/com/maddyhome/idea/vim/newapi
vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api
@ -22,6 +22,7 @@ import com.maddyhome.idea.vim.api.VimCaret
|
||||
import com.maddyhome.idea.vim.api.VimCaretBase
|
||||
import com.maddyhome.idea.vim.api.VimEditor
|
||||
import com.maddyhome.idea.vim.api.VimVisualPosition
|
||||
import com.maddyhome.idea.vim.api.injector
|
||||
import com.maddyhome.idea.vim.common.EditorLine
|
||||
import com.maddyhome.idea.vim.common.LiveRange
|
||||
import com.maddyhome.idea.vim.common.Offset
|
||||
@ -88,7 +89,7 @@ internal class IjVimCaret(val caret: Caret) : VimCaretBase() {
|
||||
override val editor: VimEditor
|
||||
get() = IjVimEditor(caret.editor)
|
||||
override val offset: Offset
|
||||
get() = caret.offset.offset
|
||||
get() = injector.application.runReadAction { caret.offset.offset }
|
||||
override var vimLastColumn: Int
|
||||
get() = caret.vimLastColumn
|
||||
set(value) {
|
||||
|
@ -35,6 +35,7 @@ import com.maddyhome.idea.vim.api.VimScrollingModel
|
||||
import com.maddyhome.idea.vim.api.VimSelectionModel
|
||||
import com.maddyhome.idea.vim.api.VimVisualPosition
|
||||
import com.maddyhome.idea.vim.api.VirtualFile
|
||||
import com.maddyhome.idea.vim.api.injector
|
||||
import com.maddyhome.idea.vim.command.OperatorArguments
|
||||
import com.maddyhome.idea.vim.common.EditorLine
|
||||
import com.maddyhome.idea.vim.common.IndentConfig
|
||||
@ -428,7 +429,9 @@ internal class IjVimEditor(editor: Editor) : MutableLinearEditor() {
|
||||
}
|
||||
|
||||
override fun createLiveMarker(start: Offset, end: Offset): LiveRange {
|
||||
return editor.document.createRangeMarker(start.point, end.point).vim
|
||||
return injector.application.runReadAction {
|
||||
editor.document.createRangeMarker(start.point, end.point).vim
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -432,6 +432,7 @@ public abstract class VimChangeGroupBase : VimChangeGroup {
|
||||
* @param mode The mode - indicate insert or replace
|
||||
*/
|
||||
override fun initInsert(editor: VimEditor, context: ExecutionContext, mode: Mode) {
|
||||
injector.application.invokeAndWait {
|
||||
val state = getInstance(editor)
|
||||
for (caret in editor.nativeCarets()) {
|
||||
caret.vimInsertStart = editor.createLiveMarker(caret.offset, caret.offset)
|
||||
@ -484,6 +485,7 @@ public abstract class VimChangeGroupBase : VimChangeGroup {
|
||||
}
|
||||
notifyListeners(editor)
|
||||
}
|
||||
}
|
||||
|
||||
override fun runEnterAction(editor: VimEditor, context: ExecutionContext) {
|
||||
val state = getInstance(editor)
|
||||
|
Loading…
Reference in New Issue
Block a user