mirror of
https://github.com/chylex/IntelliJ-IdeaVim.git
synced 2025-02-27 17:45:59 +01:00
Pass editor to the message service
This commit is contained in:
parent
ec121fb327
commit
dcac3be0da
src/main/java/com/maddyhome/idea/vim
vim-engine/src/main/kotlin/com/maddyhome/idea/vim
@ -189,10 +189,6 @@ public class VimPlugin implements PersistentStateComponent<Element>, Disposable
|
||||
return ((WindowGroup)VimInjectorKt.getInjector().getWindow());
|
||||
}
|
||||
|
||||
public static @NotNull TabService getTabService() {
|
||||
return ApplicationManager.getApplication().getService(TabService.class);
|
||||
}
|
||||
|
||||
public static @NotNull EditorGroup getEditor() {
|
||||
return ApplicationManager.getApplication().getService(EditorGroup.class);
|
||||
}
|
||||
@ -293,12 +289,8 @@ public class VimPlugin implements PersistentStateComponent<Element>, Disposable
|
||||
VimInjectorKt.getInjector().getMessages().clearError();
|
||||
}
|
||||
|
||||
public static void showMode(String msg) {
|
||||
VimInjectorKt.getInjector().getMessages().showMode(msg);
|
||||
}
|
||||
|
||||
public static void showMessage(@Nls(capitalization = Nls.Capitalization.Sentence) @Nullable String msg) {
|
||||
VimInjectorKt.getInjector().getMessages().showStatusBarMessage(msg);
|
||||
VimInjectorKt.getInjector().getMessages().showStatusBarMessage(null, msg);
|
||||
}
|
||||
|
||||
public static @NotNull VimPlugin getInstance() {
|
||||
|
@ -12,6 +12,7 @@ import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.components.Service
|
||||
import com.intellij.openapi.project.ProjectManager
|
||||
import com.intellij.openapi.wm.WindowManager
|
||||
import com.maddyhome.idea.vim.api.VimEditor
|
||||
import com.maddyhome.idea.vim.api.VimMessagesBase
|
||||
import com.maddyhome.idea.vim.api.injector
|
||||
import com.maddyhome.idea.vim.helper.MessageHelper
|
||||
@ -27,7 +28,7 @@ class IjVimMessages : VimMessagesBase() {
|
||||
private var error = false
|
||||
private var lastBeepTimeMillis = 0L
|
||||
|
||||
override fun showStatusBarMessage(message: String?) {
|
||||
override fun showStatusBarMessage(editor: VimEditor?, message: String?) {
|
||||
if (ApplicationManager.getApplication().isUnitTestMode) {
|
||||
this.message = message
|
||||
}
|
||||
|
@ -84,12 +84,12 @@ class RegExp {
|
||||
*/
|
||||
// EMSG_M_RET_null("E369: invalid item in %s%%[]", reg_magic == MAGIC_ALL)
|
||||
private fun EMSG_RET_null(key: String) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(key))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(key))
|
||||
}
|
||||
|
||||
private fun EMSG_M_RET_null(key: String, isMagic: Boolean) {
|
||||
val `val` = if (isMagic) "" else "\\"
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(key, `val`))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(key, `val`))
|
||||
}
|
||||
|
||||
private fun EMSG_ONE_RET_null() {
|
||||
@ -155,7 +155,7 @@ class RegExp {
|
||||
var len: Int
|
||||
val flags = Flags()
|
||||
if (expr == null) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_null))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_null))
|
||||
return null
|
||||
}
|
||||
r = regprog_T()
|
||||
@ -274,7 +274,7 @@ class RegExp {
|
||||
if (paren == REG_ZPAREN) {
|
||||
/* Make a ZOPEN node. */
|
||||
if (regnzpar >= NSUBEXP) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.E50))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.E50))
|
||||
return null
|
||||
}
|
||||
parno = regnzpar
|
||||
@ -336,7 +336,7 @@ class RegExp {
|
||||
|
||||
/* Check for proper termination. */if (paren != REG_NOPAREN && getchr() != Magic.RPAREN) {
|
||||
return if (paren == REG_ZPAREN) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.E52))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.E52))
|
||||
null
|
||||
} else if (paren == REG_NPAREN) {
|
||||
EMSG_M_RET_null(Msg.E53, reg_magic == MAGIC_ALL)
|
||||
@ -350,7 +350,7 @@ class RegExp {
|
||||
EMSG_M_RET_null(Msg.E55, reg_magic == MAGIC_ALL)
|
||||
null
|
||||
} else {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_trailing))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_trailing))
|
||||
null
|
||||
}
|
||||
/* NOTREACHED */
|
||||
@ -581,11 +581,11 @@ class RegExp {
|
||||
/* Can't have a multi follow a multi. */
|
||||
if (peekchr() == Magic.STAR) {
|
||||
val `val` = if (reg_magic >= MAGIC_ON) "" else "\\"
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.E61, `val`))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.E61, `val`))
|
||||
} else {
|
||||
val `val` = if (reg_magic >= MAGIC_ON) "" else "\\"
|
||||
injector.messages.showStatusBarMessage(
|
||||
injector.messages.message(
|
||||
null, injector.messages.message(
|
||||
Msg.E62,
|
||||
`val`,
|
||||
Character.toString(Magic.no_Magic(peekchr()).toChar())
|
||||
@ -651,7 +651,7 @@ class RegExp {
|
||||
}
|
||||
val i = classchars.indexOf(Magic.no_Magic(c).toChar())
|
||||
if (i == -1) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.E63))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.E63))
|
||||
return null
|
||||
}
|
||||
ret = regnode(classcodes[i] + extra)
|
||||
@ -660,7 +660,7 @@ class RegExp {
|
||||
Magic.DOT, Magic.i, Magic.I, Magic.k, Magic.K, Magic.f, Magic.F, Magic.p, Magic.P, Magic.s, Magic.S, Magic.d, Magic.D, Magic.x, Magic.X, Magic.o, Magic.O, Magic.w, Magic.W, Magic.h, Magic.H, Magic.a, Magic.A, Magic.l, Magic.L, Magic.u, Magic.U -> {
|
||||
val i = classchars.indexOf(Magic.no_Magic(c).toChar())
|
||||
if (i == -1) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.E63))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.E63))
|
||||
return null
|
||||
}
|
||||
ret = regnode(classcodes[i] + extra)
|
||||
@ -689,7 +689,7 @@ class RegExp {
|
||||
c = Magic.no_Magic(c)
|
||||
val `val` = if (if (c == '*'.code) reg_magic >= MAGIC_ON else reg_magic == MAGIC_ALL) "" else "\\"
|
||||
injector.messages.showStatusBarMessage(
|
||||
injector.messages.message(
|
||||
null,injector.messages.message(
|
||||
Msg.E64,
|
||||
`val`,
|
||||
Character.toString(c.toChar())
|
||||
@ -713,7 +713,7 @@ class RegExp {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_nopresub))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_nopresub))
|
||||
return null
|
||||
}
|
||||
Magic.N1, Magic.N2, Magic.N3, Magic.N4, Magic.N5, Magic.N6, Magic.N7, Magic.N8, Magic.N9 -> {
|
||||
@ -747,7 +747,7 @@ class RegExp {
|
||||
when (c) {
|
||||
'('.code -> {
|
||||
if (reg_do_extmatch != REX_SET) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.E66))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.E66))
|
||||
return null
|
||||
}
|
||||
if (one_exactly) {
|
||||
@ -763,7 +763,7 @@ class RegExp {
|
||||
}
|
||||
'1'.code, '2'.code, '3'.code, '4'.code, '5'.code, '6'.code, '7'.code, '8'.code, '9'.code -> {
|
||||
if (reg_do_extmatch != REX_USE) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.E67))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.E67))
|
||||
return null
|
||||
}
|
||||
ret = regnode(ZREF + c - '0'.code)
|
||||
@ -772,7 +772,7 @@ class RegExp {
|
||||
's'.code -> ret = regnode(MOPEN)
|
||||
'e'.code -> ret = regnode(MCLOSE)
|
||||
else -> {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.E68))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.E68))
|
||||
return null
|
||||
}
|
||||
}
|
||||
@ -914,7 +914,7 @@ class RegExp {
|
||||
endc = regparse!!.charAt().code
|
||||
regparse!!.inc()
|
||||
if (startc > endc) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_invrange))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_invrange))
|
||||
return null
|
||||
}
|
||||
while (++startc <= endc) {
|
||||
@ -1071,7 +1071,7 @@ class RegExp {
|
||||
regc('\u0000'.code)
|
||||
prevchr_len = 1 /* last char was the ']' */
|
||||
if (regparse!!.charAt() != ']') {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_toomsbra))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_toomsbra))
|
||||
return null
|
||||
}
|
||||
skipchr() /* let's be friends with the lexer again */
|
||||
@ -1408,7 +1408,7 @@ class RegExp {
|
||||
}
|
||||
if (regparse!!.charAt() != '}' || maxval == 0 && minval == 0) {
|
||||
val `val` = if (reg_magic == MAGIC_ALL) "" else "\\"
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.synerror, `val`))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.synerror, `val`))
|
||||
return null
|
||||
}
|
||||
|
||||
@ -1524,7 +1524,7 @@ class RegExp {
|
||||
reg_endpos = reg_mmatch!!.endpos
|
||||
|
||||
/* Be paranoid... */if (prog == null) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_null))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_null))
|
||||
return false
|
||||
}
|
||||
|
||||
@ -1566,7 +1566,7 @@ class RegExp {
|
||||
retval = regtry(prog, col)
|
||||
}
|
||||
if (out_of_stack) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.E363))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.E363))
|
||||
}
|
||||
return retval > 0
|
||||
}
|
||||
@ -1595,7 +1595,7 @@ class RegExp {
|
||||
}
|
||||
|
||||
/* Be paranoid... */if (prog == null || line == null) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_null))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_null))
|
||||
return retval
|
||||
}
|
||||
|
||||
@ -1666,7 +1666,7 @@ class RegExp {
|
||||
}
|
||||
}
|
||||
if (out_of_stack) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.E363))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.E363))
|
||||
}
|
||||
|
||||
/* Didn't find a match. */
|
||||
@ -2232,7 +2232,7 @@ class RegExp {
|
||||
brace_max[no] = scan.OPERAND_MAX()
|
||||
brace_count[no] = 0
|
||||
} else {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_internal))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_internal))
|
||||
return false
|
||||
}
|
||||
}
|
||||
@ -2485,7 +2485,7 @@ class RegExp {
|
||||
}
|
||||
END -> return true /* Success! */
|
||||
else -> {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_re_corr))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_re_corr))
|
||||
return false
|
||||
}
|
||||
}
|
||||
@ -2496,7 +2496,7 @@ class RegExp {
|
||||
/*
|
||||
* We get here only if there's trouble -- normally "case END" is the
|
||||
* terminating point.
|
||||
*/injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_re_corr))
|
||||
*/injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_re_corr))
|
||||
return false
|
||||
}
|
||||
|
||||
@ -2798,7 +2798,7 @@ class RegExp {
|
||||
break
|
||||
}
|
||||
}
|
||||
else -> injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_re_corr))
|
||||
else -> injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_re_corr))
|
||||
}
|
||||
if (mask != 0) {
|
||||
while (count < maxcount) {
|
||||
@ -2845,7 +2845,7 @@ class RegExp {
|
||||
*/
|
||||
private fun prog_magic_wrong(): Boolean {
|
||||
if ((if (reg_match == null) reg_mmatch!!.regprog!!.program else reg_match!!.regprog!!.program)[0].code != REGMAGIC) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_re_corr))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_re_corr))
|
||||
return true
|
||||
}
|
||||
return false
|
||||
@ -3183,7 +3183,7 @@ class RegExp {
|
||||
var mode = 0
|
||||
|
||||
/* Be paranoid... */if (source == null) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_null))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_null))
|
||||
return null
|
||||
}
|
||||
if (prog_magic_wrong()) {
|
||||
@ -3302,7 +3302,7 @@ class RegExp {
|
||||
break
|
||||
}
|
||||
} else if (s!!.isNul) /* we hit '\u0000'. */ {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_re_damg))
|
||||
injector.messages.showStatusBarMessage(null, injector.messages.message(Msg.e_re_damg))
|
||||
return dst.toString()
|
||||
} else {
|
||||
if (backslash && (s.charAt() == '\r' || s.charAt() == '\\')) {
|
||||
|
@ -99,7 +99,7 @@ class KeyHandler {
|
||||
) as VimInt
|
||||
).value
|
||||
if (handleKeyRecursionCount >= mapMapDepth) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message("E223"))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message("E223"))
|
||||
injector.messages.indicateError()
|
||||
LOG.warn("Key handling, maximum recursion of the key received. maxdepth=$mapMapDepth")
|
||||
return
|
||||
@ -403,7 +403,7 @@ class KeyHandler {
|
||||
mappingState.startMapExecution()
|
||||
mappingInfo.execute(editor, context)
|
||||
} catch (e: Exception) {
|
||||
injector.messages.showStatusBarMessage(e.message)
|
||||
injector.messages.showStatusBarMessage(editor, e.message)
|
||||
injector.messages.indicateError()
|
||||
LOG.warn(
|
||||
"""
|
||||
@ -412,7 +412,7 @@ class KeyHandler {
|
||||
""".trimIndent()
|
||||
)
|
||||
} catch (e: NotImplementedError) {
|
||||
injector.messages.showStatusBarMessage(e.message)
|
||||
injector.messages.showStatusBarMessage(editor, e.message)
|
||||
injector.messages.indicateError()
|
||||
LOG.warn(
|
||||
"""
|
||||
|
@ -49,7 +49,7 @@ class InsertRegisterAction : VimActionHandler.SingleExecution() {
|
||||
}
|
||||
} catch (e: ExException) {
|
||||
injector.messages.indicateError()
|
||||
injector.messages.showStatusBarMessage(e.message)
|
||||
injector.messages.showStatusBarMessage(editor, e.message)
|
||||
}
|
||||
}
|
||||
return true
|
||||
|
@ -35,6 +35,7 @@ abstract class VimDigraphGroupBase() : VimDigraphGroup {
|
||||
|
||||
if (ch.code < 0x100) {
|
||||
injector.messages.showStatusBarMessage(
|
||||
editor,
|
||||
String.format(
|
||||
"<%s> %d, Hex %02x, Oct %03o%s",
|
||||
EngineStringHelper.toPrintableCharacter(KeyStroke.getKeyStroke(ch)),
|
||||
@ -46,6 +47,7 @@ abstract class VimDigraphGroupBase() : VimDigraphGroup {
|
||||
)
|
||||
} else {
|
||||
injector.messages.showStatusBarMessage(
|
||||
editor,
|
||||
String.format(
|
||||
"<%s> %d, Hex %04x, Oct %o%s",
|
||||
EngineStringHelper.toPrintableCharacter(KeyStroke.getKeyStroke(ch)),
|
||||
|
@ -15,6 +15,6 @@ abstract class VimFileBase : VimFile {
|
||||
val offset = editor.currentCaret().offset.point
|
||||
val ch = editor.text()[offset]
|
||||
|
||||
injector.messages.showStatusBarMessage(toHexString(ch.code.toLong()))
|
||||
injector.messages.showStatusBarMessage(editor, toHexString(ch.code.toLong()))
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@
|
||||
package com.maddyhome.idea.vim.api
|
||||
|
||||
interface VimMessages {
|
||||
fun showStatusBarMessage(message: String?)
|
||||
fun showStatusBarMessage(editor: VimEditor?, message: String?)
|
||||
fun getStatusBarMessage(): String?
|
||||
fun indicateError()
|
||||
fun clearError()
|
||||
@ -18,7 +18,7 @@ interface VimMessages {
|
||||
|
||||
fun updateStatusBar()
|
||||
|
||||
fun showMode(msg: String) {
|
||||
showStatusBarMessage(msg)
|
||||
fun showMode(editor: VimEditor?, msg: String) {
|
||||
showStatusBarMessage(editor, msg)
|
||||
}
|
||||
}
|
||||
|
@ -164,7 +164,7 @@ abstract class VimOptionServiceBase : OptionService {
|
||||
if (result == null) {
|
||||
logger.error("KeywordOptionHelper failed to parse $value")
|
||||
injector.messages.indicateError()
|
||||
injector.messages.showStatusBarMessage("Failed to parse iskeyword option value")
|
||||
injector.messages.showStatusBarMessage(editor = null, "Failed to parse iskeyword option value")
|
||||
}
|
||||
return result ?: split(getDefaultValue().value)
|
||||
}
|
||||
|
@ -8,6 +8,7 @@
|
||||
|
||||
package com.maddyhome.idea.vim.api.stubs
|
||||
|
||||
import com.maddyhome.idea.vim.api.VimEditor
|
||||
import com.maddyhome.idea.vim.api.VimMessagesBase
|
||||
import com.maddyhome.idea.vim.diagnostic.vimLogger
|
||||
|
||||
@ -16,7 +17,7 @@ class VimMessagesStub : VimMessagesBase() {
|
||||
vimLogger<ExecutionContextManagerStub>().warn("VimMessagesStub is used. Please replace it with your own implementation of VimMessages.")
|
||||
}
|
||||
|
||||
override fun showStatusBarMessage(message: String?) {
|
||||
override fun showStatusBarMessage(editor: VimEditor?, message: String?) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
|
@ -293,7 +293,7 @@ class VimStateMachine(private val editor: VimEditor?) {
|
||||
}
|
||||
msg.append(injector.messages.message("show.mode.recording"))
|
||||
}
|
||||
injector.messages.showMode(msg.toString())
|
||||
injector.messages.showMode(editor, msg.toString())
|
||||
}
|
||||
|
||||
fun getStatusString(): String {
|
||||
|
@ -36,7 +36,7 @@ sealed class CommandAlias(
|
||||
var compiledCommand = this.command
|
||||
val cleanedInput = input.trim().removePrefix(name).trim()
|
||||
if (minimumNumberOfArguments > 0 && cleanedInput.isEmpty()) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message("e471.argument.required"))
|
||||
injector.messages.showStatusBarMessage(editor = null, injector.messages.message("e471.argument.required"))
|
||||
injector.messages.indicateError()
|
||||
return GoalCommand.Ex.EMPTY
|
||||
}
|
||||
|
@ -8,19 +8,9 @@
|
||||
|
||||
package com.maddyhome.idea.vim.group.visual
|
||||
|
||||
import com.maddyhome.idea.vim.api.VimCaret
|
||||
import com.maddyhome.idea.vim.api.VimEditor
|
||||
import com.maddyhome.idea.vim.api.VimMotionGroupBase
|
||||
import com.maddyhome.idea.vim.api.VimVisualPosition
|
||||
import com.maddyhome.idea.vim.api.getLineEndOffset
|
||||
import com.maddyhome.idea.vim.api.injector
|
||||
import com.maddyhome.idea.vim.api.isLineEmpty
|
||||
import com.maddyhome.idea.vim.api.*
|
||||
import com.maddyhome.idea.vim.command.VimStateMachine
|
||||
import com.maddyhome.idea.vim.helper.inBlockSubMode
|
||||
import com.maddyhome.idea.vim.helper.inSelectMode
|
||||
import com.maddyhome.idea.vim.helper.inVisualMode
|
||||
import com.maddyhome.idea.vim.helper.mode
|
||||
import com.maddyhome.idea.vim.helper.subMode
|
||||
import com.maddyhome.idea.vim.helper.*
|
||||
|
||||
fun setVisualSelection(selectionStart: Int, selectionEnd: Int, caret: VimCaret) {
|
||||
val (start, end) = if (selectionStart > selectionEnd) selectionEnd to selectionStart else selectionStart to selectionEnd
|
||||
|
@ -69,7 +69,7 @@ data class CmdCommand(val ranges: Ranges, val argument: String) : Command.Single
|
||||
return true
|
||||
}
|
||||
|
||||
private fun addAlias(editor: VimEditor?): Boolean {
|
||||
private fun addAlias(editor: VimEditor): Boolean {
|
||||
var argument = argument.trim()
|
||||
|
||||
// Handle overwriting of aliases
|
||||
@ -82,7 +82,7 @@ data class CmdCommand(val ranges: Ranges, val argument: String) : Command.Single
|
||||
val match = arg.find(argument)
|
||||
match?.range?.let {
|
||||
argument = argument.removeRange(it)
|
||||
injector.messages.showStatusBarMessage("'$message' is not supported by `command`")
|
||||
injector.messages.showStatusBarMessage(editor, "'$message' is not supported by `command`")
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,7 +95,7 @@ data class CmdCommand(val ranges: Ranges, val argument: String) : Command.Single
|
||||
// in the actual alias being created, and we don't want to parse that one.
|
||||
val trimmedInput = argument.takeWhile { it != ' ' }
|
||||
val pattern = Regex("(?>-nargs=((|[-])\\d+|[?]|[+]|[*]))").find(trimmedInput) ?: run {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message("e176.invalid.number.of.arguments"))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message("e176.invalid.number.of.arguments"))
|
||||
return false
|
||||
}
|
||||
val nargForTrim = pattern.groupValues[0]
|
||||
@ -118,7 +118,7 @@ data class CmdCommand(val ranges: Ranges, val argument: String) : Command.Single
|
||||
// I missed something, since the regex limits the value to be ? + * or
|
||||
// a valid number, its not possible (as far as I know) to have another value
|
||||
// that regex would accept that is not valid.
|
||||
injector.messages.showStatusBarMessage(injector.messages.message("e176.invalid.number.of.arguments"))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message("e176.invalid.number.of.arguments"))
|
||||
return false
|
||||
}
|
||||
}
|
||||
@ -126,7 +126,7 @@ data class CmdCommand(val ranges: Ranges, val argument: String) : Command.Single
|
||||
// Not sure why this isn't documented, but if you try to create a command in vim
|
||||
// with an explicit number of arguments greater than 1 it returns this error.
|
||||
if (argNum > 1 || argNum < 0) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message("e176.invalid.number.of.arguments"))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message("e176.invalid.number.of.arguments"))
|
||||
return false
|
||||
}
|
||||
minNumberOfArgs = argNum
|
||||
@ -148,12 +148,12 @@ data class CmdCommand(val ranges: Ranges, val argument: String) : Command.Single
|
||||
|
||||
// User-aliases need to begin with an uppercase character.
|
||||
if (!alias[0].isUpperCase()) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message("e183.user.defined.commands.must.start.with.an.uppercase.letter"))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message("e183.user.defined.commands.must.start.with.an.uppercase.letter"))
|
||||
return false
|
||||
}
|
||||
|
||||
if (alias in BLACKLISTED_ALIASES) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message("e841.reserved.name.cannot.be.used.for.user.defined.command"))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message("e841.reserved.name.cannot.be.used.for.user.defined.command"))
|
||||
return false
|
||||
}
|
||||
|
||||
@ -169,7 +169,7 @@ data class CmdCommand(val ranges: Ranges, val argument: String) : Command.Single
|
||||
// If we are not over-writing existing aliases, and an alias with the same command
|
||||
// already exists then we want to do nothing.
|
||||
if (!overrideAlias && injector.commandGroup.hasAlias(alias)) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message("e174.command.already.exists.add.to.replace.it"))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message("e174.command.already.exists.add.to.replace.it"))
|
||||
return false
|
||||
}
|
||||
|
||||
|
@ -61,8 +61,8 @@ sealed class Command(var commandRanges: Ranges, val commandArgument: String) : E
|
||||
|
||||
@Throws(ExException::class)
|
||||
override fun execute(editor: VimEditor, context: ExecutionContext): ExecutionResult {
|
||||
checkRanges()
|
||||
checkArgument()
|
||||
checkRanges(editor)
|
||||
checkArgument(editor)
|
||||
if (editor.inVisualMode && Flag.SAVE_VISUAL !in argFlags.flags) {
|
||||
editor.exitVisualMode()
|
||||
}
|
||||
@ -104,14 +104,14 @@ sealed class Command(var commandRanges: Ranges, val commandArgument: String) : E
|
||||
return result
|
||||
}
|
||||
|
||||
private fun checkRanges() {
|
||||
private fun checkRanges(editor: VimEditor) {
|
||||
if (RangeFlag.RANGE_FORBIDDEN == argFlags.rangeFlag && commandRanges.size() != 0) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_norange))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message(Msg.e_norange))
|
||||
throw NoRangeAllowedException()
|
||||
}
|
||||
|
||||
if (RangeFlag.RANGE_REQUIRED == argFlags.rangeFlag && commandRanges.size() == 0) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_rangereq))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message(Msg.e_rangereq))
|
||||
throw MissingRangeException()
|
||||
}
|
||||
|
||||
@ -120,14 +120,14 @@ sealed class Command(var commandRanges: Ranges, val commandArgument: String) : E
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkArgument() {
|
||||
private fun checkArgument(editor: VimEditor) {
|
||||
if (ArgumentFlag.ARGUMENT_FORBIDDEN == argFlags.argumentFlag && commandArgument.isNotBlank()) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_argforb))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message(Msg.e_argforb))
|
||||
throw NoArgumentAllowedException()
|
||||
}
|
||||
|
||||
if (ArgumentFlag.ARGUMENT_REQUIRED == argFlags.argumentFlag && commandArgument.isBlank()) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.e_argreq))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message(Msg.e_argreq))
|
||||
throw MissingArgumentException()
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ data class DelCmdCommand(val ranges: Ranges, val argument: String) : Command.Sin
|
||||
override val argFlags = flags(RangeFlag.RANGE_FORBIDDEN, ArgumentFlag.ARGUMENT_REQUIRED, Access.READ_ONLY)
|
||||
override fun processCommand(editor: VimEditor, context: ExecutionContext, operatorArguments: OperatorArguments): ExecutionResult {
|
||||
if (!injector.commandGroup.hasAlias(argument)) {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message("e184.no.such.user.defined.command.0", argument))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message("e184.no.such.user.defined.command.0", argument))
|
||||
return ExecutionResult.Error
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,7 @@ data class DeleteMarksCommand(val ranges: Ranges, val argument: String) : Comman
|
||||
if (index != -1) {
|
||||
val invalidIndex = if (processedArg[index] == '-') (index - 1).coerceAtLeast(0) else index
|
||||
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.E475, processedArg.substring(invalidIndex)))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message(Msg.E475, processedArg.substring(invalidIndex)))
|
||||
return ExecutionResult.Error
|
||||
}
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ data class MarkCommand(val ranges: Ranges, val argument: String) : Command.Singl
|
||||
val result = if (mark.isLetter() || mark in "'`") {
|
||||
injector.markGroup.setMark(editor, mark, offset)
|
||||
} else {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message(Msg.E191))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message(Msg.E191))
|
||||
false
|
||||
}
|
||||
return if (result) ExecutionResult.Success else ExecutionResult.Error
|
||||
|
@ -34,7 +34,7 @@ data class TabCloseCommand(val ranges: Ranges, val argument: String) : Command.S
|
||||
val select = if (index == current) index + 1 else current
|
||||
injector.tabService.removeTabAt(index, select, context)
|
||||
} else {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message("error.invalid.command.argument"))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message("error.invalid.command.argument"))
|
||||
}
|
||||
|
||||
return ExecutionResult.Success
|
||||
|
@ -60,7 +60,7 @@ data class UnknownCommand(val ranges: Ranges, val name: String, val argument: St
|
||||
}
|
||||
}
|
||||
} else {
|
||||
injector.messages.showStatusBarMessage(injector.messages.message("recursion.detected.maximum.alias.depth.reached"))
|
||||
injector.messages.showStatusBarMessage(editor, injector.messages.message("recursion.detected.maximum.alias.depth.reached"))
|
||||
injector.messages.indicateError()
|
||||
return ExecutionResult.Error
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ data class DefinedFunctionHandler(val function: FunctionDeclaration) : FunctionH
|
||||
|
||||
if (exceptionsCaught.isNotEmpty()) {
|
||||
injector.messages.indicateError()
|
||||
injector.messages.showStatusBarMessage(exceptionsCaught.last().message)
|
||||
injector.messages.showStatusBarMessage(editor, exceptionsCaught.last().message)
|
||||
}
|
||||
return returnValue ?: VimInt(0)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user