mirror of
https://github.com/chylex/IntelliJ-IdeaVim.git
synced 2025-05-20 22:34:06 +02:00
Fix an issue that the highlighting was silently missing due to an error
This commit is contained in:
parent
2e8548cb25
commit
e257a10525
src/main/java/com/maddyhome/idea/vim/ui/ex
vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api
@ -382,7 +382,7 @@ public class ExEntryPanel extends JPanel implements VimCommandLine {
|
|||||||
catch (Throwable ex) {
|
catch (Throwable ex) {
|
||||||
// Make sure the exception doesn't leak out of the handler, because it can break the text entry field and
|
// Make sure the exception doesn't leak out of the handler, because it can break the text entry field and
|
||||||
// require the editor to be closed/reopened. The worst that will happen is no incsearch highlights
|
// require the editor to be closed/reopened. The worst that will happen is no incsearch highlights
|
||||||
logger.warn("Error while trying to show incsearch highlights", ex);
|
logger.error("Error while trying to show incsearch highlights", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -397,7 +397,7 @@ public class ExEntryPanel extends JPanel implements VimCommandLine {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
logger.warn("Cannot parse command for incsearch", e);
|
logger.error("Cannot parse command for incsearch", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
@ -49,8 +49,16 @@ interface VimCommandLine {
|
|||||||
* This text represents the real content that is being processed or executed.
|
* This text represents the real content that is being processed or executed.
|
||||||
*/
|
*/
|
||||||
val actualText: String
|
val actualText: String
|
||||||
get() = if (promptCharacterOffset == null) visibleText else {
|
get() {
|
||||||
visibleText.removeRange(promptCharacterOffset!!, promptCharacterOffset!! + 1)
|
val promptCharacterOffset1 = promptCharacterOffset
|
||||||
|
return if (promptCharacterOffset1 == null) visibleText else {
|
||||||
|
if (promptCharacterOffset1 >= visibleText.length) {
|
||||||
|
logger.error("promptCharacterOffset1 >= visibleText.length: $promptCharacterOffset1 >= ${visibleText.length}")
|
||||||
|
visibleText
|
||||||
|
} else {
|
||||||
|
visibleText.removeRange(promptCharacterOffset1, promptCharacterOffset1 + 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -98,9 +106,12 @@ interface VimCommandLine {
|
|||||||
fun clearPromptCharacter() {
|
fun clearPromptCharacter() {
|
||||||
if (promptCharacterOffset == null) return
|
if (promptCharacterOffset == null) return
|
||||||
|
|
||||||
|
// Note: We have to set promptCharacterOffset to null first, because when we set the new text,
|
||||||
|
// the listener will be called, which will try to get the actual text again. And, if this field isn't null,
|
||||||
|
// it will get an incorrect result.
|
||||||
|
promptCharacterOffset = null
|
||||||
setText(actualText)
|
setText(actualText)
|
||||||
caret.offset = min(caret.offset, visibleText.length)
|
caret.offset = min(caret.offset, visibleText.length)
|
||||||
promptCharacterOffset = null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun clearCurrentAction()
|
fun clearCurrentAction()
|
||||||
|
Loading…
Reference in New Issue
Block a user