1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2024-10-18 01:42:46 +02:00

Compare commits

...

33 Commits

Author SHA1 Message Date
Alex Plate
e42b4d0ea3
Fix regex for changelog plugin 2022-08-12 10:14:31 +03:00
Alex Plate
43767b8500
Print error 2022-08-12 09:55:29 +03:00
Alex Plate
d05098c870 Update changelog 2022-08-12 06:47:15 +00:00
Alex Plate
505f485568
Update release version 2022-08-12 09:45:30 +03:00
Alex Plate
86f512fb91
Update for slack notification 2022-08-12 09:45:08 +03:00
Alex Plate
12903066b9
Workaround for VIM-2487 2022-08-12 09:45:07 +03:00
Alex Plate
118d0433cb
Fix(VIM-2728): Give access to global variables 2022-08-12 09:45:07 +03:00
filipp
eb781c3679 An attempt to avoid "No tests found" emails 2022-08-11 03:50:07 +03:00
filipp
3c6bffba03 Fix(VIM-749) 2022-08-11 03:27:19 +03:00
Alex Plate
89623b04d6
Update changelog 2022-08-09 10:25:14 +03:00
Alex Plate
444a96132c
Comment out test 2022-08-09 10:10:17 +03:00
Alex Plate
c008553127
Update TC constants 2022-08-09 09:51:25 +03:00
Alex Plate
162d7b021f
Update reference to changes 2022-08-09 09:50:02 +03:00
Alex Plate
c82364c1dd
Update changelog 2022-08-09 09:49:29 +03:00
Alex Plate
977402c6b0
Update changelog 2022-08-09 09:49:28 +03:00
Alex Plate
b14e59ab5b
Disable removing selection after undo 2022-08-09 09:49:28 +03:00
Alex Plate
47dcefcfbf Update formatting 2022-08-07 00:20:00 +00:00
Alex Plate
2b299cb422
Cut white edges on the gif 2022-08-05 08:47:50 +03:00
Alex Plate
d0ccbb4620
Use correct git for dark mode 2022-08-05 08:44:21 +03:00
Alex Plate
187b207271
Use gif instead of mp4 2022-08-05 08:37:05 +03:00
Alex Plate
a3e22c844c
Different gif in readme 2022-08-05 08:34:59 +03:00
Alex Plate
f8384b2732
Create dark screenshot for contributing 2022-08-05 08:16:38 +03:00
Alex Plate
2dae43258c
Skip unsupported arguments in command
VIM-2720
2022-08-04 20:08:13 +03:00
Alex Plate
48033ecb85
Update changelog 2022-08-04 19:45:52 +03:00
Alex Plate
ad8df027ac
Skip neovim check in extensions and multicaret tests 2022-08-04 19:44:58 +03:00
Alex Plate
91f580771d
Fix test with closing buffer 2022-08-04 19:18:26 +03:00
Matt Ellis
9c6f0981f5 Consolidate doTest methods 2022-08-04 19:17:59 +03:00
Alex Plate
2212569688 Update changelog 2022-08-02 15:07:49 +00:00
Alex Plate
6711f1dbab
Specify update thread for actions 2022-08-01 13:09:23 +03:00
Alex Plate
0b7a883efb
Fix(VIM-2723): Move focus to editor after :q 2022-08-01 09:29:44 +03:00
Alex Plate
8ae84c62c0
Update changelog 2022-07-26 09:39:51 +03:00
Alex Plate
0d168c8115 Update formatting 2022-07-24 00:20:23 +00:00
c7b51b7fa5 Implement partial code completion support in macros
Works ok with insertions (Enter, Ctrl+Enter) but not with replacements (Tab)
2022-07-22 10:02:23 +03:00
76 changed files with 717 additions and 1258 deletions

View File

@ -5,8 +5,8 @@ object Constants {
const val EAP_CHANNEL = "eap" const val EAP_CHANNEL = "eap"
const val DEV_CHANNEL = "Dev" const val DEV_CHANNEL = "Dev"
const val VERSION = "1.10.3" const val VERSION = "1.11.1"
const val DEV_VERSION = "1.11.0" const val DEV_VERSION = "1.12.0"
const val GITHUB_TESTS = "LATEST-EAP-SNAPSHOT" const val GITHUB_TESTS = "LATEST-EAP-SNAPSHOT"
const val NVIM_TESTS = "LATEST-EAP-SNAPSHOT" const val NVIM_TESTS = "LATEST-EAP-SNAPSHOT"

View File

@ -23,7 +23,7 @@ It is important to distinguish EAP from traditional pre-release software.
Please note that the quality of EAP versions may at times be way below even Please note that the quality of EAP versions may at times be way below even
usual beta standards. usual beta standards.
## To Be Released ## 1.11.0, 2022-08-09
### Features: ### Features:
* Add `gcu` command for Commentary plugin * Add `gcu` command for Commentary plugin
@ -53,12 +53,14 @@ usual beta standards.
* [VIM-2595](https://youtrack.jetbrains.com/issue/VIM-2595) Support plugins in macro execution * [VIM-2595](https://youtrack.jetbrains.com/issue/VIM-2595) Support plugins in macro execution
* [VIM-2671](https://youtrack.jetbrains.com/issue/VIM-2671) Fix using plugins from mappings * [VIM-2671](https://youtrack.jetbrains.com/issue/VIM-2671) Fix using plugins from mappings
* [VIM-2675](https://youtrack.jetbrains.com/issue/VIM-2675) Fix numbering register in visual mode * [VIM-2675](https://youtrack.jetbrains.com/issue/VIM-2675) Fix numbering register in visual mode
* [VIM-696](https://youtrack.jetbrains.com/issue/VIM-696/vim-selection-issue-after-undo) Fix selection after undo
* [VIM-744](https://youtrack.jetbrains.com/issue/VIM-744/Use-undoredo-with-count-modifier) Add count to undo/redo * [VIM-744](https://youtrack.jetbrains.com/issue/VIM-744/Use-undoredo-with-count-modifier) Add count to undo/redo
* [VIM-1862](https://youtrack.jetbrains.com/issue/VIM-1862/Ex-commands-executed-in-keymaps-and-macros-are-added-to-the-command-history) Fix command history * [VIM-1862](https://youtrack.jetbrains.com/issue/VIM-1862/Ex-commands-executed-in-keymaps-and-macros-are-added-to-the-command-history) Fix command history
* [VIM-2227](https://youtrack.jetbrains.com/issue/VIM-2227) Wrong behavior when deleting / changing surround with invalid character * [VIM-2227](https://youtrack.jetbrains.com/issue/VIM-2227) Wrong behavior when deleting / changing surround with invalid character
* [VIM-2691](https://youtrack.jetbrains.com/issue/VIM-2691) Save file on :w * [VIM-2691](https://youtrack.jetbrains.com/issue/VIM-2691) Save file on :w
* [VIM-2710](https://youtrack.jetbrains.com/issue/VIM-2710) Show options value on `set opt` * [VIM-2710](https://youtrack.jetbrains.com/issue/VIM-2710) Show options value on `set opt`
* [VIM-913](https://youtrack.jetbrains.com/issue/VIM-913) Partially fix the issue with macros and autocompletion
* [VIM-2723](https://youtrack.jetbrains.com/issue/VIM-2723) Move focus to editor after :q
* [VIM-2728](https://youtrack.jetbrains.com/issue/VIM-2728) Give access to global variables
### Merged PRs: ### Merged PRs:
* [468](https://github.com/JetBrains/ideavim/pull/468) by [Thomas Schouten](https://github.com/PHPirates): Implement UserDataHolder for EditorDataContext * [468](https://github.com/JetBrains/ideavim/pull/468) by [Thomas Schouten](https://github.com/PHPirates): Implement UserDataHolder for EditorDataContext
@ -70,6 +72,8 @@ usual beta standards.
* [519](https://github.com/JetBrains/ideavim/pull/519) by [chylex](https://github.com/chylex): Fix(VIM-2227): Wrong behavior when deleting / changing surround with invalid character * [519](https://github.com/JetBrains/ideavim/pull/519) by [chylex](https://github.com/chylex): Fix(VIM-2227): Wrong behavior when deleting / changing surround with invalid character
* [525](https://github.com/JetBrains/ideavim/pull/525) by [Matt Ellis](https://github.com/citizenmatt): Improve handling of fractional width fonts * [525](https://github.com/JetBrains/ideavim/pull/525) by [Matt Ellis](https://github.com/citizenmatt): Improve handling of fractional width fonts
* [526](https://github.com/JetBrains/ideavim/pull/526) by [Alex Pláte](https://github.com/AlexPl292): Create gradle.properties * [526](https://github.com/JetBrains/ideavim/pull/526) by [Alex Pláte](https://github.com/AlexPl292): Create gradle.properties
* [528](https://github.com/JetBrains/ideavim/pull/528) by [chylex](https://github.com/chylex): Implement partial code completion support in macros
* [531](https://github.com/JetBrains/ideavim/pull/531) by [Matt Ellis](https://github.com/citizenmatt): Consolidate doTest methods
## 1.10.0, 2022-02-17 ## 1.10.0, 2022-02-17

View File

@ -32,7 +32,7 @@ OK, ready to do some coding?
Yoo hoo! Youre all set to begin contributing. Yoo hoo! Youre all set to begin contributing.
We've prepared some useful configurations for you: We've prepared some useful configurations for you:
![Prepared configurations](assets/contributing/configurations.png) ![Prepared configurations light](assets/contributing/configs-light.png#gh-light-mode-only)![Prepared configurations dark](assets/contributing/configs-dark.png#gh-dark-mode-only)
And here are useful gradle commands: And here are useful gradle commands:

View File

@ -226,7 +226,10 @@ Ex commands or via `:map` command mappings:
<details> <details>
<summary><strong>"Track action Ids" Details</strong> (click to see)</summary> <summary><strong>"Track action Ids" Details</strong> (click to see)</summary>
<img src="assets/readme/track_action_id.gif" alt="track action ids"/> <picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/readme/track_action_dark.gif">
<img src="assets/readme/track_action_light.gif" alt="track action ids"/>
</picture>
</details> </details>

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 KiB

View File

@ -15,7 +15,9 @@ buildscript {
classpath("com.github.AlexPl292:mark-down-to-slack:1.1.2") classpath("com.github.AlexPl292:mark-down-to-slack:1.1.2")
classpath("org.eclipse.jgit:org.eclipse.jgit:6.1.0.202203080745-r") classpath("org.eclipse.jgit:org.eclipse.jgit:6.1.0.202203080745-r")
classpath("org.kohsuke:github-api:1.305") classpath("org.kohsuke:github-api:1.305")
classpath("org.jetbrains:markdown:0.3.1")
// This comes from the changelog plugin
// classpath("org.jetbrains:markdown:0.3.1")
} }
} }
@ -24,7 +26,7 @@ plugins {
java java
kotlin("jvm") version "1.6.21" kotlin("jvm") version "1.6.21"
id("org.jetbrains.intellij") version "1.7.0-SNAPSHOT" id("org.jetbrains.intellij") version "1.8.0"
id("org.jetbrains.changelog") version "1.3.1" id("org.jetbrains.changelog") version "1.3.1"
// ktlint linter - read more: https://github.com/JLLeitschuh/ktlint-gradle // ktlint linter - read more: https://github.com/JLLeitschuh/ktlint-gradle
@ -273,7 +275,7 @@ changelog {
itemPrefix.set("*") itemPrefix.set("*")
path.set("${project.projectDir}/CHANGES.md") path.set("${project.projectDir}/CHANGES.md")
unreleasedTerm.set("To Be Released") unreleasedTerm.set("To Be Released")
headerParserRegex.set("\\d\\.\\d+(.\\d+)?".toRegex()) headerParserRegex.set("(\\d\\.\\d+(.\\d+)?)".toRegex())
// header = { "${project.version}" } // header = { "${project.version}" }
// version = "0.60" // version = "0.60"
} }
@ -326,6 +328,8 @@ tasks.register("slackNotification") {
println("Response code: $postRc") println("Response code: $postRc")
if (postRc == 200) { if (postRc == 200) {
println(inputStream.bufferedReader().use { it.readText() }) println(inputStream.bufferedReader().use { it.readText() })
} else {
println(errorStream.bufferedReader().use { it.readText() })
} }
} }
} }

View File

@ -18,8 +18,14 @@
package com.maddyhome.idea.vim package com.maddyhome.idea.vim
import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.project.ProjectManagerListener
import com.intellij.openapi.startup.StartupActivity import com.intellij.openapi.startup.StartupActivity
import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.helper.EditorHelper
import com.maddyhome.idea.vim.helper.localEditors
import com.maddyhome.idea.vim.options.OptionScope
/** /**
* @author Alex Plate * @author Alex Plate
@ -36,3 +42,19 @@ class PluginStartup : StartupActivity.DumbAware/*, LightEditCompatible*/ {
VimPlugin.getInstance().initialize() VimPlugin.getInstance().initialize()
} }
} }
// This is a temporal workaround for VIM-2487
class PyNotebooksCloseWorkaround : ProjectManagerListener {
override fun projectClosingBeforeSave(project: Project) {
val close = injector.optionService.getOptionValue(OptionScope.GLOBAL, "closenotebooks").asBoolean()
if (close) {
localEditors().forEach { editor ->
val virtualFile = EditorHelper.getVirtualFile(editor)
if (virtualFile?.extension == "ipynb") {
val fileEditorManager = FileEditorManagerEx.getInstanceEx(project)
fileEditorManager.closeFile(virtualFile)
}
}
}
}
}

View File

@ -19,6 +19,7 @@
package com.maddyhome.idea.vim.action package com.maddyhome.idea.vim.action
import com.intellij.openapi.actionSystem.ActionPlaces import com.intellij.openapi.actionSystem.ActionPlaces
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.project.DumbAwareToggleAction import com.intellij.openapi.project.DumbAwareToggleAction
import com.maddyhome.idea.vim.VimPlugin import com.maddyhome.idea.vim.VimPlugin
@ -42,4 +43,6 @@ class VimPluginToggleAction : DumbAwareToggleAction()/*, LightEditCompatible*/ {
if (VimPlugin.isEnabled()) MessageHelper.message("action.VimPluginToggle.enabled") else MessageHelper.message("action.VimPluginToggle.enable") if (VimPlugin.isEnabled()) MessageHelper.message("action.VimPluginToggle.enabled") else MessageHelper.message("action.VimPluginToggle.enable")
} else MessageHelper.message("action.VimPluginToggle.text") } else MessageHelper.message("action.VimPluginToggle.text")
} }
override fun getActionUpdateThread() = ActionUpdateThread.BGT
} }

View File

@ -20,6 +20,7 @@ package com.maddyhome.idea.vim.action
import com.google.common.collect.ImmutableSet import com.google.common.collect.ImmutableSet
import com.intellij.codeInsight.lookup.LookupManager import com.intellij.codeInsight.lookup.LookupManager
import com.intellij.openapi.actionSystem.ActionManager import com.intellij.openapi.actionSystem.ActionManager
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.EmptyAction import com.intellij.openapi.actionSystem.EmptyAction
@ -95,6 +96,10 @@ class VimShortcutKeyAction : AnAction(), DumbAware/*, LightEditCompatible*/ {
} }
} }
// There is a chance that we can use BGT, but we call for isCell inside the update.
// Not sure if can can use BGT with this call. Let's use EDT for now.
override fun getActionUpdateThread() = ActionUpdateThread.EDT
override fun update(e: AnActionEvent) { override fun update(e: AnActionEvent) {
val start = if (traceTime) System.currentTimeMillis() else null val start = if (traceTime) System.currentTimeMillis() else null
e.presentation.isEnabled = isEnabled(e) e.presentation.isEnabled = isEnabled(e)

View File

@ -21,6 +21,7 @@ package com.maddyhome.idea.vim.extension.nerdtree
import com.intellij.ide.projectView.ProjectView import com.intellij.ide.projectView.ProjectView
import com.intellij.ide.projectView.impl.ProjectViewImpl import com.intellij.ide.projectView.impl.ProjectViewImpl
import com.intellij.openapi.actionSystem.ActionManager import com.intellij.openapi.actionSystem.ActionManager
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
@ -172,7 +173,7 @@ class NerdTree : VimExtension {
} }
class ProjectViewListener(private val project: Project) : ToolWindowManagerListener { class ProjectViewListener(private val project: Project) : ToolWindowManagerListener {
override fun toolWindowShown(id: String, toolWindow: ToolWindow) { override fun toolWindowShown(toolWindow: ToolWindow) {
if (ToolWindowId.PROJECT_VIEW != toolWindow.id) return if (ToolWindowId.PROJECT_VIEW != toolWindow.id) return
val dispatcher = NerdDispatcher.getInstance(project) val dispatcher = NerdDispatcher.getInstance(project)
@ -242,6 +243,8 @@ class NerdTree : VimExtension {
e.presentation.isEnabled = !speedSearchIsHere(project) e.presentation.isEnabled = !speedSearchIsHere(project)
} }
override fun getActionUpdateThread() = ActionUpdateThread.BGT
private fun speedSearchIsHere(project: Project): Boolean { private fun speedSearchIsHere(project: Project): Boolean {
val component = ProjectView.getInstance(project).currentProjectViewPane.tree ?: return false val component = ProjectView.getInstance(project).currentProjectViewPane.tree ?: return false
return SpeedSearchSupply.getSupply(component) != null return SpeedSearchSupply.getSupply(component) != null
@ -560,7 +563,3 @@ class NerdTree : VimExtension {
} }
} }
} }
private fun <T> Node<T>.addLeafs(keys: String, actionHolder: T) {
addLeafs(injector.parser.parseKeys(keys), actionHolder)
}

View File

@ -20,6 +20,7 @@ package com.maddyhome.idea.vim.group;
import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.Editor;
@ -27,6 +28,7 @@ import com.intellij.openapi.editor.LogicalPosition;
import com.intellij.openapi.fileEditor.*; import com.intellij.openapi.fileEditor.*;
import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx; import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx;
import com.intellij.openapi.fileEditor.impl.EditorWindow; import com.intellij.openapi.fileEditor.impl.EditorWindow;
import com.intellij.openapi.fileEditor.impl.EditorsSplitters;
import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
@ -159,6 +161,10 @@ public class FileGroup extends VimFileBase {
if (virtualFile != null && window != null) { if (virtualFile != null && window != null) {
window.closeFile(virtualFile); window.closeFile(virtualFile);
} }
if (!ApplicationManager.getApplication().isUnitTestMode()) {
// This thing doesn't have an implementation in test mode
EditorsSplitters.focusDefaultComponentInSplittersIfPresent(project);
}
} }
} }
@ -175,6 +181,10 @@ public class FileGroup extends VimFileBase {
if (number >= 0 && number < editors.length) { if (number >= 0 && number < editors.length) {
fileEditorManager.closeFile(editors[number], window); fileEditorManager.closeFile(editors[number], window);
} }
if (!ApplicationManager.getApplication().isUnitTestMode()) {
// This thing doesn't have an implementation in test mode
EditorsSplitters.focusDefaultComponentInSplittersIfPresent(project);
}
} }
/** /**

View File

@ -27,6 +27,7 @@ import com.intellij.notification.Notification
import com.intellij.notification.NotificationGroup import com.intellij.notification.NotificationGroup
import com.intellij.notification.NotificationGroupManager import com.intellij.notification.NotificationGroupManager
import com.intellij.notification.NotificationType import com.intellij.notification.NotificationType
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.KeyboardShortcut import com.intellij.openapi.actionSystem.KeyboardShortcut
@ -221,6 +222,8 @@ class NotificationService(private val project: Project?) {
override fun update(e: AnActionEvent) { override fun update(e: AnActionEvent) {
e.presentation.isEnabled = id != null e.presentation.isEnabled = id != null
} }
override fun getActionUpdateThread() = ActionUpdateThread.BGT
} }
class StopTracking : DumbAwareAction("Stop Tracking") { class StopTracking : DumbAwareAction("Stop Tracking") {
@ -257,6 +260,8 @@ class NotificationService(private val project: Project?) {
val actionText = if (VimRcService.findIdeaVimRc() != null) "Open ~/.ideavimrc" else "Create ~/.ideavimrc" val actionText = if (VimRcService.findIdeaVimRc() != null) "Open ~/.ideavimrc" else "Create ~/.ideavimrc"
e.presentation.text = actionText e.presentation.text = actionText
} }
override fun getActionUpdateThread() = ActionUpdateThread.BGT
} }
@Suppress("DialogTitleCapitalization") @Suppress("DialogTitleCapitalization")

View File

@ -56,7 +56,6 @@ class UndoRedoHelper : UndoRedoBase() {
SelectionVimListenerSuppressor.lock().use { undoManager.undo(fileEditor) } SelectionVimListenerSuppressor.lock().use { undoManager.undo(fileEditor) }
} else { } else {
performUntilFileChanges(editor, { undoManager.isUndoAvailable(fileEditor) }, { undoManager.undo(fileEditor) }) performUntilFileChanges(editor, { undoManager.isUndoAvailable(fileEditor) }, { undoManager.undo(fileEditor) })
}
editor?.carets()?.forEach { editor?.carets()?.forEach {
val ijCaret = it.ij val ijCaret = it.ij
@ -69,6 +68,8 @@ class UndoRedoHelper : UndoRedoBase() {
} }
} }
} }
}
return true return true
} }
return false return false
@ -85,10 +86,10 @@ class UndoRedoHelper : UndoRedoBase() {
SelectionVimListenerSuppressor.lock().use { undoManager.redo(fileEditor) } SelectionVimListenerSuppressor.lock().use { undoManager.redo(fileEditor) }
} else { } else {
performUntilFileChanges(editor, { undoManager.isRedoAvailable(fileEditor) }, { undoManager.redo(fileEditor) }) performUntilFileChanges(editor, { undoManager.isRedoAvailable(fileEditor) }, { undoManager.redo(fileEditor) })
}
CommandProcessor.getInstance().runUndoTransparentAction { CommandProcessor.getInstance().runUndoTransparentAction {
editor?.carets()?.forEach { it.ij.removeSelection() } editor?.carets()?.forEach { it.ij.removeSelection() }
} }
}
return true return true
} }
return false return false

View File

@ -19,8 +19,10 @@
package com.maddyhome.idea.vim.listener package com.maddyhome.idea.vim.listener
import com.intellij.codeInsight.lookup.Lookup import com.intellij.codeInsight.lookup.Lookup
import com.intellij.codeInsight.lookup.LookupManager
import com.intellij.codeInsight.lookup.LookupManagerListener import com.intellij.codeInsight.lookup.LookupManagerListener
import com.intellij.codeInsight.lookup.impl.LookupImpl import com.intellij.codeInsight.lookup.impl.LookupImpl
import com.intellij.codeInsight.lookup.impl.actions.ChooseItemAction
import com.intellij.codeInsight.template.Template import com.intellij.codeInsight.template.Template
import com.intellij.codeInsight.template.TemplateEditingAdapter import com.intellij.codeInsight.template.TemplateEditingAdapter
import com.intellij.codeInsight.template.TemplateManagerListener import com.intellij.codeInsight.template.TemplateManagerListener
@ -35,10 +37,10 @@ import com.intellij.openapi.actionSystem.ex.AnActionListener
import com.intellij.openapi.actionSystem.impl.ProxyShortcutSet import com.intellij.openapi.actionSystem.impl.ProxyShortcutSet
import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.DumbAwareToggleAction import com.intellij.openapi.project.DumbAwareToggleAction
import com.intellij.openapi.util.TextRange
import com.maddyhome.idea.vim.KeyHandler import com.maddyhome.idea.vim.KeyHandler
import com.maddyhome.idea.vim.VimPlugin import com.maddyhome.idea.vim.VimPlugin
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.group.NotificationService
import com.maddyhome.idea.vim.helper.EditorDataContext import com.maddyhome.idea.vim.helper.EditorDataContext
import com.maddyhome.idea.vim.helper.inNormalMode import com.maddyhome.idea.vim.helper.inNormalMode
import com.maddyhome.idea.vim.helper.isIdeaVimDisabledHere import com.maddyhome.idea.vim.helper.isIdeaVimDisabledHere
@ -49,6 +51,8 @@ import com.maddyhome.idea.vim.options.OptionScope
import com.maddyhome.idea.vim.vimscript.model.datatypes.VimInt import com.maddyhome.idea.vim.vimscript.model.datatypes.VimInt
import com.maddyhome.idea.vim.vimscript.model.options.helpers.IdeaRefactorModeHelper import com.maddyhome.idea.vim.vimscript.model.options.helpers.IdeaRefactorModeHelper
import org.jetbrains.annotations.NonNls import org.jetbrains.annotations.NonNls
import java.awt.event.KeyEvent
import javax.swing.KeyStroke
/** /**
* @author Alex Plate * @author Alex Plate
@ -60,6 +64,8 @@ object IdeaSpecifics {
private val surrounderAction = private val surrounderAction =
"com.intellij.codeInsight.generation.surroundWith.SurroundWithHandler\$InvokeSurrounderAction" "com.intellij.codeInsight.generation.surroundWith.SurroundWithHandler\$InvokeSurrounderAction"
private var editor: Editor? = null private var editor: Editor? = null
private var completionPrevDocumentLength: Int? = null
private var completionPrevDocumentOffset: Int? = null
override fun beforeActionPerformed(action: AnAction, event: AnActionEvent) { override fun beforeActionPerformed(action: AnAction, event: AnActionEvent) {
if (!VimPlugin.isEnabled()) return if (!VimPlugin.isEnabled()) return
@ -68,19 +74,52 @@ object IdeaSpecifics {
editor = hostEditor editor = hostEditor
} }
//region Track action id
if (VimPlugin.getOptionService().isSet(OptionScope.GLOBAL, OptionConstants.trackactionidsName)) { if (VimPlugin.getOptionService().isSet(OptionScope.GLOBAL, OptionConstants.trackactionidsName)) {
if (action !is NotificationService.ActionIdNotifier.CopyActionId && action !is NotificationService.ActionIdNotifier.StopTracking) {
val id: String? = ActionManager.getInstance().getId(action) ?: (action.shortcutSet as? ProxyShortcutSet)?.actionId val id: String? = ActionManager.getInstance().getId(action) ?: (action.shortcutSet as? ProxyShortcutSet)?.actionId
VimPlugin.getNotifications(event.dataContext.getData(CommonDataKeys.PROJECT)).notifyActionId(id) VimPlugin.getNotifications(event.dataContext.getData(CommonDataKeys.PROJECT)).notifyActionId(id)
} }
if (hostEditor != null && action is ChooseItemAction && hostEditor.vimStateMachine?.isRecording == true) {
val lookup = LookupManager.getActiveLookup(hostEditor)
if (lookup != null) {
val charsToRemove = hostEditor.caretModel.primaryCaret.offset - lookup.lookupStart
val register = VimPlugin.getRegister()
val backSpace = KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0)
repeat(charsToRemove) {
register.recordKeyStroke(backSpace)
}
completionPrevDocumentLength = hostEditor.document.textLength - charsToRemove
completionPrevDocumentOffset = lookup.lookupStart
}
} }
//endregion
} }
override fun afterActionPerformed(action: AnAction, event: AnActionEvent, result: AnActionResult) { override fun afterActionPerformed(action: AnAction, event: AnActionEvent, result: AnActionResult) {
if (!VimPlugin.isEnabled()) return if (!VimPlugin.isEnabled()) return
val editor = editor
if (editor != null && action is ChooseItemAction && editor.vimStateMachine?.isRecording == true) {
val prevDocumentLength = completionPrevDocumentLength
val prevDocumentOffset = completionPrevDocumentOffset
if (prevDocumentLength != null && prevDocumentOffset != null) {
val register = VimPlugin.getRegister()
val addedTextLength = editor.document.textLength - prevDocumentLength
val caretShift = addedTextLength - (editor.caretModel.primaryCaret.offset - prevDocumentOffset)
val leftArrow = KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0)
register.recordText(editor.document.getText(TextRange(prevDocumentOffset, prevDocumentOffset + addedTextLength)))
repeat(caretShift.coerceAtLeast(0)) {
register.recordKeyStroke(leftArrow)
}
}
this.completionPrevDocumentLength = null
this.completionPrevDocumentOffset = null
}
//region Enter insert mode after surround with if //region Enter insert mode after surround with if
if (surrounderAction == action.javaClass.name && surrounderItems.any { if (surrounderAction == action.javaClass.name && surrounderItems.any {
action.templatePresentation.text.endsWith( action.templatePresentation.text.endsWith(
@ -99,7 +138,7 @@ object IdeaSpecifics {
} }
//endregion //endregion
editor = null this.editor = null
} }
} }

View File

@ -20,6 +20,7 @@ package com.maddyhome.idea.vim.ui
import com.intellij.icons.AllIcons import com.intellij.icons.AllIcons
import com.intellij.openapi.Disposable import com.intellij.openapi.Disposable
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.DefaultActionGroup import com.intellij.openapi.actionSystem.DefaultActionGroup
import com.intellij.openapi.actionSystem.PlatformDataKeys import com.intellij.openapi.actionSystem.PlatformDataKeys
@ -144,6 +145,8 @@ class ReloadVimRc : DumbAwareAction() {
e.presentation.isEnabledAndVisible = true e.presentation.isEnabledAndVisible = true
} }
override fun getActionUpdateThread() = ActionUpdateThread.BGT
override fun actionPerformed(e: AnActionEvent) { override fun actionPerformed(e: AnActionEvent) {
val editor = e.getData(PlatformDataKeys.EDITOR) ?: return val editor = e.getData(PlatformDataKeys.EDITOR) ?: return
FileDocumentManager.getInstance().saveDocumentAsIs(editor.document) FileDocumentManager.getInstance().saveDocumentAsIs(editor.document)

View File

@ -23,6 +23,7 @@ import com.intellij.ide.BrowserUtil
import com.intellij.ide.DataManager import com.intellij.ide.DataManager
import com.intellij.openapi.actionSystem.ActionManager import com.intellij.openapi.actionSystem.ActionManager
import com.intellij.openapi.actionSystem.ActionPlaces import com.intellij.openapi.actionSystem.ActionPlaces
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.DataContext import com.intellij.openapi.actionSystem.DataContext
import com.intellij.openapi.actionSystem.DefaultActionGroup import com.intellij.openapi.actionSystem.DefaultActionGroup
@ -158,6 +159,8 @@ class VimActions : DumbAwareAction() {
val project = e.project val project = e.project
e.presentation.isEnabledAndVisible = project != null && !project.isDisposed e.presentation.isEnabledAndVisible = project != null && !project.isDisposed
} }
override fun getActionUpdateThread() = ActionUpdateThread.BGT
} }
private object VimActionsPopup { private object VimActionsPopup {
@ -264,4 +267,6 @@ internal object JoinEap : DumbAwareAction()/*, LightEditCompatible*/ {
e.presentation.text = MessageHelper.message("action.subscribe.to.eap.text") e.presentation.text = MessageHelper.message("action.subscribe.to.eap.text")
} }
} }
override fun getActionUpdateThread() = ActionUpdateThread.BGT
} }

View File

@ -18,6 +18,7 @@
package com.maddyhome.idea.vim.ui.ex package com.maddyhome.idea.vim.ui.ex
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.KeyboardShortcut import com.intellij.openapi.actionSystem.KeyboardShortcut
import com.intellij.openapi.project.DumbAwareAction import com.intellij.openapi.project.DumbAwareAction
@ -69,4 +70,7 @@ class ExShortcutKeyAction(private val exEntryPanel: ExEntryPanel) : DumbAwareAct
registerCustomShortcutSet({ shortcuts }, exEntryPanel) registerCustomShortcutSet({ shortcuts }, exEntryPanel)
} }
// / Or EDT? We access ExEntryPanel actually. But seems to work with BGT
override fun getActionUpdateThread() = ActionUpdateThread.BGT
} }

View File

@ -2,7 +2,110 @@
<name>IdeaVim</name> <name>IdeaVim</name>
<id>IdeaVIM</id> <id>IdeaVIM</id>
<change-notes><![CDATA[ <change-notes><![CDATA[
<a href="https://github.com/JetBrains/ideavim/blob/master/CHANGES.md">Changes</a> <h3>Features:</h3>
<ul>
<li>Add <code>gcu</code> command for Commentary plugin</li>
<li>Add <code>:Commentary</code> command, which works great for commands such as <code>:%g/fun/Commentary</code></li>
<li>Support <code>gc</code> commentary text objects. E.g. <code>dgc</code>: delete commented text.</li>
<li>Support <code>redo-register feature</code> | <a
href="https://youtrack.jetbrains.com/issue/VIM-2643/Dot-operator-doesn-t-increment-number-register-after-pasting-fro">VIM-2643</a>
| <a href="http://vimdoc.sourceforge.net/htmldoc/undo.html#redo-register">viminfo</a></li>
</ul>
<h3>Changes:</h3>
<ul>
<li>Uses the same mappings as Commentary, so custom bindings for the Vim plugin will work with IdeaVim, too.
E.g. <code>&lt;Plug&gt;Commentary</code> instead of <code>&lt;Plug&gt;(CommentMotion)</code>. Old mappings are
maintained for compatibility.
</li>
<li>If you open <code>~/.ideavimrc</code> in IDE, remove a mapping, and reload the config using the reload button,
the mapping will actually be unmapped.
</li>
<li>New vim (and IdeaVim) behaviour: <code>ci(</code>&amp; friends searches for the brackets in the line.</li>
</ul>
<h3>Fixes:</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2587">VIM-2587</a> Use ctrl-6 as ctrl-^</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2590">VIM-2590</a> Fix caret shape in PyCharm</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2553">VIM-2553</a> Substitute consecutive matches</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-1687">VIM-1687</a> Support count for <code>gcc</code></li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2381">VIM-2381</a> Fall back to line comment if block comment is
not available
</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2589">VIM-2589</a> Add <code>gc</code> text object</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2604">VIM-2604</a> Update action execution rules</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2654">VIM-2654</a> Add support for <code>return</code> without
expression
</li>
<li><a
href="https://youtrack.jetbrains.com/issue/VIM-2630/Please-fix-warning-Shall-not-be-called-on-a-template-presentatio">VIM-2630</a>
Fix IDE freeze
</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2661/Spamming-does-not-work">VIM-2661</a> Fix repeating the
<code>@@</code> command
</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2668/tabm-or-tabm-with-no-number-does-not-match-vim-behavior">VIM-2668</a>
Fix omitted numbers in <code>tabm</code> command
</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2595">VIM-2595</a> Support plugins in macro execution</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2671">VIM-2671</a> Fix using plugins from mappings</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2675">VIM-2675</a> Fix numbering register in visual mode</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-744/Use-undoredo-with-count-modifier">VIM-744</a> Add count to
undo/redo
</li>
<li><a
href="https://youtrack.jetbrains.com/issue/VIM-1862/Ex-commands-executed-in-keymaps-and-macros-are-added-to-the-command-history">VIM-1862</a>
Fix command history
</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2227">VIM-2227</a> Wrong behavior when deleting / changing
surround with invalid character
</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2691">VIM-2691</a> Save file on :w</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2710">VIM-2710</a> Show options value on <code>set opt</code>
</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-913">VIM-913</a> Partially fix the issue with macros and
autocompletion
</li>
<li><a href="https://youtrack.jetbrains.com/issue/VIM-2723">VIM-2723</a> Move focus to editor after :q</li>
</ul>
<h3>Merged PRs:</h3>
<ul>
<li><a href="https://github.com/JetBrains/ideavim/pull/468">468</a> by <a href="https://github.com/PHPirates">Thomas
Schouten</a>: Implement UserDataHolder for EditorDataContext
</li>
<li><a href="https://github.com/JetBrains/ideavim/pull/483">483</a> by <a href="https://github.com/Vvalter">Simon
Rainer</a>: Fix(VIM-2553): Substitute consecutive matches
</li>
<li><a href="https://github.com/JetBrains/ideavim/pull/488">488</a> by <a href="https://github.com/myzeiri">Martin
Yzeiri</a>: Add Matchit support for the C family of languages
</li>
<li><a href="https://github.com/JetBrains/ideavim/pull/493">493</a> by <a href="https://github.com/citizenmatt">Matt
Ellis</a>: Improvements to Commentary extension
</li>
<li><a href="https://github.com/JetBrains/ideavim/pull/494">494</a> by <a href="https://github.com/citizenmatt">Matt
Ellis</a>: Cleanup pre-212 CaretVisualAttributes compatibility code
</li>
<li><a href="https://github.com/JetBrains/ideavim/pull/504">504</a> by <a href="https://github.com/citizenmatt">Matt
Ellis</a>: Minor bug fixes
</li>
<li><a href="https://github.com/JetBrains/ideavim/pull/519">519</a> by <a href="https://github.com/chylex">chylex</a>:
Fix(VIM-2227): Wrong behavior when deleting / changing surround with invalid character
</li>
<li><a href="https://github.com/JetBrains/ideavim/pull/525">525</a> by <a href="https://github.com/citizenmatt">Matt
Ellis</a>: Improve handling of fractional width fonts
</li>
<li><a href="https://github.com/JetBrains/ideavim/pull/526">526</a> by <a href="https://github.com/AlexPl292">Alex
Pláte</a>: Create gradle.properties
</li>
<li><a href="https://github.com/JetBrains/ideavim/pull/528">528</a> by <a href="https://github.com/chylex">chylex</a>:
Implement partial code completion support in macros
</li>
<li><a href="https://github.com/JetBrains/ideavim/pull/531">531</a> by <a href="https://github.com/citizenmatt">Matt
Ellis</a>: Consolidate doTest methods
</li>
</ul>
]]> ]]>
</change-notes> </change-notes>
<description><![CDATA[ <description><![CDATA[
@ -36,6 +139,11 @@
<depends optional="true" config-file="ides/ideavim-withAppCode.xml">com.intellij.modules.appcode</depends> <depends optional="true" config-file="ides/ideavim-withAppCode.xml">com.intellij.modules.appcode</depends>
<depends optional="true" config-file="ideavim-withAceJump.xml">AceJump</depends> <depends optional="true" config-file="ideavim-withAceJump.xml">AceJump</depends>
<applicationListeners>
<listener class="com.maddyhome.idea.vim.PyNotebooksCloseWorkaround"
topic="com.intellij.openapi.project.ProjectManagerListener"/>
</applicationListeners>
<application-components> <application-components>
<component> <component>
<implementation-class>com.maddyhome.idea.vim.DynamicLoaderStopper</implementation-class> <implementation-class>com.maddyhome.idea.vim.DynamicLoaderStopper</implementation-class>

View File

@ -53,6 +53,8 @@ internal object NeovimTesting {
private lateinit var escapeCommand: String private lateinit var escapeCommand: String
private lateinit var ctrlcCommand: String private lateinit var ctrlcCommand: String
private var singleCaret = true
fun setUp(test: VimTestCase) { fun setUp(test: VimTestCase) {
if (!neovimEnabled(test)) return if (!neovimEnabled(test)) return
val nvimPath = System.getenv("ideavim.nvim.path") ?: "nvim" val nvimPath = System.getenv("ideavim.nvim.path") ?: "nvim"
@ -90,25 +92,35 @@ internal object NeovimTesting {
} }
} }
private fun neovimEnabled(test: VimTestCase): Boolean { private fun neovimEnabled(test: VimTestCase, editor: Editor? = null): Boolean {
val method = test.javaClass.getMethod(test.name) val method = test.javaClass.getMethod(test.name)
val noBehaviourDiffers = !method.isAnnotationPresent(VimBehaviorDiffers::class.java) val noBehaviourDiffers = !method.isAnnotationPresent(VimBehaviorDiffers::class.java)
val noTestingWithoutNeovim = !method.isAnnotationPresent(TestWithoutNeovim::class.java) val noTestingWithoutNeovim = !method.isAnnotationPresent(TestWithoutNeovim::class.java)
val neovimTestingEnabled = System.getProperty("ideavim.nvim.test", "false")!!.toBoolean() val neovimTestingEnabled = System.getProperty("ideavim.nvim.test", "false")!!.toBoolean()
val notParserTest = "org.jetbrains.plugins.ideavim.ex.parser" !in test.javaClass.packageName val notParserTest = "org.jetbrains.plugins.ideavim.ex.parser" !in test.javaClass.packageName
val notScriptImplementation = "org.jetbrains.plugins.ideavim.ex.implementation" !in test.javaClass.packageName val notScriptImplementation = "org.jetbrains.plugins.ideavim.ex.implementation" !in test.javaClass.packageName
return noBehaviourDiffers && noTestingWithoutNeovim && neovimTestingEnabled && notParserTest && notScriptImplementation val notExtension = "org.jetbrains.plugins.ideavim.extension" !in test.javaClass.packageName
if (singleCaret) {
singleCaret = editor == null || editor.caretModel.caretCount == 1
}
return noBehaviourDiffers &&
noTestingWithoutNeovim &&
neovimTestingEnabled &&
notParserTest &&
notScriptImplementation &&
notExtension &&
singleCaret
} }
fun setupEditor(editor: Editor, test: VimTestCase) { fun setupEditor(editor: Editor, test: VimTestCase) {
if (!neovimEnabled(test)) return if (!neovimEnabled(test, editor)) return
neovimApi.currentBuffer.get().setLines(0, -1, false, editor.document.text.split("\n")).get() neovimApi.currentBuffer.get().setLines(0, -1, false, editor.document.text.split("\n")).get()
val charPosition = CharacterPosition.fromOffset(editor, editor.caretModel.offset) val charPosition = CharacterPosition.fromOffset(editor, editor.caretModel.offset)
neovimApi.currentWindow.get().setCursor(VimCoords(charPosition.line + 1, charPosition.column)).get() neovimApi.currentWindow.get().setCursor(VimCoords(charPosition.line + 1, charPosition.column)).get()
} }
fun typeCommand(keys: String, test: VimTestCase) { fun typeCommand(keys: String, test: VimTestCase, editor: Editor) {
if (!neovimEnabled(test)) return if (!neovimEnabled(test, editor)) return
when { when {
keys.equals("<esc>", ignoreCase = true) -> neovimApi.input(escapeCommand).get() keys.equals("<esc>", ignoreCase = true) -> neovimApi.input(escapeCommand).get()
keys.equals("<C-C>", ignoreCase = true) -> neovimApi.input(ctrlcCommand).get() keys.equals("<C-C>", ignoreCase = true) -> neovimApi.input(ctrlcCommand).get()
@ -120,7 +132,7 @@ internal object NeovimTesting {
} }
fun assertState(editor: Editor, test: VimTestCase) { fun assertState(editor: Editor, test: VimTestCase) {
if (!neovimEnabled(test)) return if (!neovimEnabled(test, editor)) return
if (currentTestName != "") { if (currentTestName != "") {
currentTestName = "" currentTestName = ""
neovimTestsCounter++ neovimTestsCounter++
@ -140,7 +152,7 @@ internal object NeovimTesting {
private fun getText(): String = neovimApi.currentBuffer.get().getLines(0, -1, false).get().joinToString("\n") private fun getText(): String = neovimApi.currentBuffer.get().getLines(0, -1, false).get().joinToString("\n")
fun assertCaret(editor: Editor, test: VimTestCase) { fun assertCaret(editor: Editor, test: VimTestCase) {
if (!neovimEnabled(test)) return if (!neovimEnabled(test, editor)) return
if (currentTestName != "") { if (currentTestName != "") {
currentTestName = "" currentTestName = ""
neovimTestsCounter++ neovimTestsCounter++
@ -200,7 +212,6 @@ annotation class TestWithoutNeovim(val reason: SkipNeovimReason, val description
enum class SkipNeovimReason { enum class SkipNeovimReason {
PLUGIN, PLUGIN,
MULTICARET,
@Suppress("unused") @Suppress("unused")
INLAYS, INLAYS,
@ -221,7 +232,6 @@ enum class SkipNeovimReason {
EDITOR_MODIFICATION, EDITOR_MODIFICATION,
CMD, CMD,
IDEAVIMRC,
ACTION_COMMAND, ACTION_COMMAND,
PLUG, PLUG,
FOLDING, FOLDING,

View File

@ -20,7 +20,6 @@ package org.jetbrains.plugins.ideavim
import com.maddyhome.idea.vim.RegisterActions.VIM_ACTIONS_EP import com.maddyhome.idea.vim.RegisterActions.VIM_ACTIONS_EP
import com.maddyhome.idea.vim.VimPlugin import com.maddyhome.idea.vim.VimPlugin
import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.MappingMode import com.maddyhome.idea.vim.command.MappingMode
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.handler.ActionBeanClass import com.maddyhome.idea.vim.handler.ActionBeanClass
@ -42,10 +41,9 @@ class RegisterActionsTest : VimTestCase() {
setupChecks { setupChecks {
caretShape = false caretShape = false
} }
val keys = injector.parser.parseKeys("jklwB") // just random keys
val before = "I ${c}found it in a legendary land" val before = "I ${c}found it in a legendary land"
val after = "I jklwB${c}found it in a legendary land" val after = "I jklwB${c}found it in a legendary land"
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) { doTest("jklwB", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) {
VimPlugin.setEnabled(false) VimPlugin.setEnabled(false)
} }
} finally { } finally {
@ -55,10 +53,9 @@ class RegisterActionsTest : VimTestCase() {
@TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION) @TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION)
fun `test turn plugin off and on`() { fun `test turn plugin off and on`() {
val keys = injector.parser.parseKeys("l")
val before = "I ${c}found it in a legendary land" val before = "I ${c}found it in a legendary land"
val after = "I f${c}ound it in a legendary land" val after = "I f${c}ound it in a legendary land"
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) { doTest("l", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) {
VimPlugin.setEnabled(false) VimPlugin.setEnabled(false)
VimPlugin.setEnabled(true) VimPlugin.setEnabled(true)
} }
@ -66,10 +63,9 @@ class RegisterActionsTest : VimTestCase() {
@TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION) @TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION)
fun `test enable twice`() { fun `test enable twice`() {
val keys = injector.parser.parseKeys("l")
val before = "I ${c}found it in a legendary land" val before = "I ${c}found it in a legendary land"
val after = "I f${c}ound it in a legendary land" val after = "I f${c}ound it in a legendary land"
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) { doTest("l", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) {
VimPlugin.setEnabled(false) VimPlugin.setEnabled(false)
VimPlugin.setEnabled(true) VimPlugin.setEnabled(true)
VimPlugin.setEnabled(true) VimPlugin.setEnabled(true)
@ -78,11 +74,10 @@ class RegisterActionsTest : VimTestCase() {
@TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION) @TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION)
fun `test unregister extension`() { fun `test unregister extension`() {
val keys = injector.parser.parseKeys("l")
val before = "I ${c}found it in a legendary land" val before = "I ${c}found it in a legendary land"
val after = "I f${c}ound it in a legendary land" val after = "I f${c}ound it in a legendary land"
var motionRightAction: ActionBeanClass? = null var motionRightAction: ActionBeanClass? = null
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) { doTest("l", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) {
motionRightAction = VIM_ACTIONS_EP.extensions().filter { it.actionId == "VimPreviousTabAction" }.findFirst().get() motionRightAction = VIM_ACTIONS_EP.extensions().filter { it.actionId == "VimPreviousTabAction" }.findFirst().get()
assertNotNull(getCommandNode()) assertNotNull(getCommandNode())

View File

@ -229,6 +229,7 @@ abstract class VimTestCase : UsefulTestCase() {
private fun configureByText(fileName: String, content: String): Editor { private fun configureByText(fileName: String, content: String): Editor {
@Suppress("IdeaVimAssertState") @Suppress("IdeaVimAssertState")
myFixture.configureByText(fileName, content) myFixture.configureByText(fileName, content)
NeovimTesting.setupEditor(myFixture.editor, this)
setEditorVisibleSize(screenWidth, screenHeight) setEditorVisibleSize(screenWidth, screenHeight)
return myFixture.editor return myFixture.editor
} }
@ -236,6 +237,7 @@ abstract class VimTestCase : UsefulTestCase() {
protected fun configureByFileName(fileName: String): Editor { protected fun configureByFileName(fileName: String): Editor {
@Suppress("IdeaVimAssertState") @Suppress("IdeaVimAssertState")
myFixture.configureByText(fileName, "\n") myFixture.configureByText(fileName, "\n")
NeovimTesting.setupEditor(myFixture.editor, this)
setEditorVisibleSize(screenWidth, screenHeight) setEditorVisibleSize(screenWidth, screenHeight)
return myFixture.editor return myFixture.editor
} }
@ -298,8 +300,12 @@ abstract class VimTestCase : UsefulTestCase() {
} }
protected fun typeText(keys: List<KeyStroke?>): Editor { protected fun typeText(keys: List<KeyStroke?>): Editor {
NeovimTesting.typeCommand(keys.filterNotNull().joinToString(separator = "") { injector.parser.toKeyNotation(it) }, this)
val editor = myFixture.editor val editor = myFixture.editor
NeovimTesting.typeCommand(
keys.filterNotNull().joinToString(separator = "") { injector.parser.toKeyNotation(it) },
this,
editor
)
val project = myFixture.project val project = myFixture.project
when (Checks.keyHandler) { when (Checks.keyHandler) {
Checks.KeyHandlerMethod.DIRECT_TO_VIM -> typeText(keys, editor, project) Checks.KeyHandlerMethod.DIRECT_TO_VIM -> typeText(keys, editor, project)
@ -328,6 +334,12 @@ abstract class VimTestCase : UsefulTestCase() {
NeovimTesting.assertState(myFixture.editor, this) NeovimTesting.assertState(myFixture.editor, this)
} }
protected fun assertState(modeAfter: VimStateMachine.Mode, subModeAfter: SubMode) {
assertMode(modeAfter)
assertSubMode(subModeAfter)
assertCaretsVisualAttributes()
}
fun assertPosition(line: Int, column: Int) { fun assertPosition(line: Int, column: Int) {
val carets = myFixture.editor.caretModel.allCarets val carets = myFixture.editor.caretModel.allCarets
Assert.assertEquals("Wrong amount of carets", 1, carets.size) Assert.assertEquals("Wrong amount of carets", 1, carets.size)
@ -459,7 +471,7 @@ abstract class VimTestCase : UsefulTestCase() {
val actual = getInstance(myFixture.editor).text val actual = getInstance(myFixture.editor).text
Assert.assertNotNull("No Ex output", actual) Assert.assertNotNull("No Ex output", actual)
Assert.assertEquals(expected, actual) Assert.assertEquals(expected, actual)
NeovimTesting.typeCommand("<esc>", this) NeovimTesting.typeCommand("<esc>", this, myFixture.editor)
} }
fun assertNoExOutput() { fun assertNoExOutput() {
@ -501,95 +513,46 @@ abstract class VimTestCase : UsefulTestCase() {
} }
} }
@JvmOverloads
fun doTest( fun doTest(
keys: List<String>, keys: List<String>,
before: String, before: String,
after: String, after: String,
modeAfter: VimStateMachine.Mode = VimStateMachine.Mode.COMMAND,
subModeAfter: SubMode = SubMode.NONE,
fileType: FileType? = null,
fileName: String? = null,
afterEditorInitialized: ((Editor) -> Unit)? = null,
) { ) {
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, SubMode.NONE) doTest(keys.joinToString(separator = ""), before, after, modeAfter, subModeAfter, fileType, fileName, afterEditorInitialized)
}
fun doTest(
keys: List<String>,
before: String,
after: String,
modeAfter: VimStateMachine.Mode,
subModeAfter: SubMode,
) {
doTest(keys.joinToString(separator = ""), before, after, modeAfter, subModeAfter)
} }
@JvmOverloads
fun doTest( fun doTest(
keys: String, keys: String,
before: String, before: String,
after: String, after: String,
modeAfter: VimStateMachine.Mode, modeAfter: VimStateMachine.Mode = VimStateMachine.Mode.COMMAND,
subModeAfter: SubMode, subModeAfter: SubMode = SubMode.NONE,
) { fileType: FileType? = null,
configureByText(before) fileName: String? = null,
afterEditorInitialized: ((Editor) -> Unit)? = null,
performTest(keys, after, modeAfter, subModeAfter)
NeovimTesting.assertState(myFixture.editor, this)
}
fun doTest(
keys: String,
before: String,
after: String,
modeAfter: VimStateMachine.Mode,
subModeAfter: SubMode,
fileType: FileType,
) {
configureByText(fileType, before)
NeovimTesting.setupEditor(myFixture.editor, this)
NeovimTesting.typeCommand(keys, this)
performTest(keys, after, modeAfter, subModeAfter)
NeovimTesting.assertState(myFixture.editor, this)
}
fun doTest(
keys: String,
before: String,
after: String,
modeAfter: VimStateMachine.Mode,
subModeAfter: SubMode,
fileName: String,
) { ) {
if (fileName != null) {
configureByText(fileName, before) configureByText(fileName, before)
} else if (fileType != null) {
NeovimTesting.setupEditor(myFixture.editor, this) configureByText(fileType, before)
NeovimTesting.typeCommand(keys, this) } else {
configureByText(before)
}
afterEditorInitialized?.invoke(myFixture.editor)
performTest(keys, after, modeAfter, subModeAfter) performTest(keys, after, modeAfter, subModeAfter)
NeovimTesting.assertState(myFixture.editor, this)
} }
protected fun performTest(keys: String, after: String, modeAfter: VimStateMachine.Mode, subModeAfter: SubMode) { protected fun performTest(keys: String, after: String, modeAfter: VimStateMachine.Mode, subModeAfter: SubMode) {
typeText(injector.parser.parseKeys(keys)) typeText(injector.parser.parseKeys(keys))
PlatformTestUtil.dispatchAllInvocationEventsInIdeEventQueue() PlatformTestUtil.dispatchAllInvocationEventsInIdeEventQueue()
@Suppress("IdeaVimAssertState") assertState(after)
myFixture.checkResult(after)
assertState(modeAfter, subModeAfter)
}
fun doTest(
keys: List<KeyStroke>,
before: String,
after: String?,
modeAfter: VimStateMachine.Mode,
subModeAfter: SubMode,
afterEditorInitialized: (Editor) -> Unit,
) {
configureByText(before)
afterEditorInitialized(myFixture.editor)
typeText(keys)
@Suppress("IdeaVimAssertState")
myFixture.checkResult(after!!)
assertState(modeAfter, subModeAfter) assertState(modeAfter, subModeAfter)
} }
@ -598,12 +561,6 @@ abstract class VimTestCase : UsefulTestCase() {
NeovimTesting.setRegister(register, keys, this) NeovimTesting.setRegister(register, keys, this)
} }
protected fun assertState(modeAfter: VimStateMachine.Mode, subModeAfter: SubMode) {
assertMode(modeAfter)
assertSubMode(subModeAfter)
assertCaretsVisualAttributes()
}
protected val fileManager: FileEditorManagerEx protected val fileManager: FileEditorManagerEx
get() = FileEditorManagerEx.getInstanceEx(myFixture.project) get() = FileEditorManagerEx.getInstanceEx(myFixture.project)

View File

@ -131,7 +131,6 @@ class RepeatChangeActionTest : VimTestCase() {
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test multicaret`() { fun `test multicaret`() {
val keys = listOf("v2erXj^", ".") val keys = listOf("v2erXj^", ".")
val before = """ val before = """

View File

@ -41,7 +41,8 @@ class UndoActionTest : VimTestCase() {
assertFalse(editor.caretModel.primaryCaret.hasSelection()) assertFalse(editor.caretModel.primaryCaret.hasSelection())
} }
fun `test undo after selection`() { // Not yet supported
fun `undo after selection`() {
val keys = listOf("v3eld", "u") val keys = listOf("v3eld", "u")
val before = """ val before = """
A Discovery A Discovery

View File

@ -23,8 +23,6 @@ package org.jetbrains.plugins.ideavim.action.change.change
import com.maddyhome.idea.vim.api.injector import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.helper.VimBehaviorDiffers import com.maddyhome.idea.vim.helper.VimBehaviorDiffers
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class ChangeVisualActionTest : VimTestCase() { class ChangeVisualActionTest : VimTestCase() {
@ -155,7 +153,6 @@ class ChangeVisualActionTest : VimTestCase() {
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test change visual action`() { fun `test change visual action`() {
typeTextInFile( typeTextInFile(
injector.parser.parseKeys("v2lc" + "aaa" + "<ESC>"), injector.parser.parseKeys("v2lc" + "aaa" + "<ESC>"),

View File

@ -0,0 +1,46 @@
/*
* IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
* Copyright (C) 2003-2022 The IdeaVim authors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.jetbrains.plugins.ideavim.action.change.change
//class InsertRegisterTest : VimTestCase() {
// todo test cursor position VIM-2732
// fun `test multiline insert from expression register`() {
// val keys = "VjyGo<C-r>=@\"<CR>"
// val before = """
// A Discovery
//
// ${c}I found it in a legendary land
// all rocks and lavender and tufted grass,
// where it was settled on some sodden sand
// hard by the torrent of a mountain pass.
// """.trimIndent()
// val after = """
// A Discovery
//
// I found it in a legendary land
// all rocks and lavender and tufted grass,
// where it was settled on some sodden sand
// hard by the torrent of a mountain pass.
// I found it in a legendary land
// all rocks and lavender and tufted grass,
// ${c}
// """.trimIndent()
// doTest(keys, before, after, VimStateMachine.Mode.INSERT, VimStateMachine.SubMode.NONE)
// }
//}

View File

@ -20,8 +20,6 @@ package org.jetbrains.plugins.ideavim.action.change.change.number
import com.maddyhome.idea.vim.api.injector import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
/** /**
@ -114,7 +112,6 @@ class ChangeVisualNumberDecActionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test change number dec visual action`() { fun `test change number dec visual action`() {
typeTextInFile( typeTextInFile(
injector.parser.parseKeys("Vj<C-X>"), injector.parser.parseKeys("Vj<C-X>"),

View File

@ -20,8 +20,6 @@ package org.jetbrains.plugins.ideavim.action.change.change.number
import com.maddyhome.idea.vim.api.injector import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
/** /**
@ -114,7 +112,6 @@ class ChangeVisualNumberIncActionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test change number inc visual multiple cursor`() { fun `test change number inc visual multiple cursor`() {
typeTextInFile( typeTextInFile(
injector.parser.parseKeys("Vj<C-A>"), injector.parser.parseKeys("Vj<C-A>"),

View File

@ -92,7 +92,6 @@ class DeleteMotionActionTest : VimTestCase() {
assertEquals(" expression two\n", savedText) assertEquals(" expression two\n", savedText)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test delete line action multicaret`() { fun `test delete line action multicaret`() {
typeTextInFile( typeTextInFile(
injector.parser.parseKeys("d3d"), injector.parser.parseKeys("d3d"),
@ -110,7 +109,6 @@ class DeleteMotionActionTest : VimTestCase() {
assertState("${c}abcde\n${c}") assertState("${c}abcde\n${c}")
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test delete motion action multicaret`() { fun `test delete motion action multicaret`() {
typeTextInFile( typeTextInFile(
injector.parser.parseKeys("dt)"), injector.parser.parseKeys("dt)"),

View File

@ -20,12 +20,9 @@ package org.jetbrains.plugins.ideavim.action.change.insert
import com.maddyhome.idea.vim.api.injector import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class InsertAfterLineEndActionTest : VimTestCase() { class InsertAfterLineEndActionTest : VimTestCase() {
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test insert after line end action`() { fun `test insert after line end action`() {
typeTextInFile( typeTextInFile(
injector.parser.parseKeys("A" + " four" + "<ESC>"), injector.parser.parseKeys("A" + " four" + "<ESC>"),
@ -44,7 +41,6 @@ class InsertAfterLineEndActionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test multiple carets`() { fun `test multiple carets`() {
doTest( doTest(
"AHello<esc>", "AHello<esc>",

View File

@ -19,12 +19,9 @@
package org.jetbrains.plugins.ideavim.action.change.insert package org.jetbrains.plugins.ideavim.action.change.insert
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class InsertBeforeFirstNonBlankActionTest : VimTestCase() { class InsertBeforeFirstNonBlankActionTest : VimTestCase() {
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test insert multiple carets`() { fun `test insert multiple carets`() {
doTest( doTest(
"IHello<esc>", "IHello<esc>",

View File

@ -23,8 +23,6 @@ package org.jetbrains.plugins.ideavim.action.change.insert
import com.maddyhome.idea.vim.api.injector import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.helper.VimBehaviorDiffers import com.maddyhome.idea.vim.helper.VimBehaviorDiffers
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class InsertDeletePreviousWordActionTest : VimTestCase() { class InsertDeletePreviousWordActionTest : VimTestCase() {
@ -146,7 +144,6 @@ class InsertDeletePreviousWordActionTest : VimTestCase() {
assertState("hello\n" + "one two \n") assertState("hello\n" + "one two \n")
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test insert delete previous word action`() { fun `test insert delete previous word action`() {
typeTextInFile( typeTextInFile(
injector.parser.parseKeys("i" + "<C-W>" + "<ESC>"), injector.parser.parseKeys("i" + "<C-W>" + "<ESC>"),

View File

@ -99,7 +99,6 @@ class InsertNewLineAboveActionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test insert new line above with multiple carets`() { fun `test insert new line above with multiple carets`() {
val before = """ I fou${c}nd it in a legendary land val before = """ I fou${c}nd it in a legendary land
| all rocks and laven${c}der and tufted grass, | all rocks and laven${c}der and tufted grass,

View File

@ -117,7 +117,6 @@ class InsertNewLineBelowActionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test insert new line below with multiple carets`() { fun `test insert new line below with multiple carets`() {
val before = """ I fou${c}nd it in a legendary land val before = """ I fou${c}nd it in a legendary land
| all rocks and laven${c}der and tufted grass, | all rocks and laven${c}der and tufted grass,
@ -190,6 +189,7 @@ class InsertNewLineBelowActionTest : VimTestCase() {
performTest("o", after, VimStateMachine.Mode.INSERT, VimStateMachine.SubMode.NONE) performTest("o", after, VimStateMachine.Mode.INSERT, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.FOLDING, "Neovim doesn't support arbitrary folds")
fun `test insert new line below with folds 2`() { fun `test insert new line below with folds 2`() {
val before = """I found it in a legendary land val before = """I found it in a legendary land
|${c}all rocks [and lavender and tufted grass, |${c}all rocks [and lavender and tufted grass,

View File

@ -28,7 +28,6 @@ import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class InsertTabActionTest : VimTestCase() { class InsertTabActionTest : VimTestCase() {
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test insert tab`() { fun `test insert tab`() {
setupChecks { setupChecks {
keyHandler = Checks.KeyHandlerMethod.DIRECT_TO_VIM keyHandler = Checks.KeyHandlerMethod.DIRECT_TO_VIM

View File

@ -57,7 +57,6 @@ class VisualBlockAppendActionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test append in non block mode`() { fun `test append in non block mode`() {
doTest( doTest(
"vwAHello<esc>", "vwAHello<esc>",

View File

@ -73,9 +73,7 @@ Xbar
ba_quux_r ba_quux_r
""".trimIndent(), """.trimIndent()
VimStateMachine.Mode.COMMAND,
VimStateMachine.SubMode.NONE
) )
} }
@ -97,9 +95,7 @@ Xbar
quux spam eggs quux spam eggs
""".trimIndent() """.trimIndent()
), )
VimStateMachine.Mode.COMMAND,
VimStateMachine.SubMode.NONE
) )
} }
@ -136,9 +132,7 @@ Xbar
ba_quux_r ba_quux_r
""".trimIndent() """.trimIndent()
), )
VimStateMachine.Mode.COMMAND,
VimStateMachine.SubMode.NONE
) )
} }
@ -162,10 +156,7 @@ Xbar
where it was settled on some sodden sand where it was settled on some sodden sand
hard by the torrent of a mountain pass. hard by the torrent of a mountain pass.
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND,
VimStateMachine.SubMode.NONE
) )
assertMode(VimStateMachine.Mode.COMMAND)
} }
@TestWithoutNeovim(SkipNeovimReason.VISUAL_BLOCK_MODE) @TestWithoutNeovim(SkipNeovimReason.VISUAL_BLOCK_MODE)
@ -179,7 +170,7 @@ Xbar
hard by the torrent of a mountain pass. hard by the torrent of a mountain pass.
""" """
doTest( doTest(
injector.parser.parseKeys("<C-V>" + "jjI" + " Hello " + "<ESC>"), listOf("<C-V>" + "jjI" + " Hello " + "<ESC>"),
before.trimIndent(), before.trimIndent(),
""" """
A Discovery A Discovery
@ -189,14 +180,11 @@ Xbar
where it was s Hello ettled on some sodden sand where it was s Hello ettled on some sodden sand
hard by the torrent of a mountain pass. hard by the torrent of a mountain pass.
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND,
VimStateMachine.SubMode.NONE
) { ) {
it.inlayModel.addInlineElement(before.indexOf("found"), HintRenderer("Hello")) it.inlayModel.addInlineElement(before.indexOf("found"), HintRenderer("Hello"))
it.inlayModel.addInlineElement(before.indexOf("l rocks"), HintRenderer("Hello")) it.inlayModel.addInlineElement(before.indexOf("l rocks"), HintRenderer("Hello"))
it.inlayModel.addInlineElement(before.indexOf("ere it"), HintRenderer("Hello")) it.inlayModel.addInlineElement(before.indexOf("ere it"), HintRenderer("Hello"))
} }
assertMode(VimStateMachine.Mode.COMMAND)
} }
@TestWithoutNeovim(SkipNeovimReason.VISUAL_BLOCK_MODE) @TestWithoutNeovim(SkipNeovimReason.VISUAL_BLOCK_MODE)

View File

@ -24,8 +24,6 @@ import com.maddyhome.idea.vim.command.SelectionType
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.helper.VimBehaviorDiffers import com.maddyhome.idea.vim.helper.VimBehaviorDiffers
import com.maddyhome.idea.vim.newapi.vim import com.maddyhome.idea.vim.newapi.vim
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
import org.jetbrains.plugins.ideavim.rangeOf import org.jetbrains.plugins.ideavim.rangeOf
import org.junit.Test import org.junit.Test
@ -78,7 +76,6 @@ class PutTestAfterCursorActionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
@Test @Test
fun `test inserting same content to multiple carets`() { fun `test inserting same content to multiple carets`() {
val before = """ val before = """

View File

@ -19,13 +19,10 @@
package org.jetbrains.plugins.ideavim.action.motion.search package org.jetbrains.plugins.ideavim.action.motion.search
import com.maddyhome.idea.vim.VimPlugin import com.maddyhome.idea.vim.VimPlugin
import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.common.Direction import com.maddyhome.idea.vim.common.Direction
import org.jetbrains.plugins.ideavim.SkipNeovimReason import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
import javax.swing.KeyStroke
class SearchAgainPreviousActionTest : VimTestCase() { class SearchAgainPreviousActionTest : VimTestCase() {
@TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION) @TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION)
@ -36,14 +33,13 @@ class SearchAgainPreviousActionTest : VimTestCase() {
...${c}all it was settled on some sodden sand ...${c}all it was settled on some sodden sand
...all by the torrent of a mountain pass ...all by the torrent of a mountain pass
""".trimIndent().dotToTab() """.trimIndent().dotToTab()
val keys = injector.parser.parseKeys("N")
val after = """ val after = """
I found it in a legendary land I found it in a legendary land
...${c}all rocks and lavender and tufted grass, ...${c}all rocks and lavender and tufted grass,
...all it was settled on some sodden sand ...all it was settled on some sodden sand
...all by the torrent of a mountain pass ...all by the torrent of a mountain pass
""".trimIndent().dotToTab() """.trimIndent().dotToTab()
doTestWithSearch(keys, before, after) doTestWithSearch("N", before, after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION) @TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION)
@ -54,14 +50,13 @@ class SearchAgainPreviousActionTest : VimTestCase() {
...all it was .${c}all settled on some sodden sand ...all it was .${c}all settled on some sodden sand
...all by the torrent of a mountain pass ...all by the torrent of a mountain pass
""".trimIndent().dotToTab() """.trimIndent().dotToTab()
val keys = injector.parser.parseKeys("N")
val after = """ val after = """
I found it in a legendary land I found it in a legendary land
...all rocks and lavender and tufted grass, ...all rocks and lavender and tufted grass,
...${c}all it was .all settled on some sodden sand ...${c}all it was .all settled on some sodden sand
...all by the torrent of a mountain pass ...all by the torrent of a mountain pass
""".trimIndent().dotToTab() """.trimIndent().dotToTab()
doTestWithSearch(keys, before, after) doTestWithSearch("N", before, after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION) @TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION)
@ -72,14 +67,13 @@ class SearchAgainPreviousActionTest : VimTestCase() {
...all it was .all.${c}all settled on some sodden sand ...all it was .all.${c}all settled on some sodden sand
...all by the torrent of a mountain pass ...all by the torrent of a mountain pass
""".trimIndent().dotToTab() """.trimIndent().dotToTab()
val keys = injector.parser.parseKeys("N")
val after = """ val after = """
I found it in a legendary land I found it in a legendary land
...all rocks and lavender and tufted grass, ...all rocks and lavender and tufted grass,
...all it was .${c}all.all settled on some sodden sand ...all it was .${c}all.all settled on some sodden sand
...all by the torrent of a mountain pass ...all by the torrent of a mountain pass
""".trimIndent().dotToTab() """.trimIndent().dotToTab()
doTestWithSearch(keys, before, after) doTestWithSearch("N", before, after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION) @TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION)
@ -90,14 +84,13 @@ class SearchAgainPreviousActionTest : VimTestCase() {
...all it was settled on some sodden sand ...all it was settled on some sodden sand
...all by the torrent of a mountain pass ...all by the torrent of a mountain pass
""".trimIndent().dotToTab() """.trimIndent().dotToTab()
val keys = injector.parser.parseKeys("N")
val after = """ val after = """
I found it in a legendary land I found it in a legendary land
...all rocks and lavender and tufted grass, ...all rocks and lavender and tufted grass,
...all it was settled on some sodden sand ...all it was settled on some sodden sand
...${c}all by the torrent of a mountain pass ...${c}all by the torrent of a mountain pass
""".trimIndent().dotToTab() """.trimIndent().dotToTab()
doTestWithSearch(keys, before, after) doTestWithSearch("N", before, after)
} }
fun `test search previous after search command with offset`() { fun `test search previous after search command with offset`() {
@ -174,8 +167,8 @@ class SearchAgainPreviousActionTest : VimTestCase() {
doTest(listOf(searchCommand("/land/1"), exCommand("s/and/or"), "G", "N"), before, after) doTest(listOf(searchCommand("/land/1"), exCommand("s/and/or"), "G", "N"), before, after)
} }
private fun doTestWithSearch(keys: List<KeyStroke>, before: String, after: String) { private fun doTestWithSearch(keys: String, before: String, after: String) {
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) { doTest(keys, before, after) {
VimPlugin.getSearch().setLastSearchState(it, "all", "", Direction.FORWARDS) VimPlugin.getSearch().setLastSearchState(it, "all", "", Direction.FORWARDS)
} }
} }

View File

@ -18,8 +18,6 @@
package org.jetbrains.plugins.ideavim.action.motion.updown package org.jetbrains.plugins.ideavim.action.motion.updown
import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.helper.vimLastColumn import com.maddyhome.idea.vim.helper.vimLastColumn
import org.jetbrains.plugins.ideavim.SkipNeovimReason import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim import org.jetbrains.plugins.ideavim.TestWithoutNeovim
@ -36,12 +34,11 @@ class MotionUpActionTest : VimTestCase() {
I found it in a le${c}gendary land I found it in a le${c}gendary land
all rocks and lavender and tufted grass, all rocks and lavender and tufted grass,
""".trimIndent() """.trimIndent()
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(keys, before, after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION) @TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION)
fun `test last column is incorrect`() { fun `test last column is incorrect`() {
val keys = injector.parser.parseKeys("k")
val before = """ val before = """
I found it in a legendary land I found it in a legendary land
all rocks and lave${c}nder and tufted grass, all rocks and lave${c}nder and tufted grass,
@ -50,7 +47,7 @@ class MotionUpActionTest : VimTestCase() {
I found it in a le${c}gendary land I found it in a le${c}gendary land
all rocks and lavender and tufted grass, all rocks and lavender and tufted grass,
""".trimIndent() """.trimIndent()
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) { doTest("k", before, after) {
it.caretModel.primaryCaret.vimLastColumn = 5 it.caretModel.primaryCaret.vimLastColumn = 5
} }
} }
@ -69,12 +66,11 @@ class MotionUpActionTest : VimTestCase() {
I found it in a legendary land I found it in a legendary land
all rocks and lavender and tufted ${c}grass, all rocks and lavender and tufted ${c}grass,
""".trimIndent() """.trimIndent()
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(keys, before, after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION) @TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION)
fun `test last column wrong lastColumn`() { fun `test last column wrong lastColumn`() {
val keys = injector.parser.parseKeys("k")
val before = """ val before = """
I found it in a legendary land I found it in a legendary land
all rocks and lavender and tufted ${c}grass, all rocks and lavender and tufted ${c}grass,
@ -83,7 +79,7 @@ class MotionUpActionTest : VimTestCase() {
I found it in a legendary lan${c}d I found it in a legendary lan${c}d
all rocks and lavender and tufted grass, all rocks and lavender and tufted grass,
""".trimIndent() """.trimIndent()
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) { doTest("k", before, after) {
it.caretModel.primaryCaret.vimLastColumn = 0 it.caretModel.primaryCaret.vimLastColumn = 0
} }
} }

View File

@ -28,8 +28,6 @@ import com.maddyhome.idea.vim.helper.vimSelectionStart
import com.maddyhome.idea.vim.options.OptionConstants import com.maddyhome.idea.vim.options.OptionConstants
import com.maddyhome.idea.vim.options.OptionScope import com.maddyhome.idea.vim.options.OptionScope
import com.maddyhome.idea.vim.vimscript.model.datatypes.VimString import com.maddyhome.idea.vim.vimscript.model.datatypes.VimString
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
import org.jetbrains.plugins.ideavim.rangeOf import org.jetbrains.plugins.ideavim.rangeOf
@ -230,7 +228,6 @@ class VisualToggleCharacterModeActionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test enter visual with count after visual operation multicaret`() { fun `test enter visual with count after visual operation multicaret`() {
doTest( doTest(
listOf("vedx", "1v"), listOf("vedx", "1v"),

View File

@ -54,20 +54,18 @@ class CommandParserTest : VimTestCase() {
setupChecks { setupChecks {
caretShape = false caretShape = false
} }
val keys = commandToKeys(">>")
val before = "I ${c}found it in a legendary land" val before = "I ${c}found it in a legendary land"
val after = "I :>>${c}found it in a legendary land" val after = "I :>>${c}found it in a legendary land"
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) { doTest(exCommand(">>"), before, after) {
VimPlugin.setEnabled(false) VimPlugin.setEnabled(false)
} }
} }
@TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION) @TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION)
fun `test turn off and on`() { fun `test turn off and on`() {
val keys = commandToKeys(">>")
val before = "I ${c}found it in a legendary land" val before = "I ${c}found it in a legendary land"
val after = " ${c}I found it in a legendary land" val after = " ${c}I found it in a legendary land"
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) { doTest(exCommand(">>"), before, after) {
VimPlugin.setEnabled(false) VimPlugin.setEnabled(false)
VimPlugin.setEnabled(true) VimPlugin.setEnabled(true)
} }
@ -75,10 +73,9 @@ class CommandParserTest : VimTestCase() {
@TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION) @TestWithoutNeovim(reason = SkipNeovimReason.EDITOR_MODIFICATION)
fun `test turn off and on twice`() { fun `test turn off and on twice`() {
val keys = commandToKeys(">>")
val before = "I ${c}found it in a legendary land" val before = "I ${c}found it in a legendary land"
val after = " ${c}I found it in a legendary land" val after = " ${c}I found it in a legendary land"
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) { doTest(exCommand(">>"), before, after) {
VimPlugin.setEnabled(false) VimPlugin.setEnabled(false)
VimPlugin.setEnabled(true) VimPlugin.setEnabled(true)
VimPlugin.setEnabled(true) VimPlugin.setEnabled(true)

View File

@ -68,7 +68,6 @@ class MultipleCaretsTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun testJoinLines() { fun testJoinLines() {
val before = "qwe\n" + "r${c}ty\n" + "asd\n" + "fg${c}h\n" + "zxc\n" + "vbn\n" val before = "qwe\n" + "r${c}ty\n" + "asd\n" + "fg${c}h\n" + "zxc\n" + "vbn\n"
configureByText(before) configureByText(before)
@ -86,7 +85,6 @@ class MultipleCaretsTest : VimTestCase() {
// myFixture.checkResult(after) // myFixture.checkResult(after)
// } // }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun testCopyText() { fun testCopyText() {
val before = "qwe\n" + "rty\n" + "a${c}sd\n" + "fg${c}h\n" + "zxc\n" + "vbn\n" val before = "qwe\n" + "rty\n" + "a${c}sd\n" + "fg${c}h\n" + "zxc\n" + "vbn\n"
configureByText(before) configureByText(before)
@ -104,7 +102,6 @@ class MultipleCaretsTest : VimTestCase() {
// myFixture.checkResult(after) // myFixture.checkResult(after)
// } // }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun testPutText() { fun testPutText() {
// This test produces double ${c}zxc on 3rd line if non-idea paste is used // This test produces double ${c}zxc on 3rd line if non-idea paste is used
val before = """ val before = """
@ -173,7 +170,6 @@ class MultipleCaretsTest : VimTestCase() {
// myFixture.checkResult(after) // myFixture.checkResult(after)
// } // }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun testMoveTextBeforeCarets() { fun testMoveTextBeforeCarets() {
val before = "qwe\n" + "rty\n" + "${c}asd\n" + "fgh\n" + "z${c}xc\n" + "vbn\n" val before = "qwe\n" + "rty\n" + "${c}asd\n" + "fgh\n" + "z${c}xc\n" + "vbn\n"
configureByText(before) configureByText(before)
@ -182,7 +178,6 @@ class MultipleCaretsTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun testMoveTextAfterCarets() { fun testMoveTextAfterCarets() {
val before = "q${c}we\n" + "rty\n" + "${c}asd\n" + "fgh\n" + "zxc\n" + "vbn\n" val before = "q${c}we\n" + "rty\n" + "${c}asd\n" + "fgh\n" + "zxc\n" + "vbn\n"
configureByText(before) configureByText(before)
@ -191,7 +186,6 @@ class MultipleCaretsTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun testMoveTextBetweenCarets() { fun testMoveTextBetweenCarets() {
val before = "q${c}we\n" + "rty\n" + "${c}asd\n" + "fgh\n" + "zxc\n" + "vbn\n" val before = "q${c}we\n" + "rty\n" + "${c}asd\n" + "fgh\n" + "zxc\n" + "vbn\n"
configureByText(before) configureByText(before)
@ -200,7 +194,6 @@ class MultipleCaretsTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun testYankLines() { fun testYankLines() {
val before = """qwe val before = """qwe
|rt${c}y |rt${c}y
@ -230,7 +223,6 @@ class MultipleCaretsTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun testDeleteLines() { fun testDeleteLines() {
val before = """qwe val before = """qwe
|r${c}ty |r${c}ty

View File

@ -19,6 +19,7 @@
package org.jetbrains.plugins.ideavim.ex.implementation.commands package org.jetbrains.plugins.ideavim.ex.implementation.commands
import com.maddyhome.idea.vim.VimPlugin import com.maddyhome.idea.vim.VimPlugin
import com.maddyhome.idea.vim.api.injector
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
/** /**
@ -130,6 +131,22 @@ class CmdCommandTest : VimTestCase() {
assertPluginError(false) assertPluginError(false)
} }
fun `test add command with range`() {
VimPlugin.getCommand().resetAliases()
configureByText("\n")
typeText(commandToKeys("command! -range Error echo <args>"))
assertPluginError(false)
assertEquals("'-range' is not supported by `command`", injector.messages.getStatusBarMessage())
}
fun `test add command with complete`() {
VimPlugin.getCommand().resetAliases()
configureByText("\n")
typeText(commandToKeys("command! -complete=color Error echo <args>"))
assertPluginError(false)
assertEquals("'-complete' is not supported by `command`", injector.messages.getStatusBarMessage())
}
fun `test add command with arguments short`() { fun `test add command with arguments short`() {
VimPlugin.getCommand().resetAliases() VimPlugin.getCommand().resetAliases()
configureByText("\n") configureByText("\n")

View File

@ -21,8 +21,6 @@ package org.jetbrains.plugins.ideavim.ex.implementation.commands
import com.maddyhome.idea.vim.api.injector import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.helper.VimBehaviorDiffers import com.maddyhome.idea.vim.helper.VimBehaviorDiffers
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class JoinLinesCommandTest : VimTestCase() { class JoinLinesCommandTest : VimTestCase() {
@ -97,7 +95,6 @@ class JoinLinesCommandTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test join multicaret`() { fun `test join multicaret`() {
configureByText( configureByText(
""" """

View File

@ -102,7 +102,6 @@ class ShiftLeftCommandTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test multiple carets`() { fun `test multiple carets`() {
val before = """ I found it in a legendary land val before = """ I found it in a legendary land
|${c}all rocks and lavender and tufted grass, |${c}all rocks and lavender and tufted grass,

View File

@ -83,7 +83,6 @@ class ShiftRightCommandTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.MULTICARET)
fun `test multiple carets`() { fun `test multiple carets`() {
val before = """ I found it in a legendary land val before = """ I found it in a legendary land
|${c}all rocks and lavender and tufted grass, |${c}all rocks and lavender and tufted grass,

View File

@ -0,0 +1,33 @@
/*
* IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
* Copyright (C) 2003-2022 The IdeaVim authors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.jetbrains.plugins.ideavim.ex.implementation.expressions
import com.maddyhome.idea.vim.helper.StringHelper.parseKeys
import com.maddyhome.idea.vim.vimscript.model.expressions.Register
import org.jetbrains.plugins.ideavim.VimTestCase
import org.jetbrains.plugins.ideavim.ex.evaluate
class ExpressionTest: VimTestCase() {
fun `test multiline register content`() {
configureByText("${c}Oh\nHi\nMark\n")
typeText(parseKeys("VGy"))
assertEquals("Oh\nHi\nMark\n", Register('"').evaluate().toString())
}
}

View File

@ -41,8 +41,6 @@ import com.maddyhome.idea.vim.newapi.ij
import com.maddyhome.idea.vim.newapi.vim import com.maddyhome.idea.vim.newapi.vim
import com.maddyhome.idea.vim.options.OptionScope import com.maddyhome.idea.vim.options.OptionScope
import junit.framework.TestCase import junit.framework.TestCase
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class OpMappingTest : VimTestCase() { class OpMappingTest : VimTestCase() {
@ -68,7 +66,6 @@ class OpMappingTest : VimTestCase() {
super.tearDown() super.tearDown()
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test simple delete`() { fun `test simple delete`() {
doTest( doTest(
"dI", "dI",
@ -79,7 +76,6 @@ class OpMappingTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test simple delete backwards`() { fun `test simple delete backwards`() {
doTest( doTest(
"dP", "dP",
@ -90,7 +86,6 @@ class OpMappingTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test delete emulate inclusive`() { fun `test delete emulate inclusive`() {
doTest( doTest(
"dU", "dU",
@ -101,7 +96,6 @@ class OpMappingTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test linewise delete`() { fun `test linewise delete`() {
doTest( doTest(
"dO", "dO",
@ -124,7 +118,6 @@ class OpMappingTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test disable extension via set`() { fun `test disable extension via set`() {
configureByText("${c}I found it in a legendary land") configureByText("${c}I found it in a legendary land")
typeText(injector.parser.parseKeys("Q")) typeText(injector.parser.parseKeys("Q"))
@ -139,7 +132,6 @@ class OpMappingTest : VimTestCase() {
assertState("I ${c}found it in a legendary land") assertState("I ${c}found it in a legendary land")
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test disable extension as extension point`() { fun `test disable extension as extension point`() {
configureByText("${c}I found it in a legendary land") configureByText("${c}I found it in a legendary land")
typeText(injector.parser.parseKeys("Q")) typeText(injector.parser.parseKeys("Q"))
@ -158,7 +150,6 @@ class OpMappingTest : VimTestCase() {
assertState("I ${c}found it in a legendary land") assertState("I ${c}found it in a legendary land")
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test disable disposed extension`() { fun `test disable disposed extension`() {
configureByText("${c}I found it in a legendary land") configureByText("${c}I found it in a legendary land")
typeText(injector.parser.parseKeys("Q")) typeText(injector.parser.parseKeys("Q"))
@ -176,7 +167,6 @@ class OpMappingTest : VimTestCase() {
assertState("I ${c}found it in a legendary land") assertState("I ${c}found it in a legendary land")
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test delayed action`() { fun `test delayed action`() {
configureByText("${c}I found it in a legendary land") configureByText("${c}I found it in a legendary land")
typeText(injector.parser.parseKeys("R")) typeText(injector.parser.parseKeys("R"))
@ -191,7 +181,6 @@ class OpMappingTest : VimTestCase() {
/** /**
* This test tests an intentionally incorrectly implemented action * This test tests an intentionally incorrectly implemented action
*/ */
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test delayed incorrect action`() { fun `test delayed incorrect action`() {
configureByText("${c}I found it in a legendary land") configureByText("${c}I found it in a legendary land")
typeText(injector.parser.parseKeys("E")) typeText(injector.parser.parseKeys("E"))
@ -221,21 +210,18 @@ class PlugExtensionsTest : VimTestCase() {
super.tearDown() super.tearDown()
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test enable via plug`() { fun `test enable via plug`() {
injector.vimscriptExecutor.execute("Plug 'MyTest'", false) injector.vimscriptExecutor.execute("Plug 'MyTest'", false)
assertTrue(extension.ext.initialized) assertTrue(extension.ext.initialized)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test enable via plugin`() { fun `test enable via plugin`() {
injector.vimscriptExecutor.execute("Plugin 'MyTest'", false) injector.vimscriptExecutor.execute("Plugin 'MyTest'", false)
assertTrue(extension.ext.initialized) assertTrue(extension.ext.initialized)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test enable via plug and disable via set`() { fun `test enable via plug and disable via set`() {
injector.vimscriptExecutor.execute("Plug 'MyTest'") injector.vimscriptExecutor.execute("Plug 'MyTest'")
injector.vimscriptExecutor.execute("set noTestExtension") injector.vimscriptExecutor.execute("set noTestExtension")
@ -261,7 +247,6 @@ class PlugMissingKeysTest : VimTestCase() {
super.tearDown() super.tearDown()
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test missing keys`() { fun `test missing keys`() {
executeLikeVimrc( executeLikeVimrc(
"map myKey <Plug>TestMissing", "map myKey <Plug>TestMissing",
@ -277,7 +262,6 @@ class PlugMissingKeysTest : VimTestCase() {
TestCase.assertEquals(injector.parser.parseKeys("L"), iKeyMappings.first().first) TestCase.assertEquals(injector.parser.parseKeys("L"), iKeyMappings.first().first)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test missing keys enable plugin first`() { fun `test missing keys enable plugin first`() {
executeLikeVimrc( executeLikeVimrc(
"Plug 'MyTest'", "Plug 'MyTest'",
@ -293,7 +277,6 @@ class PlugMissingKeysTest : VimTestCase() {
TestCase.assertEquals(injector.parser.parseKeys("L"), iKeyMappings.first().first) TestCase.assertEquals(injector.parser.parseKeys("L"), iKeyMappings.first().first)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test packadd`() { fun `test packadd`() {
assertFalse(injector.optionService.isSet(OptionScope.GLOBAL, "matchit")) assertFalse(injector.optionService.isSet(OptionScope.GLOBAL, "matchit"))
executeLikeVimrc( executeLikeVimrc(
@ -303,7 +286,6 @@ class PlugMissingKeysTest : VimTestCase() {
assertTrue(injector.optionService.isSet(OptionScope.GLOBAL, "matchit")) assertTrue(injector.optionService.isSet(OptionScope.GLOBAL, "matchit"))
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test packadd ex`() { fun `test packadd ex`() {
assertFalse(injector.optionService.isSet(OptionScope.GLOBAL, "matchit")) assertFalse(injector.optionService.isSet(OptionScope.GLOBAL, "matchit"))
executeLikeVimrc( executeLikeVimrc(

View File

@ -22,8 +22,6 @@ import com.google.common.collect.Lists;
import com.maddyhome.idea.vim.api.VimInjectorKt; import com.maddyhome.idea.vim.api.VimInjectorKt;
import com.maddyhome.idea.vim.command.VimStateMachine; import com.maddyhome.idea.vim.command.VimStateMachine;
import com.maddyhome.idea.vim.helper.VimBehaviorDiffers; import com.maddyhome.idea.vim.helper.VimBehaviorDiffers;
import org.jetbrains.plugins.ideavim.SkipNeovimReason;
import org.jetbrains.plugins.ideavim.TestWithoutNeovim;
import org.jetbrains.plugins.ideavim.VimTestCase; import org.jetbrains.plugins.ideavim.VimTestCase;
import java.util.Collections; import java.util.Collections;
@ -41,7 +39,7 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
VimInjectorKt.getInjector().getVimscriptExecutor().execute("let argtextobj_pairs='" + value + "'", true); VimInjectorKt.getInjector().getVimscriptExecutor().execute("let argtextobj_pairs='" + value + "'", true);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testDeleteAnArgument() { public void testDeleteAnArgument() {
doTest(Lists.newArrayList("daa"), "function(int arg1, char<caret>* arg2=\"a,b,c(d,e)\")", doTest(Lists.newArrayList("daa"), "function(int arg1, char<caret>* arg2=\"a,b,c(d,e)\")",
"function(int arg1<caret>)", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); "function(int arg1<caret>)", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
@ -49,13 +47,11 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
VimStateMachine.SubMode.NONE); VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testChangeInnerArgument() { public void testChangeInnerArgument() {
doTest(Lists.newArrayList("cia"), "function(int arg1, char<caret>* arg2=\"a,b,c(d,e)\")", doTest(Lists.newArrayList("cia"), "function(int arg1, char<caret>* arg2=\"a,b,c(d,e)\")",
"function(int arg1, <caret>)", VimStateMachine.Mode.INSERT, VimStateMachine.SubMode.NONE); "function(int arg1, <caret>)", VimStateMachine.Mode.INSERT, VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testSmartArgumentRecognition() { public void testSmartArgumentRecognition() {
doTest(Lists.newArrayList("dia"), "function(1, (20<caret>*30)+40, somefunc2(3, 4))", doTest(Lists.newArrayList("dia"), "function(1, (20<caret>*30)+40, somefunc2(3, 4))",
"function(1, <caret>, somefunc2(3, 4))", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); "function(1, <caret>, somefunc2(3, 4))", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
@ -63,7 +59,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
"function(1, (20*30)+40, somefunc2(<caret>4))", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); "function(1, (20*30)+40, somefunc2(<caret>4))", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testIgnoreQuotedArguments() { public void testIgnoreQuotedArguments() {
doTest(Lists.newArrayList("daa"), "function(int arg1, char* arg2=a,b,c(<caret>arg,e))", doTest(Lists.newArrayList("daa"), "function(int arg1, char* arg2=a,b,c(<caret>arg,e))",
"function(int arg1, char* arg2=a,b,c(<caret>e))", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); "function(int arg1, char* arg2=a,b,c(<caret>e))", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
@ -75,7 +70,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
"function(int arg1<caret>)", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); "function(int arg1<caret>)", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testDeleteTwoArguments() { public void testDeleteTwoArguments() {
doTest(Lists.newArrayList("d2aa"), "function(int <caret>arg1, char* arg2=\"a,b,c(d,e)\")", "function(<caret>)", doTest(Lists.newArrayList("d2aa"), "function(int <caret>arg1, char* arg2=\"a,b,c(d,e)\")", "function(<caret>)",
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
@ -91,7 +85,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
"function(int arg1, <caret>)", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); "function(int arg1, <caret>)", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testSelectTwoArguments() { public void testSelectTwoArguments() {
doTest(Lists.newArrayList("v2aa"), "function(int <caret>arg1, char* arg2=\"a,b,c(d,e)\", bool arg3)", doTest(Lists.newArrayList("v2aa"), "function(int <caret>arg1, char* arg2=\"a,b,c(d,e)\", bool arg3)",
"function(<selection>int arg1, char* arg2=\"a,b,c(d,e)\", </selection>bool arg3)", "function(<selection>int arg1, char* arg2=\"a,b,c(d,e)\", </selection>bool arg3)",
@ -101,14 +94,12 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
VimStateMachine.Mode.VISUAL, VimStateMachine.SubMode.VISUAL_CHARACTER); VimStateMachine.Mode.VISUAL, VimStateMachine.SubMode.VISUAL_CHARACTER);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testArgumentsInsideAngleBrackets() { public void testArgumentsInsideAngleBrackets() {
setArgTextObjPairsVariable("(:),<:>"); setArgTextObjPairsVariable("(:),<:>");
doTest(Lists.newArrayList("dia"), "std::vector<int, std::unique_p<caret>tr<bool>> v{};", doTest(Lists.newArrayList("dia"), "std::vector<int, std::unique_p<caret>tr<bool>> v{};",
"std::vector<int, <caret>> v{};", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); "std::vector<int, <caret>> v{};", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testWhenUnbalancedHigherPriorityPairIsUsed() { public void testWhenUnbalancedHigherPriorityPairIsUsed() {
setArgTextObjPairsVariable("{:},(:)"); setArgTextObjPairsVariable("{:},(:)");
doTest(Lists.newArrayList("dia"), "namespace foo { void foo(int arg1, bool arg2<caret> { body }\n}", doTest(Lists.newArrayList("dia"), "namespace foo { void foo(int arg1, bool arg2<caret> { body }\n}",
@ -117,7 +108,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
"namespace foo { <caret>, bool arg2 { body }\n}", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); "namespace foo { <caret>, bool arg2 { body }\n}", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testBracketPriorityToHangleShiftOperators() { public void testBracketPriorityToHangleShiftOperators() {
doTest(Lists.newArrayList("dia"), "foo(30 << 10, 20 << <caret>3) >> 17", "foo(30 << 10, <caret>) >> 17", doTest(Lists.newArrayList("dia"), "foo(30 << 10, 20 << <caret>3) >> 17", "foo(30 << 10, <caret>) >> 17",
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
@ -127,7 +117,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testEmptyFile() { public void testEmptyFile() {
assertPluginError(false); assertPluginError(false);
doTest(Lists.newArrayList("daa"), "<caret>", "<caret>", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); doTest(Lists.newArrayList("daa"), "<caret>", "<caret>", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
@ -136,7 +125,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
assertPluginError(true); assertPluginError(true);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testEmptyLine() { public void testEmptyLine() {
assertPluginError(false); assertPluginError(false);
doTest(Lists.newArrayList("daa"), "<caret>\n", "<caret>\n", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); doTest(Lists.newArrayList("daa"), "<caret>\n", "<caret>\n", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
@ -145,7 +133,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
assertPluginError(true); assertPluginError(true);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testEmptyArg() { public void testEmptyArg() {
assertPluginError(false); assertPluginError(false);
doTest(Lists.newArrayList("daa"), "foo(<caret>)", "foo(<caret>)", VimStateMachine.Mode.COMMAND, doTest(Lists.newArrayList("daa"), "foo(<caret>)", "foo(<caret>)", VimStateMachine.Mode.COMMAND,
@ -156,7 +143,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
assertPluginError(true); assertPluginError(true);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testSkipCommasInsideNestedPairs() { public void testSkipCommasInsideNestedPairs() {
final String before = final String before =
"void foo(int arg1)\n{" + " methodCall(arg1, \"{ arg1 , 2\");\n" + " otherMeth<caret>odcall(arg, 3);\n" + "}"; "void foo(int arg1)\n{" + " methodCall(arg1, \"{ arg1 , 2\");\n" + " otherMeth<caret>odcall(arg, 3);\n" + "}";
@ -164,19 +150,16 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
assertPluginError(true); assertPluginError(true);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testHandleNestedPairs() { public void testHandleNestedPairs() {
doTest(Lists.newArrayList("dia"), "foo(arg1, arr<caret>ay[someexpr(Class{arg1 << 3, arg2})] + 3)\n{", doTest(Lists.newArrayList("dia"), "foo(arg1, arr<caret>ay[someexpr(Class{arg1 << 3, arg2})] + 3)\n{",
"foo(arg1, <caret>)\n{", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); "foo(arg1, <caret>)\n{", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testHandleNestedParenthesisForASingleArgument() { public void testHandleNestedParenthesisForASingleArgument() {
doTest(Lists.newArrayList("dia"), "foo((20*<caret>30))", "foo(<caret>)", VimStateMachine.Mode.COMMAND, doTest(Lists.newArrayList("dia"), "foo((20*<caret>30))", "foo(<caret>)", VimStateMachine.Mode.COMMAND,
VimStateMachine.SubMode.NONE); VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testHandleImbalancedPairs() { public void testHandleImbalancedPairs() {
doTest(Lists.newArrayList("dia"), "foo(arg1, ba<caret>r(not-an-arg{body", "foo(arg1, ba<caret>r(not-an-arg{body", doTest(Lists.newArrayList("dia"), "foo(arg1, ba<caret>r(not-an-arg{body", "foo(arg1, ba<caret>r(not-an-arg{body",
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
@ -192,14 +175,12 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
assertPluginError(true); assertPluginError(true);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testArgumentBoundsSearchIsLimitedByLineCount() { public void testArgumentBoundsSearchIsLimitedByLineCount() {
final String before = "foo(\n" + String.join("", Collections.nCopies(10, " arg,\n")) + " last<caret>Arg" + ")"; final String before = "foo(\n" + String.join("", Collections.nCopies(10, " arg,\n")) + " last<caret>Arg" + ")";
doTest(Lists.newArrayList("dia"), before, before, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); doTest(Lists.newArrayList("dia"), before, before, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
assertPluginError(true); assertPluginError(true);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testExtendVisualSelection() { public void testExtendVisualSelection() {
doTest(Lists.newArrayList("vllia"), "function(int arg1, ch<caret>ar* arg2=\"a,b,c(d,e)\")", doTest(Lists.newArrayList("vllia"), "function(int arg1, ch<caret>ar* arg2=\"a,b,c(d,e)\")",
"function(int arg1, <selection>char* arg2=\"a,b,c(d,e)\"</selection>)", VimStateMachine.Mode.VISUAL, "function(int arg1, <selection>char* arg2=\"a,b,c(d,e)\"</selection>)", VimStateMachine.Mode.VISUAL,
@ -209,13 +190,11 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
VimStateMachine.SubMode.VISUAL_CHARACTER); VimStateMachine.SubMode.VISUAL_CHARACTER);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testExtendVisualSelectionUsesCaretPos() { public void testExtendVisualSelectionUsesCaretPos() {
doTest(Lists.newArrayList("vllia"), "fu<caret>n(arg)", "fun(<selection>arg</selection>)", VimStateMachine.Mode.VISUAL, doTest(Lists.newArrayList("vllia"), "fu<caret>n(arg)", "fun(<selection>arg</selection>)", VimStateMachine.Mode.VISUAL,
VimStateMachine.SubMode.VISUAL_CHARACTER); VimStateMachine.SubMode.VISUAL_CHARACTER);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testDeleteArrayArgument() { public void testDeleteArrayArgument() {
setArgTextObjPairsVariable("[:],(:)"); setArgTextObjPairsVariable("[:],(:)");
doTest(Lists.newArrayList("dia"), "function(int a, String[<caret>] b)", "function(int a, <caret>)", doTest(Lists.newArrayList("dia"), "function(int a, String[<caret>] b)", "function(int a, <caret>)",
@ -224,7 +203,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE); VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testDeleteInClass() { public void testDeleteInClass() {
doTest(Lists.newArrayList("dia"), "class MyClass{ public int myFun() { some<caret>Call(); } }", doTest(Lists.newArrayList("dia"), "class MyClass{ public int myFun() { some<caret>Call(); } }",
"class MyClass{ public int myFun() { some<caret>Call(); } }", VimStateMachine.Mode.COMMAND, "class MyClass{ public int myFun() { some<caret>Call(); } }", VimStateMachine.Mode.COMMAND,
@ -234,7 +212,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
VimStateMachine.SubMode.NONE); VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testFunctionWithSpaceAfterName() { public void testFunctionWithSpaceAfterName() {
doTest(Lists.newArrayList("dia"), "function (int <caret>a)", "function (int <caret>a)", VimStateMachine.Mode.COMMAND, doTest(Lists.newArrayList("dia"), "function (int <caret>a)", "function (int <caret>a)", VimStateMachine.Mode.COMMAND,
VimStateMachine.SubMode.NONE); VimStateMachine.SubMode.NONE);
@ -243,7 +220,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
} }
@VimBehaviorDiffers(originalVimAfter = "function (int <caret>a, int b)", description = "Should work the same as testFunctionWithSpaceAfterName") @VimBehaviorDiffers(originalVimAfter = "function (int <caret>a, int b)", description = "Should work the same as testFunctionWithSpaceAfterName")
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testFunctionWithSpaceAfterNameWithTwoArgs() { public void testFunctionWithSpaceAfterNameWithTwoArgs() {
doTest(Lists.newArrayList("dia"), "function (int <caret>a, int b)", "function (, int b)", VimStateMachine.Mode.COMMAND, doTest(Lists.newArrayList("dia"), "function (int <caret>a, int b)", "function (, int b)", VimStateMachine.Mode.COMMAND,
VimStateMachine.SubMode.NONE); VimStateMachine.SubMode.NONE);
@ -251,7 +227,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
VimStateMachine.SubMode.NONE); VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testDeleteInIf() { public void testDeleteInIf() {
doTest(Lists.newArrayList("dia"), "class MyClass{ public int myFun() { if (tr<caret>ue) { somFunction(); } } }", doTest(Lists.newArrayList("dia"), "class MyClass{ public int myFun() { if (tr<caret>ue) { somFunction(); } } }",
"class MyClass{ public int myFun() { if (tr<caret>ue) { somFunction(); } } }", VimStateMachine.Mode.COMMAND, "class MyClass{ public int myFun() { if (tr<caret>ue) { somFunction(); } } }", VimStateMachine.Mode.COMMAND,
@ -261,7 +236,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
VimStateMachine.SubMode.NONE); VimStateMachine.SubMode.NONE);
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testParseVariablePairs() { public void testParseVariablePairs() {
assertPluginError(false); assertPluginError(false);
setArgTextObjPairsVariable("[:], (:)"); setArgTextObjPairsVariable("[:], (:)");
@ -306,7 +280,6 @@ public class VimArgTextObjExtensionTest extends VimTestCase {
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
public void testCppLambaArguments() { public void testCppLambaArguments() {
setArgTextObjPairsVariable("[:],(:),{:},<:>"); setArgTextObjPairsVariable("[:],(:),{:},<:>");
doTest(Lists.newArrayList("daa"), doTest(Lists.newArrayList("daa"),

View File

@ -22,21 +22,17 @@ import com.intellij.ide.highlighter.HtmlFileType
import com.intellij.ide.highlighter.JavaFileType import com.intellij.ide.highlighter.JavaFileType
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.helper.VimBehaviorDiffers import com.maddyhome.idea.vim.helper.VimBehaviorDiffers
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
import org.jetbrains.yaml.YAMLFileType import org.jetbrains.yaml.YAMLFileType
@Suppress("SpellCheckingInspection") @Suppress("SpellCheckingInspection")
class CommentaryExtensionTest : VimTestCase() { class CommentaryExtensionTest : VimTestCase() {
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
override fun setUp() { override fun setUp() {
super.setUp() super.setUp()
enableExtensions("commentary") enableExtensions("commentary")
} }
// |gc| |l| + move caret // |gc| |l| + move caret
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testBlockCommentSingle() { fun testBlockCommentSingle() {
doTest( doTest(
"gcll", "gcll",
@ -48,7 +44,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
// |gc| |iw| // |gc| |iw|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testBlockCommentInnerWord() { fun testBlockCommentInnerWord() {
doTest( doTest(
"gciw", "gciw",
@ -60,7 +55,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
// |gc| |iw| // |gc| |iw|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testBlockCommentTillForward() { fun testBlockCommentTillForward() {
doTest( doTest(
"gct{", "gct{",
@ -71,7 +65,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
// |gc| |ab| // |gc| |ab|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testBlockCommentOuterParens() { fun testBlockCommentOuterParens() {
doTest( doTest(
"gcab", "gcab",
@ -86,7 +79,6 @@ class CommentaryExtensionTest : VimTestCase() {
* otherwise, they are incredibly difficult to undo * otherwise, they are incredibly difficult to undo
*/ */
// |gc| |j| // |gc| |j|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testLineCommentDown() { fun testLineCommentDown() {
doTest( doTest(
"gcj", "gcj",
@ -97,7 +89,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testLineCommentDownPreservesAbsoluteCaretLocation() { fun testLineCommentDownPreservesAbsoluteCaretLocation() {
doTest( doTest(
"gcj", "gcj",
@ -109,7 +100,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
// |gc| |ip| // |gc| |ip|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testLineCommentInnerParagraph() { fun testLineCommentInnerParagraph() {
doTest( doTest(
"gcip", "gcip",
@ -121,7 +111,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
// |gc| |ip| // |gc| |ip|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testLineCommentSingleLineInnerParagraph() { fun testLineCommentSingleLineInnerParagraph() {
doTest( doTest(
"gcip", "gcip",
@ -132,7 +121,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
/* Ensure uncommenting works as well */ // |gc| |ip| /* Ensure uncommenting works as well */ // |gc| |ip|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testLineUncommentInnerParagraph() { fun testLineUncommentInnerParagraph() {
doTest( doTest(
"gcip", "gcip",
@ -145,7 +133,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
// |gc| |ip| // |gc| |ip|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testLineUncommentSingleLineInnerParagraph() { fun testLineUncommentSingleLineInnerParagraph() {
doTest( doTest(
"gcip", "gcip",
@ -156,7 +143,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
/* Visual mode */ // |gc| |ip| /* Visual mode */ // |gc| |ip|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testLineCommentVisualInnerParagraph() { fun testLineCommentVisualInnerParagraph() {
doTest( doTest(
"vipgc", "vipgc",
@ -168,7 +154,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
// |gc| |ip| // |gc| |ip|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testLineUncommentVisualInnerParagraph() { fun testLineUncommentVisualInnerParagraph() {
doTest( doTest(
"vipgc", "vipgc",
@ -180,7 +165,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
/* Special shortcut gcc is always linewise */ // |gcc| /* Special shortcut gcc is always linewise */ // |gcc|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testLineCommentShortcut() { fun testLineCommentShortcut() {
doTest( doTest(
"gccj", "gccj",
@ -193,7 +177,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
// |gcc| // |gcc|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testLineCommentShortcutSetsCaretToMotionLocation() { fun testLineCommentShortcutSetsCaretToMotionLocation() {
doTest( doTest(
"gcc", "gcc",
@ -205,7 +188,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
// |gcc| // |gcc|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testLineUncommentShortcut() { fun testLineUncommentShortcut() {
doTest( doTest(
"gcc", "gcc",
@ -218,7 +200,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
// |gcc| // |gcc|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testHTMLCommentShortcut() { fun testHTMLCommentShortcut() {
doTest( doTest(
"gcc", "gcc",
@ -231,7 +212,6 @@ class CommentaryExtensionTest : VimTestCase() {
assertSelection(null) assertSelection(null)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test comment motion repeat`() { fun `test comment motion repeat`() {
doTest( doTest(
"gcj" + "jj.", "gcj" + "jj.",
@ -251,7 +231,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test comment motion right repeat`() { fun `test comment motion right repeat`() {
doTest( doTest(
"gciw" + "jj.", "gciw" + "jj.",
@ -271,7 +250,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test comment line repeat`() { fun `test comment line repeat`() {
doTest( doTest(
"gcc" + "j.", "gcc" + "j.",
@ -288,7 +266,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
@VimBehaviorDiffers(description = "IntelliJ's uncomment leaves the leading whitespace") @VimBehaviorDiffers(description = "IntelliJ's uncomment leaves the leading whitespace")
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test uncomment with gcgc`() { fun `test uncomment with gcgc`() {
doTest( doTest(
"gcgc", "gcgc",
@ -309,7 +286,6 @@ class CommentaryExtensionTest : VimTestCase() {
} }
@VimBehaviorDiffers(description = "IntelliJ's uncomment leaves the leading whitespace") @VimBehaviorDiffers(description = "IntelliJ's uncomment leaves the leading whitespace")
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test uncomment with gcu`() { fun `test uncomment with gcu`() {
doTest( doTest(
"gcu", "gcu",
@ -329,7 +305,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test comment line with count`() { fun `test comment line with count`() {
// Caret position is kept as the position *before* the commenting. This is how Vim works // Caret position is kept as the position *before* the commenting. This is how Vim works
doTest( doTest(
@ -354,7 +329,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes single line comment`() { fun `test text object deletes single line comment`() {
doTest( doTest(
"dgc", "dgc",
@ -369,7 +343,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes multiple line comments`() { fun `test text object deletes multiple line comments`() {
doTest( doTest(
"dgc", "dgc",
@ -388,7 +361,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes multiple line comments 2`() { fun `test text object deletes multiple line comments 2`() {
doTest( doTest(
"dgc", "dgc",
@ -407,7 +379,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes single line comment from leading whitespace`() { fun `test text object deletes single line comment from leading whitespace`() {
doTest( doTest(
"dgc", "dgc",
@ -422,7 +393,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes single line comment from leading whitespace 2`() { fun `test text object deletes single line comment from leading whitespace 2`() {
doTest( doTest(
"dgc", "dgc",
@ -439,7 +409,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes single line comment from leading whitespace 3`() { fun `test text object deletes single line comment from leading whitespace 3`() {
doTest( doTest(
"dgc", "dgc",
@ -458,7 +427,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes single line comment from trailing whitespace`() { fun `test text object deletes single line comment from trailing whitespace`() {
doTest( doTest(
"dgc", "dgc",
@ -476,7 +444,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes single line comments separated by whitespace`() { fun `test text object deletes single line comments separated by whitespace`() {
doTest( doTest(
"dgc", "dgc",
@ -493,7 +460,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes disjointed single line comments from whitespace`() { fun `test text object deletes disjointed single line comments from whitespace`() {
doTest( doTest(
"dgc", "dgc",
@ -515,7 +481,6 @@ class CommentaryExtensionTest : VimTestCase() {
final Int value = 42; final Int value = 42;
""" """
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes single line comment from current line`() { fun `test text object deletes single line comment from current line`() {
doTest( doTest(
"dgc", "dgc",
@ -531,7 +496,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes single line comment from current line 2`() { fun `test text object deletes single line comment from current line 2`() {
doTest( doTest(
"dgc", "dgc",
@ -548,7 +512,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object does not delete line with comment and text`() { fun `test text object does not delete line with comment and text`() {
doTest( doTest(
"dgc", "dgc",
@ -562,7 +525,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes block comment`() { fun `test text object deletes block comment`() {
doTest( doTest(
"dgc", "dgc",
@ -577,7 +539,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes multi-line block comment`() { fun `test text object deletes multi-line block comment`() {
doTest( doTest(
"dgc", "dgc",
@ -594,7 +555,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes adjoining multi-line block comments`() { fun `test text object deletes adjoining multi-line block comments`() {
doTest( doTest(
"dgc", "dgc",
@ -614,7 +574,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes adjoining multi-line block comments 2`() { fun `test text object deletes adjoining multi-line block comments 2`() {
doTest( doTest(
"dgc", "dgc",
@ -635,7 +594,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object does not delete line with text and block comment`() { fun `test text object does not delete line with text and block comment`() {
doTest( doTest(
"dgc", "dgc",
@ -649,7 +607,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes JavaDoc comment`() { fun `test text object deletes JavaDoc comment`() {
doTest( doTest(
"dgc", "dgc",
@ -670,7 +627,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes JavaDoc comment from leading whitespace`() { fun `test text object deletes JavaDoc comment from leading whitespace`() {
doTest( doTest(
"dgc", "dgc",
@ -692,7 +648,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes JavaDoc comment and adjoining comments`() { fun `test text object deletes JavaDoc comment and adjoining comments`() {
doTest( doTest(
"dgc", "dgc",
@ -714,7 +669,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test text object deletes JavaDoc comment and adjoining comments separated by whitespace`() { fun `test text object deletes JavaDoc comment and adjoining comments separated by whitespace`() {
doTest( doTest(
"dgc", "dgc",
@ -739,7 +693,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test Commentary command comments current line`() { fun `test Commentary command comments current line`() {
doTest( doTest(
":Commentary<CR>", ":Commentary<CR>",
@ -757,7 +710,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test Commentary command comments simple line range`() { fun `test Commentary command comments simple line range`() {
doTest( doTest(
":2Commentary<CR>", ":2Commentary<CR>",
@ -775,7 +727,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test Commentary command comments line range`() { fun `test Commentary command comments line range`() {
doTest( doTest(
":1,3Commentary<CR>", ":1,3Commentary<CR>",
@ -804,7 +755,6 @@ class CommentaryExtensionTest : VimTestCase() {
"Note that Escape exits Visual mode, but leaves the caret where it is", "Note that Escape exits Visual mode, but leaves the caret where it is",
shouldBeFixed = true shouldBeFixed = true
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test Commentary command comments visual range`() { fun `test Commentary command comments visual range`() {
doTest( doTest(
"Vjj" + ":Commentary<CR>", "Vjj" + ":Commentary<CR>",
@ -822,7 +772,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test Commentary command comments search range`() { fun `test Commentary command comments search range`() {
doTest( doTest(
":g/value2/Commentary<CR>", ":g/value2/Commentary<CR>",
@ -844,7 +793,6 @@ class CommentaryExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test block comment falls back to line comment when not available`() { fun `test block comment falls back to line comment when not available`() {
doTest( doTest(
"gcw", "gcw",

View File

@ -23,8 +23,6 @@ import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.extension.exchange.VimExchangeExtension import com.maddyhome.idea.vim.extension.exchange.VimExchangeExtension
import com.maddyhome.idea.vim.helper.VimBehaviorDiffers import com.maddyhome.idea.vim.helper.VimBehaviorDiffers
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class VimExchangeExtensionTest : VimTestCase() { class VimExchangeExtensionTest : VimTestCase() {
@ -35,7 +33,6 @@ class VimExchangeExtensionTest : VimTestCase() {
} }
// |cx| // |cx|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange words left to right`() { fun `test exchange words left to right`() {
doTest( doTest(
listOf("cxe", "w", "cxe"), listOf("cxe", "w", "cxe"),
@ -47,7 +44,6 @@ class VimExchangeExtensionTest : VimTestCase() {
} }
// |cx| // |cx|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange words dot repeat`() { fun `test exchange words dot repeat`() {
doTest( doTest(
listOf("cxiw", "w", "."), listOf("cxiw", "w", "."),
@ -59,7 +55,6 @@ class VimExchangeExtensionTest : VimTestCase() {
} }
// |cx| // |cx|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange words right to left`() { fun `test exchange words right to left`() {
doTest( doTest(
listOf("cxe", "b", "cxe"), listOf("cxe", "b", "cxe"),
@ -71,7 +66,6 @@ class VimExchangeExtensionTest : VimTestCase() {
} }
// |cx| // |cx|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange words right to left with dot`() { fun `test exchange words right to left with dot`() {
doTest( doTest(
listOf("cxe", "b", "."), listOf("cxe", "b", "."),
@ -83,7 +77,6 @@ class VimExchangeExtensionTest : VimTestCase() {
} }
// |X| // |X|
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test visual exchange words left to right`() { fun `test visual exchange words left to right`() {
doTest( doTest(
listOf("veX", "w", "veX"), listOf("veX", "w", "veX"),
@ -99,7 +92,6 @@ class VimExchangeExtensionTest : VimTestCase() {
originalVimAfter = "The ${c}brown catch over the lazy dog", originalVimAfter = "The ${c}brown catch over the lazy dog",
shouldBeFixed = true shouldBeFixed = true
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test visual exchange words from inside`() { fun `test visual exchange words from inside`() {
doTest( doTest(
listOf("veX", "b", "v3e", "X"), listOf("veX", "b", "v3e", "X"),
@ -115,7 +107,6 @@ class VimExchangeExtensionTest : VimTestCase() {
originalVimAfter = "The brown ${c}catch over the lazy dog", originalVimAfter = "The brown ${c}catch over the lazy dog",
shouldBeFixed = true shouldBeFixed = true
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test visual exchange words from outside`() { fun `test visual exchange words from outside`() {
doTest( doTest(
listOf("v3e", "X", "w", "veX"), listOf("v3e", "X", "w", "veX"),
@ -136,7 +127,6 @@ class VimExchangeExtensionTest : VimTestCase() {
""", """,
shouldBeFixed = true shouldBeFixed = true
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange lines top down`() { fun `test exchange lines top down`() {
doTest( doTest(
listOf("cxx", "j", "cxx"), listOf("cxx", "j", "cxx"),
@ -165,7 +155,6 @@ class VimExchangeExtensionTest : VimTestCase() {
""", """,
shouldBeFixed = true shouldBeFixed = true
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange lines top down with dot`() { fun `test exchange lines top down with dot`() {
doTest( doTest(
listOf("cxx", "j", "."), listOf("cxx", "j", "."),
@ -192,7 +181,6 @@ class VimExchangeExtensionTest : VimTestCase() {
lazy dog lazy dog
""" """
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange to the line end`() { fun `test exchange to the line end`() {
doTest( doTest(
listOf("v$", "X", "jj^ve", "X"), listOf("v$", "X", "jj^ve", "X"),
@ -221,7 +209,6 @@ class VimExchangeExtensionTest : VimTestCase() {
""", """,
shouldBeFixed = true shouldBeFixed = true
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange visual lines`() { fun `test exchange visual lines`() {
doTest( doTest(
listOf("Vj", "X", "jj", "Vj", "X"), listOf("Vj", "X", "jj", "Vj", "X"),
@ -243,7 +230,6 @@ class VimExchangeExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test visual char highlighter`() { fun `test visual char highlighter`() {
val before = """ val before = """
The ${c}quick The ${c}quick
@ -260,7 +246,6 @@ class VimExchangeExtensionTest : VimTestCase() {
exitExchange() exitExchange()
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test visual line highdhitligthhter`() { fun `test visual line highdhitligthhter`() {
val before = """ val before = """
The ${c}quick The ${c}quick
@ -277,7 +262,6 @@ class VimExchangeExtensionTest : VimTestCase() {
exitExchange() exitExchange()
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test till the line end highlighter`() { fun `test till the line end highlighter`() {
val before = """ val before = """
The ${c}quick The ${c}quick
@ -292,7 +276,6 @@ class VimExchangeExtensionTest : VimTestCase() {
exitExchange() exitExchange()
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test pre line end highlighter`() { fun `test pre line end highlighter`() {
val before = """ val before = """
The ${c}quick The ${c}quick
@ -307,7 +290,6 @@ class VimExchangeExtensionTest : VimTestCase() {
exitExchange() exitExchange()
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test pre pre line end highlighter`() { fun `test pre pre line end highlighter`() {
val before = """ val before = """
The ${c}quick The ${c}quick
@ -322,7 +304,6 @@ class VimExchangeExtensionTest : VimTestCase() {
exitExchange() exitExchange()
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test to file end highlighter`() { fun `test to file end highlighter`() {
val before = """ val before = """
The quick The quick
@ -344,7 +325,6 @@ class VimExchangeExtensionTest : VimTestCase() {
exitExchange() exitExchange()
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test to file end with new line highlighter`() { fun `test to file end with new line highlighter`() {
val before = """ val before = """
The quick The quick
@ -367,7 +347,6 @@ class VimExchangeExtensionTest : VimTestCase() {
exitExchange() exitExchange()
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test back selection`() { fun `test back selection`() {
val before = """ val before = """
The quick The quick
@ -383,7 +362,6 @@ class VimExchangeExtensionTest : VimTestCase() {
exitExchange() exitExchange()
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test back selection exchange 1`() { fun `test back selection exchange 1`() {
doTest( doTest(
listOf("vb", "X", "bevb", "X"), listOf("vb", "X", "bevb", "X"),
@ -394,7 +372,6 @@ class VimExchangeExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test back selection exchange 2`() { fun `test back selection exchange 2`() {
doTest( doTest(
listOf("vb", "X", "wve", "X"), listOf("vb", "X", "wve", "X"),
@ -405,7 +382,6 @@ class VimExchangeExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test back selection exchange 3`() { fun `test back selection exchange 3`() {
doTest( doTest(
listOf("ve", "X", "wevb", "X"), listOf("ve", "X", "wevb", "X"),
@ -416,7 +392,6 @@ class VimExchangeExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test change with down motion`() { fun `test change with down motion`() {
val before = """ val before = """
The ${c}quick The ${c}quick
@ -436,7 +411,6 @@ class VimExchangeExtensionTest : VimTestCase() {
exitExchange() exitExchange()
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test cxx`() { fun `test cxx`() {
val before = """ val before = """
The ${c}quick The ${c}quick

View File

@ -25,8 +25,6 @@ import com.maddyhome.idea.vim.extension.exchange.VimExchangeExtension
import com.maddyhome.idea.vim.helper.VimBehaviorDiffers import com.maddyhome.idea.vim.helper.VimBehaviorDiffers
import com.maddyhome.idea.vim.options.OptionConstants import com.maddyhome.idea.vim.options.OptionConstants
import org.jetbrains.plugins.ideavim.OptionValueType import org.jetbrains.plugins.ideavim.OptionValueType
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimOptionTestCase import org.jetbrains.plugins.ideavim.VimOptionTestCase
import org.jetbrains.plugins.ideavim.VimOptionTestConfiguration import org.jetbrains.plugins.ideavim.VimOptionTestConfiguration
import org.jetbrains.plugins.ideavim.VimTestOption import org.jetbrains.plugins.ideavim.VimTestOption
@ -40,7 +38,6 @@ class VimExchangeWithClipboardTest : VimOptionTestCase(OptionConstants.clipboard
// |cx| // |cx|
@VimOptionTestConfiguration(VimTestOption(OptionConstants.clipboardName, OptionValueType.STRING, "unnamed")) @VimOptionTestConfiguration(VimTestOption(OptionConstants.clipboardName, OptionValueType.STRING, "unnamed"))
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange words left to right`() { fun `test exchange words left to right`() {
doTest( doTest(
listOf("cxe", "w", "cxe"), listOf("cxe", "w", "cxe"),
@ -53,7 +50,6 @@ class VimExchangeWithClipboardTest : VimOptionTestCase(OptionConstants.clipboard
// |cx| // |cx|
@VimOptionTestConfiguration(VimTestOption(OptionConstants.clipboardName, OptionValueType.STRING, "unnamed")) @VimOptionTestConfiguration(VimTestOption(OptionConstants.clipboardName, OptionValueType.STRING, "unnamed"))
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange words dot repeat`() { fun `test exchange words dot repeat`() {
doTest( doTest(
listOf("cxiw", "w", "."), listOf("cxiw", "w", "."),
@ -66,7 +62,6 @@ class VimExchangeWithClipboardTest : VimOptionTestCase(OptionConstants.clipboard
// |cx| // |cx|
@VimOptionTestConfiguration(VimTestOption(OptionConstants.clipboardName, OptionValueType.STRING, "unnamed")) @VimOptionTestConfiguration(VimTestOption(OptionConstants.clipboardName, OptionValueType.STRING, "unnamed"))
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange words right to left`() { fun `test exchange words right to left`() {
doTest( doTest(
listOf("cxe", "b", "cxe"), listOf("cxe", "b", "cxe"),
@ -79,7 +74,6 @@ class VimExchangeWithClipboardTest : VimOptionTestCase(OptionConstants.clipboard
// |cx| // |cx|
@VimOptionTestConfiguration(VimTestOption(OptionConstants.clipboardName, OptionValueType.STRING, "unnamed")) @VimOptionTestConfiguration(VimTestOption(OptionConstants.clipboardName, OptionValueType.STRING, "unnamed"))
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange words right to left with dot`() { fun `test exchange words right to left with dot`() {
doTest( doTest(
listOf("cxe", "b", "."), listOf("cxe", "b", "."),
@ -92,7 +86,6 @@ class VimExchangeWithClipboardTest : VimOptionTestCase(OptionConstants.clipboard
// |X| // |X|
@VimOptionTestConfiguration(VimTestOption(OptionConstants.clipboardName, OptionValueType.STRING, "unnamed")) @VimOptionTestConfiguration(VimTestOption(OptionConstants.clipboardName, OptionValueType.STRING, "unnamed"))
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test visual exchange words left to right`() { fun `test visual exchange words left to right`() {
doTest( doTest(
listOf("veX", "w", "veX"), listOf("veX", "w", "veX"),
@ -109,7 +102,6 @@ class VimExchangeWithClipboardTest : VimOptionTestCase(OptionConstants.clipboard
originalVimAfter = "The ${c}brown catch over the lazy dog", originalVimAfter = "The ${c}brown catch over the lazy dog",
shouldBeFixed = true shouldBeFixed = true
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test visual exchange words from inside`() { fun `test visual exchange words from inside`() {
doTest( doTest(
listOf("veX", "b", "v3e", "X"), listOf("veX", "b", "v3e", "X"),
@ -126,7 +118,6 @@ class VimExchangeWithClipboardTest : VimOptionTestCase(OptionConstants.clipboard
originalVimAfter = "The brown ${c}catch over the lazy dog", originalVimAfter = "The brown ${c}catch over the lazy dog",
shouldBeFixed = true shouldBeFixed = true
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test visual exchange words from outside`() { fun `test visual exchange words from outside`() {
doTest( doTest(
listOf("v3e", "X", "w", "veX"), listOf("v3e", "X", "w", "veX"),
@ -148,7 +139,6 @@ class VimExchangeWithClipboardTest : VimOptionTestCase(OptionConstants.clipboard
""", """,
shouldBeFixed = true shouldBeFixed = true
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange lines top down`() { fun `test exchange lines top down`() {
doTest( doTest(
listOf("cxx", "j", "cxx"), listOf("cxx", "j", "cxx"),
@ -178,7 +168,6 @@ class VimExchangeWithClipboardTest : VimOptionTestCase(OptionConstants.clipboard
""", """,
shouldBeFixed = true shouldBeFixed = true
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange lines top down with dot`() { fun `test exchange lines top down with dot`() {
doTest( doTest(
listOf("cxx", "j", "."), listOf("cxx", "j", "."),
@ -206,7 +195,6 @@ class VimExchangeWithClipboardTest : VimOptionTestCase(OptionConstants.clipboard
lazy dog lazy dog
""" """
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange to the line end`() { fun `test exchange to the line end`() {
doTest( doTest(
listOf("v$", "X", "jj^ve", "X"), listOf("v$", "X", "jj^ve", "X"),
@ -236,7 +224,6 @@ class VimExchangeWithClipboardTest : VimOptionTestCase(OptionConstants.clipboard
""", """,
shouldBeFixed = true shouldBeFixed = true
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test exchange visual lines`() { fun `test exchange visual lines`() {
doTest( doTest(
listOf("Vj", "X", "jj", "Vj", "X"), listOf("Vj", "X", "jj", "Vj", "X"),

View File

@ -23,8 +23,6 @@ import com.maddyhome.idea.vim.VimPlugin
import com.maddyhome.idea.vim.api.injector import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.extension.highlightedyank.DEFAULT_HIGHLIGHT_DURATION import com.maddyhome.idea.vim.extension.highlightedyank.DEFAULT_HIGHLIGHT_DURATION
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
import org.jetbrains.plugins.ideavim.assertHappened import org.jetbrains.plugins.ideavim.assertHappened
@ -34,7 +32,6 @@ class VimHighlightedYankTest : VimTestCase() {
enableExtensions("highlightedyank") enableExtensions("highlightedyank")
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test highlighting whole line when whole line is yanked`() { fun `test highlighting whole line when whole line is yanked`() {
doTest("yy", code, code, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("yy", code, code, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
@ -42,7 +39,6 @@ class VimHighlightedYankTest : VimTestCase() {
assertHighlighterRange(1, 40, getFirstHighlighter()) assertHighlighterRange(1, 40, getFirstHighlighter())
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test highlighting single word when single word is yanked`() { fun `test highlighting single word when single word is yanked`() {
doTest("yiw", code, code, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("yiw", code, code, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
@ -58,7 +54,6 @@ class VimHighlightedYankTest : VimTestCase() {
assertHighlighterRange(40, 59, getFirstHighlighter()) assertHighlighterRange(40, 59, getFirstHighlighter())
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test removing previous highlight when entering insert mode`() { fun `test removing previous highlight when entering insert mode`() {
doTest("yyi", code, code, VimStateMachine.Mode.INSERT, VimStateMachine.SubMode.NONE) doTest("yyi", code, code, VimStateMachine.Mode.INSERT, VimStateMachine.SubMode.NONE)
@ -110,7 +105,6 @@ class VimHighlightedYankTest : VimTestCase() {
} }
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test highlighting with multiple cursors`() { fun `test highlighting with multiple cursors`() {
doTest("yiw", codeWithMultipleCurors, codeWithMultipleCurors, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("yiw", codeWithMultipleCurors, codeWithMultipleCurors, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
@ -121,14 +115,12 @@ class VimHighlightedYankTest : VimTestCase() {
assertHighlighterRange(28, 31, highlighters[2]) assertHighlighterRange(28, 31, highlighters[2])
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test clearing all highlighters with multiple cursors`() { fun `test clearing all highlighters with multiple cursors`() {
doTest("yiwi", codeWithMultipleCurors, codeWithMultipleCurors, VimStateMachine.Mode.INSERT, VimStateMachine.SubMode.NONE) doTest("yiwi", codeWithMultipleCurors, codeWithMultipleCurors, VimStateMachine.Mode.INSERT, VimStateMachine.SubMode.NONE)
assertAllHighlightersCount(0) assertAllHighlightersCount(0)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test highlighting for a correct default amount of time`() { fun `test highlighting for a correct default amount of time`() {
doTest("yiw", code, code, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("yiw", code, code, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
@ -137,7 +129,6 @@ class VimHighlightedYankTest : VimTestCase() {
} }
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test highlighting for a correct user provided amount of time`() { fun `test highlighting for a correct user provided amount of time`() {
configureByJavaText(code) configureByJavaText(code)
typeText(injector.parser.parseKeys(":let g:highlightedyank_highlight_duration = \"1000\"<CR>")) typeText(injector.parser.parseKeys(":let g:highlightedyank_highlight_duration = \"1000\"<CR>"))

View File

@ -18,9 +18,6 @@
package org.jetbrains.plugins.ideavim.extension.matchit package org.jetbrains.plugins.ideavim.extension.matchit
import com.maddyhome.idea.vim.command.VimStateMachine
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class MatchitCMakeTest : VimTestCase() { class MatchitCMakeTest : VimTestCase() {
@ -30,7 +27,6 @@ class MatchitCMakeTest : VimTestCase() {
enableExtensions("matchit") enableExtensions("matchit")
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from if to else`() { fun `test jump from if to else`() {
doTest( doTest(
"%", "%",
@ -48,11 +44,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Non-linux system") message("Non-linux system")
endif() endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from else to endif`() { fun `test jump from else to endif`() {
doTest( doTest(
"%", "%",
@ -70,11 +65,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Non-linux system") message("Non-linux system")
${c}endif() ${c}endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endif to if`() { fun `test jump from endif to if`() {
doTest( doTest(
"%", "%",
@ -92,11 +86,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Non-linux system") message("Non-linux system")
endif() endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from if to elseif in if-else structure`() { fun `test jump from if to elseif in if-else structure`() {
doTest( doTest(
"%", "%",
@ -122,11 +115,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Unknown system") message("Unknown system")
endif() endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from elseif to elseif`() { fun `test jump from elseif to elseif`() {
doTest( doTest(
"%", "%",
@ -152,11 +144,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Unknown system") message("Unknown system")
endif() endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from elseif to else`() { fun `test jump from elseif to else`() {
doTest( doTest(
"%", "%",
@ -182,11 +173,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Unknown system") message("Unknown system")
endif() endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from else to endif in if-else structure`() { fun `test jump from else to endif in if-else structure`() {
doTest( doTest(
"%", "%",
@ -212,11 +202,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Unknown system") message("Unknown system")
${c}endif() ${c}endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endif to if in if-else structure`() { fun `test jump from endif to if in if-else structure`() {
doTest( doTest(
"%", "%",
@ -242,11 +231,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Unknown system") message("Unknown system")
endif() endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from foreach to endforeach`() { fun `test jump from foreach to endforeach`() {
doTest( doTest(
"%", "%",
@ -260,11 +248,10 @@ class MatchitCMakeTest : VimTestCase() {
message(STATUS "X=${"\${X}"}") message(STATUS "X=${"\${X}"}")
${c}endforeach() ${c}endforeach()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endforeach to foreach`() { fun `test jump from endforeach to foreach`() {
doTest( doTest(
"%", "%",
@ -278,11 +265,10 @@ class MatchitCMakeTest : VimTestCase() {
message(STATUS "X=${"\${X}"}") message(STATUS "X=${"\${X}"}")
endforeach() endforeach()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from foreach to break`() { fun `test jump from foreach to break`() {
doTest( doTest(
"%", "%",
@ -302,11 +288,10 @@ class MatchitCMakeTest : VimTestCase() {
message(STATUS "X=${"\${X}"}") message(STATUS "X=${"\${X}"}")
endforeach() endforeach()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from break to endforeach`() { fun `test jump from break to endforeach`() {
doTest( doTest(
"%", "%",
@ -326,11 +311,10 @@ class MatchitCMakeTest : VimTestCase() {
message(STATUS "X=${"\${X}"}") message(STATUS "X=${"\${X}"}")
${c}endforeach() ${c}endforeach()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from while to endwhile`() { fun `test jump from while to endwhile`() {
doTest( doTest(
"%", "%",
@ -344,11 +328,10 @@ class MatchitCMakeTest : VimTestCase() {
MATH(EXPR VAR "${"\${index}"}+1") MATH(EXPR VAR "${"\${index}"}+1")
${c}endwhile() ${c}endwhile()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endwhile to while`() { fun `test jump from endwhile to while`() {
doTest( doTest(
"%", "%",
@ -362,11 +345,10 @@ class MatchitCMakeTest : VimTestCase() {
MATH(EXPR VAR "${"\${index}"}+1") MATH(EXPR VAR "${"\${index}"}+1")
endwhile() endwhile()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from while to break`() { fun `test jump from while to break`() {
doTest( doTest(
"%", "%",
@ -386,11 +368,10 @@ class MatchitCMakeTest : VimTestCase() {
endif() endif()
endwhile() endwhile()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from break to endwhile`() { fun `test jump from break to endwhile`() {
doTest( doTest(
"%", "%",
@ -410,11 +391,10 @@ class MatchitCMakeTest : VimTestCase() {
endif() endif()
${c}endwhile() ${c}endwhile()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from function to endfunction`() { fun `test jump from function to endfunction`() {
doTest( doTest(
"%", "%",
@ -428,11 +408,10 @@ class MatchitCMakeTest : VimTestCase() {
bar(x y z) bar(x y z)
${c}endfunction() ${c}endfunction()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endfunction to function`() { fun `test jump from endfunction to function`() {
doTest( doTest(
"%", "%",
@ -446,11 +425,10 @@ class MatchitCMakeTest : VimTestCase() {
bar(x y z) bar(x y z)
endfunction() endfunction()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from macro to endmacro`() { fun `test jump from macro to endmacro`() {
doTest( doTest(
"%", "%",
@ -464,11 +442,10 @@ class MatchitCMakeTest : VimTestCase() {
message("arg = ${"\${arg}\""}") message("arg = ${"\${arg}\""}")
${c}endmacro() ${c}endmacro()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endmacro to macro`() { fun `test jump from endmacro to macro`() {
doTest( doTest(
"%", "%",
@ -482,13 +459,12 @@ class MatchitCMakeTest : VimTestCase() {
message("arg = ${"\${arg}\""}") message("arg = ${"\${arg}\""}")
endmacro() endmacro()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
// Tests for reverse motion // Tests for reverse motion
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from if to endif`() { fun `test reverse jump from if to endif`() {
doTest( doTest(
"g%", "g%",
@ -506,11 +482,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Non-linux system") message("Non-linux system")
${c}endif() ${c}endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from else to if`() { fun `test reverse jump from else to if`() {
doTest( doTest(
"g%", "g%",
@ -528,11 +503,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Non-linux system") message("Non-linux system")
endif() endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endif to else`() { fun `test reverse jump from endif to else`() {
doTest( doTest(
"g%", "g%",
@ -550,11 +524,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Non-linux system") message("Non-linux system")
endif() endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from if to endif in if-else block`() { fun `test reverse jump from if to endif in if-else block`() {
doTest( doTest(
"g%", "g%",
@ -580,11 +553,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Unknown system") message("Unknown system")
${c}endif() ${c}endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from elseif to if`() { fun `test reverse jump from elseif to if`() {
doTest( doTest(
"g%", "g%",
@ -610,11 +582,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Unknown system") message("Unknown system")
endif() endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from elseif in else block to elseif`() { fun `test reverse jump from elseif in else block to elseif`() {
doTest( doTest(
"g%", "g%",
@ -640,11 +611,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Unknown system") message("Unknown system")
endif() endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from else to elseif`() { fun `test reverse jump from else to elseif`() {
doTest( doTest(
"g%", "g%",
@ -670,11 +640,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Unknown system") message("Unknown system")
endif() endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endif to else in if-else block`() { fun `test reverse jump from endif to else in if-else block`() {
doTest( doTest(
"g%", "g%",
@ -700,11 +669,10 @@ class MatchitCMakeTest : VimTestCase() {
message("Unknown system") message("Unknown system")
endif() endif()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from foreach to endforeach`() { fun `test reverse jump from foreach to endforeach`() {
doTest( doTest(
"g%", "g%",
@ -718,11 +686,10 @@ class MatchitCMakeTest : VimTestCase() {
message(STATUS "X=${"\${X}"}") message(STATUS "X=${"\${X}"}")
${c}endforeach() ${c}endforeach()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endforeach to foreach`() { fun `test reverse jump from endforeach to foreach`() {
doTest( doTest(
"g%", "g%",
@ -736,11 +703,10 @@ class MatchitCMakeTest : VimTestCase() {
message(STATUS "X=${"\${X}"}") message(STATUS "X=${"\${X}"}")
endforeach() endforeach()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from foreach to endforeach over a break`() { fun `test reverse jump from foreach to endforeach over a break`() {
doTest( doTest(
"g%", "g%",
@ -760,11 +726,10 @@ class MatchitCMakeTest : VimTestCase() {
message(STATUS "X=${"\${X}"}") message(STATUS "X=${"\${X}"}")
${c}endforeach() ${c}endforeach()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endforeach to break`() { fun `test reverse jump from endforeach to break`() {
doTest( doTest(
"g%", "g%",
@ -784,11 +749,10 @@ class MatchitCMakeTest : VimTestCase() {
message(STATUS "X=${"\${X}"}") message(STATUS "X=${"\${X}"}")
endforeach() endforeach()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from break to foreach`() { fun `test reverse jump from break to foreach`() {
doTest( doTest(
"g%", "g%",
@ -808,11 +772,10 @@ class MatchitCMakeTest : VimTestCase() {
message(STATUS "X=${"\${X}"}") message(STATUS "X=${"\${X}"}")
endforeach() endforeach()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from while to endwhile`() { fun `test reverse jump from while to endwhile`() {
doTest( doTest(
"g%", "g%",
@ -826,11 +789,10 @@ class MatchitCMakeTest : VimTestCase() {
MATH(EXPR VAR "${"\${index}"}+1") MATH(EXPR VAR "${"\${index}"}+1")
${c}endwhile() ${c}endwhile()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endwhile to while`() { fun `test reverse jump from endwhile to while`() {
doTest( doTest(
"g%", "g%",
@ -844,11 +806,10 @@ class MatchitCMakeTest : VimTestCase() {
MATH(EXPR VAR "${"\${index}"}+1") MATH(EXPR VAR "${"\${index}"}+1")
endwhile() endwhile()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from while to endwhile over a break`() { fun `test reverse jump from while to endwhile over a break`() {
doTest( doTest(
"g%", "g%",
@ -868,11 +829,10 @@ class MatchitCMakeTest : VimTestCase() {
endif() endif()
${c}endwhile() ${c}endwhile()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endwhile to break`() { fun `test reverse jump from endwhile to break`() {
doTest( doTest(
"g%", "g%",
@ -892,11 +852,10 @@ class MatchitCMakeTest : VimTestCase() {
endif() endif()
endwhile() endwhile()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from break to while`() { fun `test reverse jump from break to while`() {
doTest( doTest(
"g%", "g%",
@ -916,11 +875,10 @@ class MatchitCMakeTest : VimTestCase() {
endif() endif()
endwhile() endwhile()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from function to endfunction`() { fun `test reverse jump from function to endfunction`() {
doTest( doTest(
"g%", "g%",
@ -934,11 +892,10 @@ class MatchitCMakeTest : VimTestCase() {
bar(x y z) bar(x y z)
${c}endfunction() ${c}endfunction()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endfunction to function`() { fun `test reverse jump from endfunction to function`() {
doTest( doTest(
"g%", "g%",
@ -952,11 +909,10 @@ class MatchitCMakeTest : VimTestCase() {
bar(x y z) bar(x y z)
endfunction() endfunction()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from macro to endmacro`() { fun `test reverse jump from macro to endmacro`() {
doTest( doTest(
"g%", "g%",
@ -970,11 +926,10 @@ class MatchitCMakeTest : VimTestCase() {
message("arg = ${"\${arg}\""}") message("arg = ${"\${arg}\""}")
${c}endmacro() ${c}endmacro()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endmacro to macro`() { fun `test reverse jump from endmacro to macro`() {
doTest( doTest(
"g%", "g%",
@ -988,7 +943,7 @@ class MatchitCMakeTest : VimTestCase() {
message("arg = ${"\${arg}\""}") message("arg = ${"\${arg}\""}")
endmacro() endmacro()
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "CMakeLists.txt" fileName = "CMakeLists.txt"
) )
} }
} }

View File

@ -18,9 +18,6 @@
package org.jetbrains.plugins.ideavim.extension.matchit package org.jetbrains.plugins.ideavim.extension.matchit
import com.maddyhome.idea.vim.command.VimStateMachine
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class MatchitCTest : VimTestCase() { class MatchitCTest : VimTestCase() {
@ -30,7 +27,6 @@ class MatchitCTest : VimTestCase() {
enableExtensions("matchit") enableExtensions("matchit")
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #if to #endif`() { fun `test jump from #if to #endif`() {
doTest( doTest(
"%", "%",
@ -42,11 +38,10 @@ class MatchitCTest : VimTestCase() {
#if !defined (VAL_1) #if !defined (VAL_1)
$c#endif $c#endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from whitespace before #if to #endif`() { fun `test jump from whitespace before #if to #endif`() {
doTest( doTest(
"%", "%",
@ -58,11 +53,10 @@ class MatchitCTest : VimTestCase() {
#if !defined (VAL_1) #if !defined (VAL_1)
$c#endif $c#endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #if to #elif`() { fun `test jump from #if to #elif`() {
doTest( doTest(
"%", "%",
@ -78,11 +72,10 @@ class MatchitCTest : VimTestCase() {
$c#elif !defined (VAL_2) $c#elif !defined (VAL_2)
#define VAL_2 2 #define VAL_2 2
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #if to #else`() { fun `test jump from #if to #else`() {
doTest( doTest(
"%", "%",
@ -98,11 +91,10 @@ class MatchitCTest : VimTestCase() {
$c#else $c#else
#define VAL_2 2 #define VAL_2 2
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #elif to #else`() { fun `test jump from #elif to #else`() {
doTest( doTest(
"%", "%",
@ -114,11 +106,10 @@ class MatchitCTest : VimTestCase() {
#elif !defined (VAL_2) #elif !defined (VAL_2)
$c#else $c#else
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from whitespace before #elif to #else`() { fun `test jump from whitespace before #elif to #else`() {
doTest( doTest(
"%", "%",
@ -130,11 +121,10 @@ class MatchitCTest : VimTestCase() {
#elif !defined (VAL_2) #elif !defined (VAL_2)
$c#else $c#else
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #else to #endif`() { fun `test jump from #else to #endif`() {
doTest( doTest(
"%", "%",
@ -146,11 +136,10 @@ class MatchitCTest : VimTestCase() {
#else #else
$c#endif $c#endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from whitespace before #else to #endif`() { fun `test jump from whitespace before #else to #endif`() {
doTest( doTest(
"%", "%",
@ -162,11 +151,10 @@ class MatchitCTest : VimTestCase() {
#else !defined (VAL_2) #else !defined (VAL_2)
$c#endif $c#endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #endif to #if`() { fun `test jump from #endif to #if`() {
doTest( doTest(
"%", "%",
@ -188,11 +176,10 @@ class MatchitCTest : VimTestCase() {
#define VAL_3 3 #define VAL_3 3
#endif #endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #ifdef to #endif`() { fun `test jump from #ifdef to #endif`() {
doTest( doTest(
"%", "%",
@ -204,11 +191,10 @@ class MatchitCTest : VimTestCase() {
#ifdef DEBUG #ifdef DEBUG
$c#endif $c#endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #ifdef to #elif`() { fun `test jump from #ifdef to #elif`() {
doTest( doTest(
"%", "%",
@ -220,11 +206,10 @@ class MatchitCTest : VimTestCase() {
#ifdef DEBUG #ifdef DEBUG
$c#elif PROD $c#elif PROD
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #ifdef to #else`() { fun `test jump from #ifdef to #else`() {
doTest( doTest(
"%", "%",
@ -236,11 +221,10 @@ class MatchitCTest : VimTestCase() {
#ifdef DEBUG #ifdef DEBUG
$c#else $c#else
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #endif to #ifdef`() { fun `test jump from #endif to #ifdef`() {
doTest( doTest(
"%", "%",
@ -252,11 +236,10 @@ class MatchitCTest : VimTestCase() {
$c#ifdef DEBUG $c#ifdef DEBUG
#endif #endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #ifndef to #endif`() { fun `test jump from #ifndef to #endif`() {
doTest( doTest(
"%", "%",
@ -268,11 +251,10 @@ class MatchitCTest : VimTestCase() {
#ifndef DEBUG #ifndef DEBUG
$c#endif $c#endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #ifndef to #elif`() { fun `test jump from #ifndef to #elif`() {
doTest( doTest(
"%", "%",
@ -284,11 +266,10 @@ class MatchitCTest : VimTestCase() {
#ifndef DEBUG #ifndef DEBUG
$c#elif PROD $c#elif PROD
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #ifndef to #else`() { fun `test jump from #ifndef to #else`() {
doTest( doTest(
"%", "%",
@ -300,11 +281,10 @@ class MatchitCTest : VimTestCase() {
#ifndef DEBUG #ifndef DEBUG
$c#else $c#else
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #endif to #ifndef`() { fun `test jump from #endif to #ifndef`() {
doTest( doTest(
"%", "%",
@ -316,11 +296,10 @@ class MatchitCTest : VimTestCase() {
$c#ifndef DEBUG $c#ifndef DEBUG
#endif #endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test don't jump from malformed #if`() { fun `test don't jump from malformed #if`() {
doTest( doTest(
"%", "%",
@ -332,11 +311,10 @@ class MatchitCTest : VimTestCase() {
$c#ifff DEBUG $c#ifff DEBUG
#endif #endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from #if with whitespace to #endif`() { fun `test jump from #if with whitespace to #endif`() {
doTest( doTest(
"%", "%",
@ -348,11 +326,10 @@ class MatchitCTest : VimTestCase() {
# if DEBUG # if DEBUG
$c#endif $c#endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from nested #if to #endif`() { fun `test jump from nested #if to #endif`() {
doTest( doTest(
"%", "%",
@ -368,7 +345,7 @@ class MatchitCTest : VimTestCase() {
$c# endif $c# endif
#endif #endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@ -376,7 +353,6 @@ class MatchitCTest : VimTestCase() {
* Tests for reverse g% motion * Tests for reverse g% motion
*/ */
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #if to #endif`() { fun `test reverse jump from #if to #endif`() {
doTest( doTest(
"g%", "g%",
@ -388,11 +364,10 @@ class MatchitCTest : VimTestCase() {
#if !defined (VAL_1) #if !defined (VAL_1)
$c#endif $c#endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from whitespace before #if to #endif`() { fun `test reverse jump from whitespace before #if to #endif`() {
doTest( doTest(
"g%", "g%",
@ -404,11 +379,10 @@ class MatchitCTest : VimTestCase() {
#if !defined (VAL_1) #if !defined (VAL_1)
$c#endif $c#endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #endif to #if with whitespace`() { fun `test reverse jump from #endif to #if with whitespace`() {
doTest( doTest(
"g%", "g%",
@ -420,11 +394,10 @@ class MatchitCTest : VimTestCase() {
$c# if DEBUG $c# if DEBUG
#endif #endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #endif to #else`() { fun `test reverse jump from #endif to #else`() {
doTest( doTest(
"g%", "g%",
@ -438,11 +411,10 @@ class MatchitCTest : VimTestCase() {
#define VAL_3 3 #define VAL_3 3
#endif #endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #else to #elif`() { fun `test reverse jump from #else to #elif`() {
doTest( doTest(
"g%", "g%",
@ -460,11 +432,10 @@ class MatchitCTest : VimTestCase() {
#define VAL_3 3 #define VAL_3 3
#endif #endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from whitespace before #else to #elif`() { fun `test reverse jump from whitespace before #else to #elif`() {
doTest( doTest(
"g%", "g%",
@ -482,11 +453,10 @@ class MatchitCTest : VimTestCase() {
#define VAL_3 3 #define VAL_3 3
#endif #endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #elif to #if`() { fun `test reverse jump from #elif to #if`() {
doTest( doTest(
"g%", "g%",
@ -502,11 +472,10 @@ class MatchitCTest : VimTestCase() {
#elif !defined (VAL_2) #elif !defined (VAL_2)
#define VAL_2 2 #define VAL_2 2
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #ifdef to #endif`() { fun `test reverse jump from #ifdef to #endif`() {
doTest( doTest(
"g%", "g%",
@ -518,11 +487,10 @@ class MatchitCTest : VimTestCase() {
#ifdef DEBUG #ifdef DEBUG
$c#endif $c#endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #endif to #ifdef`() { fun `test reverse jump from #endif to #ifdef`() {
doTest( doTest(
"g%", "g%",
@ -534,11 +502,10 @@ class MatchitCTest : VimTestCase() {
$c#ifdef DEBUG $c#ifdef DEBUG
#endif #endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #else to #ifdef`() { fun `test reverse jump from #else to #ifdef`() {
doTest( doTest(
"g%", "g%",
@ -550,11 +517,10 @@ class MatchitCTest : VimTestCase() {
$c#ifdef DEBUG $c#ifdef DEBUG
#else #else
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #elif to #ifdef`() { fun `test reverse jump from #elif to #ifdef`() {
doTest( doTest(
"g%", "g%",
@ -566,11 +532,10 @@ class MatchitCTest : VimTestCase() {
$c#ifdef DEBUG $c#ifdef DEBUG
#elif PROD #elif PROD
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #ifndef to #endif`() { fun `test reverse jump from #ifndef to #endif`() {
doTest( doTest(
"g%", "g%",
@ -582,11 +547,10 @@ class MatchitCTest : VimTestCase() {
#ifndef DEBUG #ifndef DEBUG
$c#endif $c#endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #endif to #ifndef`() { fun `test reverse jump from #endif to #ifndef`() {
doTest( doTest(
"g%", "g%",
@ -598,11 +562,10 @@ class MatchitCTest : VimTestCase() {
$c#ifndef DEBUG $c#ifndef DEBUG
#endif #endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #elif to #ifndef`() { fun `test reverse jump from #elif to #ifndef`() {
doTest( doTest(
"g%", "g%",
@ -614,11 +577,10 @@ class MatchitCTest : VimTestCase() {
$c#ifndef DEBUG $c#ifndef DEBUG
#elif PROD #elif PROD
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from #else to #ifndef`() { fun `test reverse jump from #else to #ifndef`() {
doTest( doTest(
"g%", "g%",
@ -630,7 +592,7 @@ class MatchitCTest : VimTestCase() {
$c#ifndef DEBUG $c#ifndef DEBUG
#else #else
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "main.c" fileName = "main.c"
) )
} }
} }

View File

@ -18,9 +18,6 @@
package org.jetbrains.plugins.ideavim.extension.matchit package org.jetbrains.plugins.ideavim.extension.matchit
import com.maddyhome.idea.vim.command.VimStateMachine
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class MatchitGNUMakeTest : VimTestCase() { class MatchitGNUMakeTest : VimTestCase() {
@ -30,7 +27,6 @@ class MatchitGNUMakeTest : VimTestCase() {
enableExtensions("matchit") enableExtensions("matchit")
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from define to endef`() { fun `test jump from define to endef`() {
doTest( doTest(
"%", "%",
@ -46,11 +42,10 @@ class MatchitGNUMakeTest : VimTestCase() {
second line second line
${c}endef ${c}endef
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endef to define`() { fun `test jump from endef to define`() {
doTest( doTest(
"%", "%",
@ -66,11 +61,10 @@ class MatchitGNUMakeTest : VimTestCase() {
second line second line
endef endef
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from ifdef to endif`() { fun `test jump from ifdef to endif`() {
doTest( doTest(
"%", "%",
@ -84,11 +78,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info defined) $(info defined)
${c}endif ${c}endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endif to ifdef`() { fun `test jump from endif to ifdef`() {
doTest( doTest(
"%", "%",
@ -102,11 +95,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info defined) $(info defined)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from ifndef to endif`() { fun `test jump from ifndef to endif`() {
doTest( doTest(
"%", "%",
@ -120,11 +112,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not defined) $(info not defined)
${c}endif ${c}endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endif to ifndef`() { fun `test jump from endif to ifndef`() {
doTest( doTest(
"%", "%",
@ -138,11 +129,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not defined) $(info not defined)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from ifeq to endif`() { fun `test jump from ifeq to endif`() {
doTest( doTest(
"%", "%",
@ -156,11 +146,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info empty) $(info empty)
${c}endif ${c}endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endif to ifeq`() { fun `test jump from endif to ifeq`() {
doTest( doTest(
"%", "%",
@ -174,11 +163,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info empty) $(info empty)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from ifneq to endif`() { fun `test jump from ifneq to endif`() {
doTest( doTest(
"%", "%",
@ -192,11 +180,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not empty) $(info not empty)
${c}endif ${c}endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endif to ifneq`() { fun `test jump from endif to ifneq`() {
doTest( doTest(
"%", "%",
@ -210,11 +197,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not empty) $(info not empty)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from ifneq to else`() { fun `test jump from ifneq to else`() {
doTest( doTest(
"%", "%",
@ -228,11 +214,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not empty) $(info not empty)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from ifeq to else in ifeq-else block`() { fun `test jump from ifeq to else in ifeq-else block`() {
doTest( doTest(
"%", "%",
@ -254,11 +239,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not x86 based) $(info not x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from else ifeq to else`() { fun `test jump from else ifeq to else`() {
doTest( doTest(
"%", "%",
@ -280,11 +264,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not x86 based) $(info not x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from ifeq in else block to else`() { fun `test jump from ifeq in else block to else`() {
doTest( doTest(
"%", "%",
@ -306,11 +289,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not x86 based) $(info not x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from else to endif in ifeq-else block`() { fun `test jump from else to endif in ifeq-else block`() {
doTest( doTest(
"%", "%",
@ -332,11 +314,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not x86 based) $(info not x86 based)
${c}endif ${c}endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endif to ifeq in ifeq-else block`() { fun `test jump from endif to ifeq in ifeq-else block`() {
doTest( doTest(
"%", "%",
@ -358,11 +339,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not x86 based) $(info not x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from ifneq to else in ifneq-else block`() { fun `test jump from ifneq to else in ifneq-else block`() {
doTest( doTest(
"%", "%",
@ -384,11 +364,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info x86 based) $(info x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from else ifneq to else`() { fun `test jump from else ifneq to else`() {
doTest( doTest(
"%", "%",
@ -410,11 +389,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info x86 based) $(info x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from ifneq in else block to else`() { fun `test jump from ifneq in else block to else`() {
doTest( doTest(
"%", "%",
@ -436,11 +414,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info x86 based) $(info x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from else to endif in ifneq-else block`() { fun `test jump from else to endif in ifneq-else block`() {
doTest( doTest(
"%", "%",
@ -462,11 +439,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info x86 based) $(info x86 based)
${c}endif ${c}endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from endif to ifneq in ifneq-else block`() { fun `test jump from endif to ifneq in ifneq-else block`() {
doTest( doTest(
"%", "%",
@ -488,13 +464,12 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info x86 based) $(info x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
// Reverse tests // Reverse tests
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from define to endef`() { fun `test reverse jump from define to endef`() {
doTest( doTest(
"g%", "g%",
@ -510,11 +485,10 @@ class MatchitGNUMakeTest : VimTestCase() {
second line second line
${c}endef ${c}endef
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endef to define`() { fun `test reverse jump from endef to define`() {
doTest( doTest(
"g%", "g%",
@ -530,11 +504,10 @@ class MatchitGNUMakeTest : VimTestCase() {
second line second line
endef endef
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from ifdef to endif`() { fun `test reverse jump from ifdef to endif`() {
doTest( doTest(
"g%", "g%",
@ -548,11 +521,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info defined) $(info defined)
${c}endif ${c}endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endif to ifdef`() { fun `test reverse jump from endif to ifdef`() {
doTest( doTest(
"g%", "g%",
@ -566,11 +538,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info defined) $(info defined)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from ifndef to endif`() { fun `test reverse jump from ifndef to endif`() {
doTest( doTest(
"g%", "g%",
@ -584,11 +555,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not defined) $(info not defined)
${c}endif ${c}endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endif to ifndef`() { fun `test reverse jump from endif to ifndef`() {
doTest( doTest(
"g%", "g%",
@ -602,11 +572,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not defined) $(info not defined)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from ifeq to endif`() { fun `test reverse jump from ifeq to endif`() {
doTest( doTest(
"g%", "g%",
@ -620,11 +589,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info empty) $(info empty)
${c}endif ${c}endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endif to ifeq`() { fun `test reverse jump from endif to ifeq`() {
doTest( doTest(
"g%", "g%",
@ -638,11 +606,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info empty) $(info empty)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from ifneq to endif`() { fun `test reverse jump from ifneq to endif`() {
doTest( doTest(
"g%", "g%",
@ -656,11 +623,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not empty) $(info not empty)
${c}endif ${c}endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endif to ifneq`() { fun `test reverse jump from endif to ifneq`() {
doTest( doTest(
"g%", "g%",
@ -674,11 +640,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not empty) $(info not empty)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from ifneq to else`() { fun `test reverse jump from ifneq to else`() {
doTest( doTest(
"g%", "g%",
@ -692,11 +657,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not empty) $(info not empty)
else else
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from ifeq to endif in ifeq-else block`() { fun `test reverse jump from ifeq to endif in ifeq-else block`() {
doTest( doTest(
"g%", "g%",
@ -718,11 +682,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not x86 based) $(info not x86 based)
${c}endif ${c}endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from else ifeq to ifeq`() { fun `test reverse jump from else ifeq to ifeq`() {
doTest( doTest(
"g%", "g%",
@ -744,11 +707,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not x86 based) $(info not x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from ifeq in else block to ifeq`() { fun `test reverse jump from ifeq in else block to ifeq`() {
doTest( doTest(
"g%", "g%",
@ -770,11 +732,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not x86 based) $(info not x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from else to else in ifeq-else block`() { fun `test reverse jump from else to else in ifeq-else block`() {
doTest( doTest(
"g%", "g%",
@ -796,11 +757,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not x86 based) $(info not x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endif to else in ifeq-else block`() { fun `test reverse jump from endif to else in ifeq-else block`() {
doTest( doTest(
"g%", "g%",
@ -822,11 +782,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info not x86 based) $(info not x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from ifneq to endif in ifneq-else block`() { fun `test reverse jump from ifneq to endif in ifneq-else block`() {
doTest( doTest(
"g%", "g%",
@ -848,11 +807,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info x86 based) $(info x86 based)
${c}endif ${c}endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from else ifneq to ifneq`() { fun `test reverse jump from else ifneq to ifneq`() {
doTest( doTest(
"g%", "g%",
@ -874,11 +832,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info x86 based) $(info x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from ifneq in else block to ifneq`() { fun `test reverse jump from ifneq in else block to ifneq`() {
doTest( doTest(
"g%", "g%",
@ -900,11 +857,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info x86 based) $(info x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from else to else in ifneq-else block`() { fun `test reverse jump from else to else in ifneq-else block`() {
doTest( doTest(
"g%", "g%",
@ -926,11 +882,10 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info x86 based) $(info x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from endif to else in ifneq-else block`() { fun `test reverse jump from endif to else in ifneq-else block`() {
doTest( doTest(
"g%", "g%",
@ -952,7 +907,7 @@ class MatchitGNUMakeTest : VimTestCase() {
$(info x86 based) $(info x86 based)
endif endif
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "Makefile" fileName = "Makefile"
) )
} }
} }

View File

@ -23,8 +23,6 @@ import com.intellij.ide.highlighter.JavaFileType
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.helper.VimBehaviorDiffers import com.maddyhome.idea.vim.helper.VimBehaviorDiffers
import com.maddyhome.idea.vim.helper.experimentalApi import com.maddyhome.idea.vim.helper.experimentalApi
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class MatchitGeneralTest : VimTestCase() { class MatchitGeneralTest : VimTestCase() {
@ -38,7 +36,6 @@ class MatchitGeneralTest : VimTestCase() {
* Tests to make sure we didn't break the default % motion * Tests to make sure we didn't break the default % motion
*/ */
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from Java comment start to end`() { fun `test jump from Java comment start to end`() {
doTest( doTest(
"%", "%",
@ -52,11 +49,10 @@ class MatchitGeneralTest : VimTestCase() {
* *
*$c/ *$c/
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, JavaFileType.INSTANCE fileType = JavaFileType.INSTANCE
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from Java comment end to start`() { fun `test jump from Java comment end to start`() {
doTest( doTest(
"%", "%",
@ -70,11 +66,10 @@ class MatchitGeneralTest : VimTestCase() {
* *
*/ */
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, JavaFileType.INSTANCE fileType = JavaFileType.INSTANCE
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test 25 percent jump`() { fun `test 25 percent jump`() {
doTest( doTest(
"25%", "25%",
@ -90,11 +85,10 @@ class MatchitGeneralTest : VimTestCase() {
int c; int c;
int d; int d;
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, HtmlFileType.INSTANCE fileType = HtmlFileType.INSTANCE
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from visual end of line to opening parenthesis`() { fun `test jump from visual end of line to opening parenthesis`() {
doTest( doTest(
"v$%", "v$%",
@ -104,7 +98,6 @@ class MatchitGeneralTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from visual end of line to opening parenthesis then back to closing`() { fun `test jump from visual end of line to opening parenthesis then back to closing`() {
doTest( doTest(
"v$%%", "v$%%",
@ -114,15 +107,13 @@ class MatchitGeneralTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete everything from opening parenthesis to closing parenthesis`() { fun `test delete everything from opening parenthesis to closing parenthesis`() {
doTest( doTest(
"d%", "d%",
"$c(x == 123)", "", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, HtmlFileType.INSTANCE "$c(x == 123)", "", fileType = HtmlFileType.INSTANCE
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete everything from closing parenthesis to opening parenthesis`() { fun `test delete everything from closing parenthesis to opening parenthesis`() {
doTest( doTest(
"d%", "d%",
@ -130,7 +121,6 @@ class MatchitGeneralTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete everything from opening curly brace to closing curly brace`() { fun `test delete everything from opening curly brace to closing curly brace`() {
doTest( doTest(
"d%", "d%",
@ -138,7 +128,6 @@ class MatchitGeneralTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete everything from closing curly brace to opening curly brace`() { fun `test delete everything from closing curly brace to opening curly brace`() {
doTest( doTest(
"d%", "d%",
@ -146,7 +135,6 @@ class MatchitGeneralTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete everything from opening square bracket to closing square bracket`() { fun `test delete everything from opening square bracket to closing square bracket`() {
doTest( doTest(
"d%", "d%",
@ -154,7 +142,6 @@ class MatchitGeneralTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete everything from closing square bracket to opening square bracket`() { fun `test delete everything from closing square bracket to opening square bracket`() {
doTest( doTest(
"d%", "d%",
@ -165,7 +152,6 @@ class MatchitGeneralTest : VimTestCase() {
/* /*
* Tests for visual mode and deleting on the new Matchit patterns. * Tests for visual mode and deleting on the new Matchit patterns.
*/ */
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from visual end of line to opening angle bracket`() { fun `test jump from visual end of line to opening angle bracket`() {
doTest( doTest(
"v$%", "v$%",
@ -175,7 +161,6 @@ class MatchitGeneralTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from visual end of line to start of for loop`() { fun `test jump from visual end of line to start of for loop`() {
doTest( doTest(
"v$%", "v$%",
@ -189,7 +174,7 @@ class MatchitGeneralTest : VimTestCase() {
puts n puts n
en${se}d en${se}d
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.VISUAL, VimStateMachine.SubMode.VISUAL_CHARACTER, "ruby.rb" VimStateMachine.Mode.VISUAL, VimStateMachine.SubMode.VISUAL_CHARACTER, fileName = "ruby.rb"
) )
} }
@ -203,7 +188,6 @@ class MatchitGeneralTest : VimTestCase() {
""", """,
description = "Our code changes the motion type to linewise, but it should not" description = "Our code changes the motion type to linewise, but it should not"
) )
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete from elseif to else`() { fun `test delete from elseif to else`() {
doTest( doTest(
"d%", "d%",
@ -232,11 +216,10 @@ class MatchitGeneralTest : VimTestCase() {
end end
""".trimIndent() """.trimIndent()
}, },
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "ruby.rb" fileName = "ruby.rb"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete from elseif to else 2`() { fun `test delete from elseif to else 2`() {
doTest( doTest(
"d%", "d%",
@ -256,11 +239,10 @@ class MatchitGeneralTest : VimTestCase() {
puts "Positive" puts "Positive"
end end
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "ruby.rb" fileName = "ruby.rb"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete from else to elsif with reverse motion`() { fun `test delete from else to elsif with reverse motion`() {
doTest( doTest(
"dg%", "dg%",
@ -280,11 +262,10 @@ class MatchitGeneralTest : VimTestCase() {
puts "Positive" puts "Positive"
end end
""".trimIndent(), """.trimIndent(),
VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "ruby.rb" fileName = "ruby.rb"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete from opening to closing div`() { fun `test delete from opening to closing div`() {
doTest( doTest(
"d%", "d%",
@ -293,22 +274,22 @@ class MatchitGeneralTest : VimTestCase() {
<img src="fff"> <img src="fff">
</div> </div>
""".trimIndent(), """.trimIndent(),
"$c<", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, HtmlFileType.INSTANCE "$c<",
fileType = HtmlFileType.INSTANCE
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete from opening angle bracket to closing angle bracket`() { fun `test delete from opening angle bracket to closing angle bracket`() {
doTest( doTest(
"d%", "d%",
""" """
$c<div></div> $c<div></div>
""".trimIndent(), """.trimIndent(),
"$c</div>", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, HtmlFileType.INSTANCE "$c</div>",
fileType = HtmlFileType.INSTANCE
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete whole function from def`() { fun `test delete whole function from def`() {
doTest( doTest(
"d%", "d%",
@ -317,11 +298,11 @@ class MatchitGeneralTest : VimTestCase() {
puts "hello" puts "hello"
end end
""".trimIndent(), """.trimIndent(),
"", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "ruby.rb" "",
fileName = "ruby.rb"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete whole function from def with reverse motion`() { fun `test delete whole function from def with reverse motion`() {
doTest( doTest(
"dg%", "dg%",
@ -330,11 +311,11 @@ class MatchitGeneralTest : VimTestCase() {
puts "hello" puts "hello"
end end
""".trimIndent(), """.trimIndent(),
"", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "ruby.rb" "",
fileName = "ruby.rb"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete whole function from end`() { fun `test delete whole function from end`() {
doTest( doTest(
"d%", "d%",
@ -343,11 +324,11 @@ class MatchitGeneralTest : VimTestCase() {
puts "hello" puts "hello"
en${c}d en${c}d
""".trimIndent(), """.trimIndent(),
"", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "ruby.rb" "",
fileName = "ruby.rb"
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test delete whole function from end with reverse motion`() { fun `test delete whole function from end with reverse motion`() {
doTest( doTest(
"dg%", "dg%",
@ -356,7 +337,8 @@ class MatchitGeneralTest : VimTestCase() {
puts "hello" puts "hello"
en${c}d en${c}d
""".trimIndent(), """.trimIndent(),
"", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE, "ruby.rb" "",
fileName = "ruby.rb"
) )
} }
} }

View File

@ -20,8 +20,6 @@ package org.jetbrains.plugins.ideavim.extension.matchit
import com.intellij.ide.highlighter.HtmlFileType import com.intellij.ide.highlighter.HtmlFileType
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class MatchitHtmlTest : VimTestCase() { class MatchitHtmlTest : VimTestCase() {
@ -31,7 +29,6 @@ class MatchitHtmlTest : VimTestCase() {
enableExtensions("matchit") enableExtensions("matchit")
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test basic jump to closing tag`() { fun `test basic jump to closing tag`() {
doTest( doTest(
"%", "%",
@ -45,7 +42,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test basic jump to opening tag`() { fun `test basic jump to opening tag`() {
doTest( doTest(
"%", "%",
@ -59,7 +55,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test multiline jump to closing tag`() { fun `test multiline jump to closing tag`() {
doTest( doTest(
"%", "%",
@ -77,7 +72,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test multiline jump to opening tag`() { fun `test multiline jump to opening tag`() {
doTest( doTest(
"%", "%",
@ -95,7 +89,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump to closing tag while ignoring nested tags`() { fun `test jump to closing tag while ignoring nested tags`() {
doTest( doTest(
"%", "%",
@ -117,7 +110,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump to closing tag while ignoring outer tags`() { fun `test jump to closing tag while ignoring outer tags`() {
doTest( doTest(
"%", "%",
@ -135,7 +127,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump to opening tag while ignoring nested tags`() { fun `test jump to opening tag while ignoring nested tags`() {
doTest( doTest(
"%", "%",
@ -157,7 +148,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump to opening tag while ignoring outer tags`() { fun `test jump to opening tag while ignoring outer tags`() {
doTest( doTest(
"%", "%",
@ -175,7 +165,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump to closing tag while in tag attributes`() { fun `test jump to closing tag while in tag attributes`() {
doTest( doTest(
"%", "%",
@ -189,7 +178,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test don't jump on standalone tags`() { fun `test don't jump on standalone tags`() {
doTest( doTest(
"%", "%",
@ -207,7 +195,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test don't jump on empty lines`() { fun `test don't jump on empty lines`() {
doTest( doTest(
"%", "%",
@ -225,7 +212,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump forwards to matching angle bracket on opening tag`() { fun `test jump forwards to matching angle bracket on opening tag`() {
doTest( doTest(
"%", "%",
@ -239,7 +225,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump forwards to matching angle bracket when on whitespace`() { fun `test jump forwards to matching angle bracket when on whitespace`() {
doTest( doTest(
"%", "%",
@ -249,7 +234,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump to last angle bracket when in tag body`() { fun `test jump to last angle bracket when in tag body`() {
doTest( doTest(
"%", "%",
@ -263,7 +247,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump forwards to matching angle bracket on closing tag`() { fun `test jump forwards to matching angle bracket on closing tag`() {
doTest( doTest(
"%", "%",
@ -277,7 +260,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump backwards to matching angle bracket on opening tag`() { fun `test jump backwards to matching angle bracket on opening tag`() {
doTest( doTest(
"%", "%",
@ -291,7 +273,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump backwards to matching angle bracket on closing tag`() { fun `test jump backwards to matching angle bracket on closing tag`() {
doTest( doTest(
"%", "%",
@ -305,7 +286,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump to matching square bracket inside tag`() { fun `test jump to matching square bracket inside tag`() {
doTest( doTest(
"%", "%",
@ -319,7 +299,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump to matching parenthesis inside tag`() { fun `test jump to matching parenthesis inside tag`() {
doTest( doTest(
"%", "%",
@ -333,7 +312,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump to matching curly brace in tag body`() { fun `test jump to matching curly brace in tag body`() {
doTest( doTest(
"%", "%",
@ -347,7 +325,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump to closing tag when inside brackets in opening tag`() { fun `test jump to closing tag when inside brackets in opening tag`() {
doTest( doTest(
"%", "%",
@ -361,7 +338,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump to opening curly brace when in tag body`() { fun `test jump to opening curly brace when in tag body`() {
doTest( doTest(
"%", "%",
@ -375,7 +351,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test don't jump on standalone tag with brackets on the same line`() { fun `test don't jump on standalone tag with brackets on the same line`() {
doTest( doTest(
"%", "%",
@ -389,7 +364,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from opening to closing tag while ignoring comments`() { fun `test jump from opening to closing tag while ignoring comments`() {
doTest( doTest(
"%", "%",
@ -419,7 +393,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from closing to opening tag while ignoring comments`() { fun `test jump from closing to opening tag while ignoring comments`() {
doTest( doTest(
"%", "%",
@ -449,7 +422,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from opening to closing tag inside a comment block`() { fun `test jump from opening to closing tag inside a comment block`() {
doTest( doTest(
"%", "%",
@ -467,7 +439,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from closing to opening tag inside a comment block`() { fun `test jump from closing to opening tag inside a comment block`() {
doTest( doTest(
"%", "%",
@ -485,7 +456,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from opening to closing angle bracket inside a comment block`() { fun `test jump from opening to closing angle bracket inside a comment block`() {
doTest( doTest(
"%", "%",
@ -503,7 +473,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from closing to opening angle bracket inside a comment block`() { fun `test jump from closing to opening angle bracket inside a comment block`() {
doTest( doTest(
"%", "%",
@ -521,7 +490,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from opening to closing angle bracket on a comment marker`() { fun `test jump from opening to closing angle bracket on a comment marker`() {
doTest( doTest(
"%", "%",
@ -539,7 +507,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from opening to closing angle bracket ignoring bracket in string`() { fun `test jump from opening to closing angle bracket ignoring bracket in string`() {
doTest( doTest(
"%", "%",
@ -557,7 +524,6 @@ class MatchitHtmlTest : VimTestCase() {
* g% motion tests. For HTML, g% should behave the same as %. * g% motion tests. For HTML, g% should behave the same as %.
*/ */
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to closing tag`() { fun `test reverse jump to closing tag`() {
doTest( doTest(
"g%", "g%",
@ -571,7 +537,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to opening tag`() { fun `test reverse jump to opening tag`() {
doTest( doTest(
"g%", "g%",
@ -585,7 +550,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to closing tag while ignoring nested tags`() { fun `test reverse jump to closing tag while ignoring nested tags`() {
doTest( doTest(
"g%", "g%",
@ -607,7 +571,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to closing tag while ignoring outer tags`() { fun `test reverse jump to closing tag while ignoring outer tags`() {
doTest( doTest(
"g%", "g%",
@ -625,7 +588,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to opening tag while ignoring nested tags`() { fun `test reverse jump to opening tag while ignoring nested tags`() {
doTest( doTest(
"g%", "g%",
@ -647,7 +609,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to opening tag while ignoring outer tags`() { fun `test reverse jump to opening tag while ignoring outer tags`() {
doTest( doTest(
"g%", "g%",
@ -665,7 +626,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to closing tag while in tag attributes`() { fun `test reverse jump to closing tag while in tag attributes`() {
doTest( doTest(
"g%", "g%",
@ -679,7 +639,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test don't reverse jump on standalone tags`() { fun `test don't reverse jump on standalone tags`() {
doTest( doTest(
"g%", "g%",
@ -697,7 +656,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test don't reverse jump on empty lines`() { fun `test don't reverse jump on empty lines`() {
doTest( doTest(
"g%", "g%",
@ -715,7 +673,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to closing angle bracket`() { fun `test reverse jump to closing angle bracket`() {
doTest( doTest(
"g%", "g%",
@ -729,7 +686,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to closing angle bracket when on whitespace`() { fun `test reverse jump to closing angle bracket when on whitespace`() {
doTest( doTest(
"g%", "g%",
@ -739,7 +695,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to last angle bracket when in tag body`() { fun `test reverse jump to last angle bracket when in tag body`() {
doTest( doTest(
"g%", "g%",
@ -753,7 +708,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to opening angle bracket`() { fun `test reverse jump to opening angle bracket`() {
doTest( doTest(
"g%", "g%",
@ -767,7 +721,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to matching square bracket inside tag`() { fun `test reverse jump to matching square bracket inside tag`() {
doTest( doTest(
"g%", "g%",
@ -781,7 +734,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to matching parenthesis inside tag`() { fun `test reverse jump to matching parenthesis inside tag`() {
doTest( doTest(
"g%", "g%",
@ -795,7 +747,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to matching curly brace in tag body`() { fun `test reverse jump to matching curly brace in tag body`() {
doTest( doTest(
"g%", "g%",
@ -809,7 +760,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to closing tag when inside brackets in opening tag`() { fun `test reverse jump to closing tag when inside brackets in opening tag`() {
doTest( doTest(
"g%", "g%",
@ -823,7 +773,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump to opening curly brace when in tag body`() { fun `test reverse jump to opening curly brace when in tag body`() {
doTest( doTest(
"g%", "g%",
@ -837,7 +786,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test don't reverse jump on standalone tag with brackets on the same line`() { fun `test don't reverse jump on standalone tag with brackets on the same line`() {
doTest( doTest(
"g%", "g%",
@ -851,7 +799,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from opening to closing tag while ignoring comments`() { fun `test reverse jump from opening to closing tag while ignoring comments`() {
doTest( doTest(
"g%", "g%",
@ -881,7 +828,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from closing to opening tag while ignoring comments`() { fun `test reverse jump from closing to opening tag while ignoring comments`() {
doTest( doTest(
"g%", "g%",
@ -911,7 +857,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from opening to closing tag inside a comment block`() { fun `test reverse jump from opening to closing tag inside a comment block`() {
doTest( doTest(
"g%", "g%",
@ -929,7 +874,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from closing to opening tag inside a comment block`() { fun `test reverse jump from closing to opening tag inside a comment block`() {
doTest( doTest(
"g%", "g%",
@ -947,7 +891,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from opening to closing angle bracket inside a comment block`() { fun `test reverse jump from opening to closing angle bracket inside a comment block`() {
doTest( doTest(
"g%", "g%",
@ -965,7 +908,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from closing to opening angle bracket inside a comment block`() { fun `test reverse jump from closing to opening angle bracket inside a comment block`() {
doTest( doTest(
"g%", "g%",
@ -983,7 +925,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from opening to closing angle bracket on a comment marker`() { fun `test reverse jump from opening to closing angle bracket on a comment marker`() {
doTest( doTest(
"g%", "g%",
@ -1001,7 +942,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test reverse jump from opening to closing angle bracket ignoring bracket in string`() { fun `test reverse jump from opening to closing angle bracket ignoring bracket in string`() {
doTest( doTest(
"g%", "g%",
@ -1015,7 +955,6 @@ class MatchitHtmlTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test jump from multiline opening tag to closing`() { fun `test jump from multiline opening tag to closing`() {
doTest( doTest(
"%", "%",

View File

@ -34,7 +34,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
enableExtensions("multiple-cursors") enableExtensions("multiple-cursors")
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testNextOccurrence() { fun testNextOccurrence() {
val before = """public class ChangeLineAction extends EditorAction { val before = """public class ChangeLineAction extends EditorAction {
public ChangeLineAction() { public ChangeLineAction() {
@ -74,7 +73,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testAllOccurrencesIterative() { fun testAllOccurrencesIterative() {
val before = """public class ChangeLineAction extends EditorAction { val before = """public class ChangeLineAction extends EditorAction {
public ChangeLineAction() { public ChangeLineAction() {
@ -114,7 +112,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testNotWholeOccurrence() { fun testNotWholeOccurrence() {
val before = """Int val before = """Int
|Integer |Integer
@ -139,7 +136,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testSelectSubstring() { fun testSelectSubstring() {
val before = """q${c}we val before = """q${c}we
|asdqweasd |asdqweasd
@ -158,7 +154,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testSelectSingleOccurrence() { fun testSelectSingleOccurrence() {
val before = """q${c}we val before = """q${c}we
|asd |asd
@ -181,7 +176,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testSelectionWithMultipleCarets() { fun testSelectionWithMultipleCarets() {
val before = """qwe val before = """qwe
|sdfgdfs${c}fdasfg |sdfgdfs${c}fdasfg
@ -195,7 +189,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(before) assertState(before)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testSelectAll() { fun testSelectAll() {
val before = """qwe val before = """qwe
|asd |asd
@ -216,7 +209,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testSelectAllNotWhole() { fun testSelectAllNotWhole() {
val before = """Int val before = """Int
|Integer |Integer
@ -240,7 +232,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testSelectAllSingleOccurrence() { fun testSelectAllSingleOccurrence() {
val before = """qwe val before = """qwe
|asd |asd
@ -267,7 +258,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
"additional cursors. IdeaVim has native support, so doesn't track if a selection is due to an additional cursor " + "additional cursors. IdeaVim has native support, so doesn't track if a selection is due to an additional cursor " +
"so IdeaVim will remove arbitrary selections, while vim-multiple-cursors do not." "so IdeaVim will remove arbitrary selections, while vim-multiple-cursors do not."
) )
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testRemoveSelectionVisualMode() { fun testRemoveSelectionVisualMode() {
val before = """q${s}we val before = """q${s}we
|dsgkldfjs ldfl gkjsdsl kj |dsgkldfjs ldfl gkjsdsl kj
@ -287,7 +277,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testRemoveSubSelection() { fun testRemoveSubSelection() {
val before = """Int val before = """Int
|kekInteger |kekInteger
@ -304,7 +293,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testRemoveOccurrence() { fun testRemoveOccurrence() {
val before = """private i${c}nt a = 0; val before = """private i${c}nt a = 0;
|private int b = 1; |private int b = 1;
@ -325,7 +313,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testSkipOccurrence() { fun testSkipOccurrence() {
val before = """pr${c}ivate int a = 0; val before = """pr${c}ivate int a = 0;
|private int b = 1; |private int b = 1;
@ -343,7 +330,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testSkipAndThenSelectAllOccurrences() { fun testSkipAndThenSelectAllOccurrences() {
val before = """pr${c}ivate int a = 0; val before = """pr${c}ivate int a = 0;
|private int b = 1; |private int b = 1;
@ -361,7 +347,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testSeveralActions() { fun testSeveralActions() {
val before = """public class Main { val before = """public class Main {
| public static void main(String[] args) { | public static void main(String[] args) {
@ -430,7 +415,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(afterInsert) assertState(afterInsert)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testSelectTwice() { fun testSelectTwice() {
val before = """qwe val before = """qwe
|asd |asd
@ -455,7 +439,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testSkipSelectionSubstring() { fun testSkipSelectionSubstring() {
val before = """qw${c}e val before = """qw${c}e
|asdqweasd |asdqweasd
@ -476,7 +459,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testSkipSelectionVisualMode() { fun testSkipSelectionVisualMode() {
val before = """q${s}we val before = """q${s}we
|dsgkldfjs ldfl gkjsdsl kj |dsgkldfjs ldfl gkjsdsl kj
@ -491,7 +473,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(before) assertState(before)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testAddSelectionVisualMode() { fun testAddSelectionVisualMode() {
val before = """jdfsg sdf${c}dfkgjhfkgkldfjsg val before = """jdfsg sdf${c}dfkgjhfkgkldfjsg
|dfkjghdfsgs |dfkjghdfsgs
@ -506,7 +487,6 @@ class VimMultipleCursorsExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun testNextOccurrenceCaseSensitive() { fun testNextOccurrenceCaseSensitive() {
val before = """@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN) val before = """@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun getCellType(${c}pos: VisualPosition): CellType { fun getCellType(${c}pos: VisualPosition): CellType {
@ -557,7 +537,6 @@ fun getCellType(${s}pos$se: VisualPosition): CellType {
doTest(keys, before, after, VimStateMachine.Mode.VISUAL, VimStateMachine.SubMode.VISUAL_CHARACTER) doTest(keys, before, after, VimStateMachine.Mode.VISUAL, VimStateMachine.SubMode.VISUAL_CHARACTER)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test pattern is always case sensitive`() { fun `test pattern is always case sensitive`() {
val before = """test ${c}Test tEst TeSt tEST Test test Test test""" val before = """test ${c}Test tEst TeSt tEST Test test Test test"""
configureByText(before) configureByText(before)
@ -568,7 +547,6 @@ fun getCellType(${s}pos$se: VisualPosition): CellType {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test ignores regex in search pattern`() { fun `test ignores regex in search pattern`() {
val before = "test ${s}t.*st${c}$se toast tallest t.*st" val before = "test ${s}t.*st${c}$se toast tallest t.*st"
val editor = configureByText(before) val editor = configureByText(before)

View File

@ -19,8 +19,6 @@
package org.jetbrains.plugins.ideavim.extension.paragraphmotion package org.jetbrains.plugins.ideavim.extension.paragraphmotion
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
class ParagraphMotionTest : VimTestCase() { class ParagraphMotionTest : VimTestCase() {
@ -30,7 +28,6 @@ class ParagraphMotionTest : VimTestCase() {
enableExtensions("vim-paragraph-motion") enableExtensions("vim-paragraph-motion")
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test paragraph next without whitespace`() { fun `test paragraph next without whitespace`() {
val before = """I found it in a legendary land val before = """I found it in a legendary land
|${c}all rocks and lavender and tufted grass, |${c}all rocks and lavender and tufted grass,
@ -45,7 +42,6 @@ class ParagraphMotionTest : VimTestCase() {
doTest("}", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("}", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test paragraph next with whitespace`() { fun `test paragraph next with whitespace`() {
val before = """I found it in a legendary land val before = """I found it in a legendary land
|${c}all rocks and lavender and tufted grass, |${c}all rocks and lavender and tufted grass,
@ -60,7 +56,6 @@ class ParagraphMotionTest : VimTestCase() {
doTest("}", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("}", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test paragraph next with whitespace visual`() { fun `test paragraph next with whitespace visual`() {
val before = """I found it in a legendary land val before = """I found it in a legendary land
|${c}all rocks and lavender and tufted grass, |${c}all rocks and lavender and tufted grass,
@ -75,7 +70,6 @@ class ParagraphMotionTest : VimTestCase() {
doTest("v}", before, after, VimStateMachine.Mode.VISUAL, VimStateMachine.SubMode.VISUAL_CHARACTER) doTest("v}", before, after, VimStateMachine.Mode.VISUAL, VimStateMachine.SubMode.VISUAL_CHARACTER)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test paragraph next with whitespace delete`() { fun `test paragraph next with whitespace delete`() {
val before = """I found it in a legendary land val before = """I found it in a legendary land
|${c}all rocks and lavender and tufted grass, |${c}all rocks and lavender and tufted grass,
@ -90,7 +84,6 @@ class ParagraphMotionTest : VimTestCase() {
doTest("d}", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("d}", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test paragraph prev without whitespace`() { fun `test paragraph prev without whitespace`() {
val before = """I found it in a legendary land val before = """I found it in a legendary land
|all rocks and lavender and tufted grass, |all rocks and lavender and tufted grass,
@ -105,7 +98,6 @@ class ParagraphMotionTest : VimTestCase() {
doTest("{", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("{", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test paragraph prev with whitespace`() { fun `test paragraph prev with whitespace`() {
val before = """I found it in a legendary land val before = """I found it in a legendary land
|all rocks and lavender and tufted grass, |all rocks and lavender and tufted grass,
@ -120,7 +112,6 @@ class ParagraphMotionTest : VimTestCase() {
doTest("{", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("{", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test paragraph prev with whitespace visual`() { fun `test paragraph prev with whitespace visual`() {
val before = """I found it in a legendary land val before = """I found it in a legendary land
|all rocks and lavender and tufted grass, |all rocks and lavender and tufted grass,
@ -135,7 +126,6 @@ class ParagraphMotionTest : VimTestCase() {
doTest("v{", before, after, VimStateMachine.Mode.VISUAL, VimStateMachine.SubMode.VISUAL_CHARACTER) doTest("v{", before, after, VimStateMachine.Mode.VISUAL, VimStateMachine.SubMode.VISUAL_CHARACTER)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test paragraph prev with whitespace delete`() { fun `test paragraph prev with whitespace delete`() {
val before = """I found it in a legendary land val before = """I found it in a legendary land
|all rocks and lavender and tufted grass, |all rocks and lavender and tufted grass,

View File

@ -25,8 +25,6 @@ import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.helper.VimBehaviorDiffers import com.maddyhome.idea.vim.helper.VimBehaviorDiffers
import com.maddyhome.idea.vim.newapi.vim import com.maddyhome.idea.vim.newapi.vim
import com.maddyhome.idea.vim.register.RegisterConstants.UNNAMED_REGISTER import com.maddyhome.idea.vim.register.RegisterConstants.UNNAMED_REGISTER
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
import org.jetbrains.plugins.ideavim.rangeOf import org.jetbrains.plugins.ideavim.rangeOf
@ -37,7 +35,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
enableExtensions("ReplaceWithRegister") enableExtensions("ReplaceWithRegister")
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test replace with empty register`() { fun `test replace with empty register`() {
val text = "one ${c}two three" val text = "one ${c}two three"
VimPlugin.getRegister().resetRegisters() VimPlugin.getRegister().resetRegisters()
@ -47,7 +44,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertState(text) assertState(text)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test simple replace`() { fun `test simple replace`() {
val text = "one ${c}two three" val text = "one ${c}two three"
@ -58,7 +54,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertEquals("one", VimPlugin.getRegister().lastRegister?.text) assertEquals("one", VimPlugin.getRegister().lastRegister?.text)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test empty text`() { fun `test empty text`() {
val text = "" val text = ""
@ -68,7 +63,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertState("on${c}e") assertState("on${c}e")
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test replace with empty text`() { fun `test replace with empty text`() {
val text = "${c}one" val text = "${c}one"
@ -78,7 +72,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertState(c) assertState(c)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test replace use different register`() { fun `test replace use different register`() {
val text = "one ${c}two three four" val text = "one ${c}two three four"
@ -91,7 +84,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertEquals("two", VimPlugin.getRegister().lastRegister?.text) assertEquals("two", VimPlugin.getRegister().lastRegister?.text)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test replace use clipboard register`() { fun `test replace use clipboard register`() {
val text = "one ${c}two three four" val text = "one ${c}two three four"
@ -101,7 +93,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertEquals("two", VimPlugin.getRegister().lastRegister?.text) assertEquals("two", VimPlugin.getRegister().lastRegister?.text)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test replace use wrong register`() { fun `test replace use wrong register`() {
val text = "one ${c}two three" val text = "one ${c}two three"
@ -110,7 +101,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertState(text) assertState(text)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test replace with line`() { fun `test replace with line`() {
val text = """ val text = """
|I fou${c}nd it in a legendary land| |I fou${c}nd it in a legendary land|
@ -127,7 +117,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test replace with line with clipboard register`() { fun `test replace with line with clipboard register`() {
val text = """ val text = """
|I fou${c}nd it in a legendary land| |I fou${c}nd it in a legendary land|
@ -144,7 +133,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test replace block selection`() { fun `test replace block selection`() {
val text = """ val text = """
${c}one two three ${c}one two three
@ -165,7 +153,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test replace with number`() { fun `test replace with number`() {
val text = "one ${c}two three four" val text = "one ${c}two three four"
@ -177,7 +164,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
} }
@VimBehaviorDiffers("one on${c}e on${c}e four") @VimBehaviorDiffers("one on${c}e on${c}e four")
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test replace with multiple carets`() { fun `test replace with multiple carets`() {
val text = "one ${c}two ${c}three four" val text = "one ${c}two ${c}three four"
@ -188,7 +174,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertEquals("one", VimPlugin.getRegister().lastRegister?.text) assertEquals("one", VimPlugin.getRegister().lastRegister?.text)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test dot repeat`() { fun `test dot repeat`() {
val text = "one ${c}two three four" val text = "one ${c}two three four"
@ -201,7 +186,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
// --------------------------------------- grr -------------------------- // --------------------------------------- grr --------------------------
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test line replace`() { fun `test line replace`() {
val text = """ val text = """
I found it in ${c}a legendary land I found it in ${c}a legendary land
@ -224,7 +208,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertEquals("legendary", VimPlugin.getRegister().lastRegister?.text) assertEquals("legendary", VimPlugin.getRegister().lastRegister?.text)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test line replace with line`() { fun `test line replace with line`() {
val text = """ val text = """
I found it in ${c}a legendary land I found it in ${c}a legendary land
@ -245,7 +228,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test line replace with line empty line`() { fun `test line replace with line empty line`() {
val text = """ val text = """
I found it in ${c}a legendary land I found it in ${c}a legendary land
@ -269,7 +251,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
} }
@VimBehaviorDiffers(description = "Where is the new line comes from?...") @VimBehaviorDiffers(description = "Where is the new line comes from?...")
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test line replace with block`() { fun `test line replace with block`() {
val text = """ val text = """
${c}one two three ${c}one two three
@ -300,7 +281,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
hard by the torrent of a mountain pass. hard by the torrent of a mountain pass.
""" """
) )
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test line with number`() { fun `test line with number`() {
val text = """ val text = """
I found it in ${c}a legendary land I found it in ${c}a legendary land
@ -321,7 +301,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test line dot repeat`() { fun `test line dot repeat`() {
val text = """ val text = """
I found it in ${c}a legendary land I found it in ${c}a legendary land
@ -350,7 +329,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
${c}where it was settled on some sodden sand ${c}where it was settled on some sodden sand
""" """
) )
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test line multicaret`() { fun `test line multicaret`() {
val text = """ val text = """
I found it in ${c}a legendary land I found it in ${c}a legendary land
@ -374,7 +352,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
// ------------------------------------- gr + visual ---------------------- // ------------------------------------- gr + visual ----------------------
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test visual replace`() { fun `test visual replace`() {
val text = """ val text = """
I ${c}found it in a legendary land I ${c}found it in a legendary land
@ -398,7 +375,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertMode(VimStateMachine.Mode.COMMAND) assertMode(VimStateMachine.Mode.COMMAND)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test visual replace with line`() { fun `test visual replace with line`() {
val text = """ val text = """
|I fo${c}und it in a legendary land| |I fo${c}und it in a legendary land|
@ -420,7 +396,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertMode(VimStateMachine.Mode.COMMAND) assertMode(VimStateMachine.Mode.COMMAND)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test visual replace with two lines`() { fun `test visual replace with two lines`() {
val text = """ val text = """
|I found it in ${c}a legendary land| |I found it in ${c}a legendary land|
@ -443,7 +418,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertMode(VimStateMachine.Mode.COMMAND) assertMode(VimStateMachine.Mode.COMMAND)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test visual line replace`() { fun `test visual line replace`() {
val text = """ val text = """
I fo${c}und it in a legendary land I fo${c}und it in a legendary land
@ -466,7 +440,6 @@ class ReplaceWithRegisterTest : VimTestCase() {
assertMode(VimStateMachine.Mode.COMMAND) assertMode(VimStateMachine.Mode.COMMAND)
} }
@TestWithoutNeovim(reason = SkipNeovimReason.PLUGIN)
fun `test visual line replace with line`() { fun `test visual line replace with line`() {
val text = """ val text = """
I fo${c}und it in a legendary land I fo${c}und it in a legendary land

View File

@ -23,8 +23,6 @@ package org.jetbrains.plugins.ideavim.extension.surround
import com.maddyhome.idea.vim.api.injector import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.VimStateMachine import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.helper.VimBehaviorDiffers import com.maddyhome.idea.vim.helper.VimBehaviorDiffers
import org.jetbrains.plugins.ideavim.SkipNeovimReason
import org.jetbrains.plugins.ideavim.TestWithoutNeovim
import org.jetbrains.plugins.ideavim.VimTestCase import org.jetbrains.plugins.ideavim.VimTestCase
/** /**
@ -39,7 +37,6 @@ class VimSurroundExtensionTest : VimTestCase() {
/* surround */ /* surround */
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundWordParens() { fun testSurroundWordParens() {
val before = "if ${c}condition {\n" + "}\n" val before = "if ${c}condition {\n" + "}\n"
val after = "if ${c}(condition) {\n" + "}\n" val after = "if ${c}(condition) {\n" + "}\n"
@ -49,7 +46,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest("yse(", before, "if ( condition ) {\n" + "}\n", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("yse(", before, "if ( condition ) {\n" + "}\n", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundWORDBlock() { fun testSurroundWORDBlock() {
val before = "if (condition) ${c}return;\n" val before = "if (condition) ${c}return;\n"
val after = "if (condition) {return;}\n" val after = "if (condition) {return;}\n"
@ -59,7 +55,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest("ysE{", before, "if (condition) { return; }\n", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("ysE{", before, "if (condition) { return; }\n", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundWordArray() { fun testSurroundWordArray() {
val before = "int foo = bar${c}index;" val before = "int foo = bar${c}index;"
val after = "int foo = bar[index];" val after = "int foo = bar[index];"
@ -69,7 +64,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest("yse[", before, "int foo = bar[ index ];", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("yse[", before, "int foo = bar[ index ];", VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundWordAngle() { fun testSurroundWordAngle() {
val before = "foo = new Bar${c}Baz();" val before = "foo = new Bar${c}Baz();"
val after = "foo = new Bar<Baz>();" val after = "foo = new Bar<Baz>();"
@ -78,7 +72,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest("yse>", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("yse>", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundQuotes() { fun testSurroundQuotes() {
val before = "foo = ${c}new Bar.Baz;" val before = "foo = ${c}new Bar.Baz;"
val after = "foo = \"new Bar.Baz\";" val after = "foo = \"new Bar.Baz\";"
@ -87,7 +80,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest("ys4w\"", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("ys4w\"", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundTag() { fun testSurroundTag() {
configureByText("Hello ${c}World!\n") configureByText("Hello ${c}World!\n")
typeText(injector.parser.parseKeys("ysiw<em>")) typeText(injector.parser.parseKeys("ysiw<em>"))
@ -95,7 +87,6 @@ class VimSurroundExtensionTest : VimTestCase() {
} }
// VIM-1569 // VIM-1569
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundTagWithAttributes() { fun testSurroundTagWithAttributes() {
configureByText("Hello ${c}World!") configureByText("Hello ${c}World!")
typeText(injector.parser.parseKeys("ysiw<span class=\"important\" data-foo=\"bar\">")) typeText(injector.parser.parseKeys("ysiw<span class=\"important\" data-foo=\"bar\">"))
@ -103,28 +94,24 @@ class VimSurroundExtensionTest : VimTestCase() {
} }
// VIM-1569 // VIM-1569
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurraungTagAsInIssue() { fun testSurraungTagAsInIssue() {
configureByText("<p>${c}Hello</p>") configureByText("<p>${c}Hello</p>")
typeText(injector.parser.parseKeys("VS<div class = \"container\">")) typeText(injector.parser.parseKeys("VS<div class = \"container\">"))
assertState("<div class = \"container\"><p>Hello</p></div>") assertState("<div class = \"container\"><p>Hello</p></div>")
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundCustomElement() { fun testSurroundCustomElement() {
configureByText("${c}Click me!") configureByText("${c}Click me!")
typeText(injector.parser.parseKeys("VS<custom-button>")) typeText(injector.parser.parseKeys("VS<custom-button>"))
assertState("<custom-button>Click me!</custom-button>") assertState("<custom-button>Click me!</custom-button>")
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundFunctionName() { fun testSurroundFunctionName() {
configureByText("foo = b${c}ar") configureByText("foo = b${c}ar")
typeText(injector.parser.parseKeys("ysiwfbaz")) typeText(injector.parser.parseKeys("ysiwfbaz"))
assertState("foo = ${c}baz(bar)") assertState("foo = ${c}baz(bar)")
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundFunctionNameDoesNothingIfInputIsEmpty() { fun testSurroundFunctionNameDoesNothingIfInputIsEmpty() {
// The cursor does not move. This is different from Vim // The cursor does not move. This is different from Vim
// where the cursor moves to the beginning of the text object. // where the cursor moves to the beginning of the text object.
@ -133,21 +120,18 @@ class VimSurroundExtensionTest : VimTestCase() {
assertState("foo = b${c}ar") assertState("foo = b${c}ar")
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundFunctionNameWithInnerSpacing() { fun testSurroundFunctionNameWithInnerSpacing() {
configureByText("foo = b${c}ar") configureByText("foo = b${c}ar")
typeText(injector.parser.parseKeys("ysiwFbaz")) typeText(injector.parser.parseKeys("ysiwFbaz"))
assertState("foo = ${c}baz( bar )") assertState("foo = ${c}baz( bar )")
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundSpace() { fun testSurroundSpace() {
configureByText("foo(b${c}ar)") configureByText("foo(b${c}ar)")
typeText(injector.parser.parseKeys("csbs")) typeText(injector.parser.parseKeys("csbs"))
assertState("foo${c} bar") assertState("foo${c} bar")
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testRepeatSurround() { fun testRepeatSurround() {
val before = "if ${c}condition {\n}\n" val before = "if ${c}condition {\n}\n"
val after = "if ((condition)) {\n}\n" val after = "if ((condition)) {\n}\n"
@ -155,7 +139,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest(listOf("ysiw)", "l", "."), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(listOf("ysiw)", "l", "."), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testRepeatSurroundDouble() { fun testRepeatSurroundDouble() {
val before = "if ${c}condition {\n}\n" val before = "if ${c}condition {\n}\n"
val after = "if (((condition))) {\n}\n" val after = "if (((condition))) {\n}\n"
@ -163,7 +146,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest(listOf("ysiw)", "l", ".", "l", "."), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(listOf("ysiw)", "l", ".", "l", "."), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testRepeatDifferentChanges() { fun testRepeatDifferentChanges() {
val before = """ val before = """
if "${c}condition" { } if "${c}condition" { }
@ -177,7 +159,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest(listOf("ysiw)", "cs\"'", "j", "."), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(listOf("ysiw)", "cs\"'", "j", "."), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testRepeatWrapWithFunction() { fun testRepeatWrapWithFunction() {
val before = """ val before = """
if "${c}condition" { } if "${c}condition" { }
@ -197,7 +178,6 @@ class VimSurroundExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testRepeatWrapWithTag() { fun testRepeatWrapWithTag() {
val before = """ val before = """
${c}abc ${c}abc
@ -213,7 +193,6 @@ class VimSurroundExtensionTest : VimTestCase() {
/* visual surround */ /* visual surround */
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testVisualSurroundWordParens() { fun testVisualSurroundWordParens() {
val before = "if ${c}condition {\n" + "}\n" val before = "if ${c}condition {\n" + "}\n"
val after = "if ${c}(condition) {\n" + "}\n" val after = "if ${c}(condition) {\n" + "}\n"
@ -231,7 +210,6 @@ class VimSurroundExtensionTest : VimTestCase() {
/* Delete surroundings */ /* Delete surroundings */
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testDeleteSurroundingParens() { fun testDeleteSurroundingParens() {
val before = "if (${c}condition) {\n" + "}\n" val before = "if (${c}condition) {\n" + "}\n"
val after = "if condition {\n" + "}\n" val after = "if condition {\n" + "}\n"
@ -241,7 +219,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest("ds)", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("ds)", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testDeleteSurroundingQuote() { fun testDeleteSurroundingQuote() {
val before = "if (\"${c}foo\".equals(foo)) {\n" + "}\n" val before = "if (\"${c}foo\".equals(foo)) {\n" + "}\n"
val after = "if (${c}foo.equals(foo)) {\n" + "}\n" val after = "if (${c}foo.equals(foo)) {\n" + "}\n"
@ -249,7 +226,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest("ds\"", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("ds\"", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testDeleteSurroundingBlock() { fun testDeleteSurroundingBlock() {
val before = "if (condition) {${c}return;}\n" val before = "if (condition) {${c}return;}\n"
val after = "if (condition) return;\n" val after = "if (condition) return;\n"
@ -259,7 +235,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest("ds{", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("ds{", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testDeleteSurroundingArray() { fun testDeleteSurroundingArray() {
val before = "int foo = bar[${c}index];" val before = "int foo = bar[${c}index];"
val after = "int foo = barindex;" val after = "int foo = barindex;"
@ -269,7 +244,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest("ds[", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("ds[", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testDeleteSurroundingAngle() { fun testDeleteSurroundingAngle() {
val before = "foo = new Bar<${c}Baz>();" val before = "foo = new Bar<${c}Baz>();"
val after = "foo = new BarBaz();" val after = "foo = new BarBaz();"
@ -279,7 +253,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest("ds<", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("ds<", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testDeleteSurroundingTag() { fun testDeleteSurroundingTag() {
val before = "<div><p>${c}Foo</p></div>" val before = "<div><p>${c}Foo</p></div>"
val after = "<div>${c}Foo</div>" val after = "<div>${c}Foo</div>"
@ -288,7 +261,6 @@ class VimSurroundExtensionTest : VimTestCase() {
} }
// VIM-1085 // VIM-1085
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testDeleteSurroundingParamsAtLineEnd() { fun testDeleteSurroundingParamsAtLineEnd() {
val before = "Foo\n" + "Seq(\"-${c}Yrangepos\")\n" val before = "Foo\n" + "Seq(\"-${c}Yrangepos\")\n"
val after = "Foo\n" + "Seq\"-Yrangepos\"\n" val after = "Foo\n" + "Seq\"-Yrangepos\"\n"
@ -297,7 +269,6 @@ class VimSurroundExtensionTest : VimTestCase() {
} }
// VIM-1085 // VIM-1085
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testDeleteMultiLineSurroundingParamsAtLineEnd() { fun testDeleteMultiLineSurroundingParamsAtLineEnd() {
val before = "Foo\n" + val before = "Foo\n" +
"Bar\n" + "Bar\n" +
@ -314,7 +285,6 @@ class VimSurroundExtensionTest : VimTestCase() {
} }
// VIM-2227 // VIM-2227
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testDeleteInvalidSurroundingCharacter() { fun testDeleteInvalidSurroundingCharacter() {
val text = "if (${c}condition) {" val text = "if (${c}condition) {"
@ -324,7 +294,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest("yibds{", text, text, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("yibds{", text, text, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testRepeatDeleteSurroundParens() { fun testRepeatDeleteSurroundParens() {
val before = "if ((${c}condition)) {\n}\n" val before = "if ((${c}condition)) {\n}\n"
val after = "if condition {\n}\n" val after = "if condition {\n}\n"
@ -332,7 +301,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest(listOf("dsb."), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(listOf("dsb."), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testRepeatDeleteSurroundQuotes() { fun testRepeatDeleteSurroundQuotes() {
val before = "if (\"${c}condition\") {\n}\n" val before = "if (\"${c}condition\") {\n}\n"
val after = "if (condition) {\n}\n" val after = "if (condition) {\n}\n"
@ -342,7 +310,6 @@ class VimSurroundExtensionTest : VimTestCase() {
/* Change surroundings */ /* Change surroundings */
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testChangeSurroundingParens() { fun testChangeSurroundingParens() {
val before = "if (${c}condition) {\n" + "}\n" val before = "if (${c}condition) {\n" + "}\n"
val after = "if [condition] {\n" + "}\n" val after = "if [condition] {\n" + "}\n"
@ -350,7 +317,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest(listOf("csbr"), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(listOf("csbr"), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testChangeSurroundingBlock() { fun testChangeSurroundingBlock() {
val before = "if (condition) {${c}return;}" val before = "if (condition) {${c}return;}"
val after = "if (condition) (return;)" val after = "if (condition) (return;)"
@ -358,7 +324,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest(listOf("csBb"), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(listOf("csBb"), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testChangeSurroundingTagSimple() { fun testChangeSurroundingTagSimple() {
val before = "<div><p>${c}Foo</p></div>" val before = "<div><p>${c}Foo</p></div>"
val after = "<div>${c}(Foo)</div>" val after = "<div>${c}(Foo)</div>"
@ -366,7 +331,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest(listOf("cstb"), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(listOf("cstb"), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testChangeSurroundingTagAnotherTag() { fun testChangeSurroundingTagAnotherTag() {
val before = "<div><p>${c}Foo</p></div>" val before = "<div><p>${c}Foo</p></div>"
val after = "<div>${c}<b>Foo</b></div>" val after = "<div>${c}<b>Foo</b></div>"
@ -374,7 +338,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest(listOf("cst<b>"), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(listOf("cst<b>"), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testRepeatChangeSurroundingParens() { fun testRepeatChangeSurroundingParens() {
val before = "foo(${c}index)(index2) = bar;" val before = "foo(${c}index)(index2) = bar;"
val after = "foo[index][index2] = bar;" val after = "foo[index][index2] = bar;"
@ -383,7 +346,6 @@ class VimSurroundExtensionTest : VimTestCase() {
} }
// VIM-2227 // VIM-2227
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testChangeInvalidSurroundingCharacter() { fun testChangeInvalidSurroundingCharacter() {
val text = "if (${c}condition) {" val text = "if (${c}condition) {"
@ -404,7 +366,6 @@ class VimSurroundExtensionTest : VimTestCase() {
<p>Some text</p> <p>Some text</p>
""" """
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test wrap with tag full line`() { fun `test wrap with tag full line`() {
doTest( doTest(
listOf("VS<p>"), listOf("VS<p>"),
@ -437,7 +398,6 @@ class VimSurroundExtensionTest : VimTestCase() {
</div> </div>
""" """
) )
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test wrap with tag full line in middle`() { fun `test wrap with tag full line in middle`() {
doTest( doTest(
listOf("VS<p>"), listOf("VS<p>"),
@ -459,7 +419,6 @@ class VimSurroundExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test wrap line with char selection`() { fun `test wrap line with char selection`() {
doTest( doTest(
listOf("vawES<p>"), listOf("vawES<p>"),
@ -481,7 +440,6 @@ class VimSurroundExtensionTest : VimTestCase() {
) )
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testWithAnExistingMapping() { fun testWithAnExistingMapping() {
val before = "(foo)" val before = "(foo)"
val after = "[foo]" val after = "[foo]"
@ -493,7 +451,6 @@ class VimSurroundExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test change new line`() { fun `test change new line`() {
val before = """ val before = """
"\n" "\n"
@ -505,7 +462,6 @@ class VimSurroundExtensionTest : VimTestCase() {
assertState(after) assertState(after)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testMappingSurroundPlugin() { fun testMappingSurroundPlugin() {
val before = "if (condition) ${c}return;\n" val before = "if (condition) ${c}return;\n"
val after = "if (condition) \"return\";\n" val after = "if (condition) \"return\";\n"
@ -513,7 +469,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest(":map gw ysiw\"<CR>gw", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(":map gw ysiw\"<CR>gw", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundPluginWithMacro() { fun testSurroundPluginWithMacro() {
val before = """ val before = """
if (con${c}dition) return; if (con${c}dition) return;
@ -527,7 +482,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest("qqds)qj@q", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest("qqds)qj@q", before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun testSurroundPluginWithMacroAndMapping() { fun testSurroundPluginWithMacroAndMapping() {
val before = """ val before = """
if (con${c}dition) return; if (con${c}dition) return;
@ -542,7 +496,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(keys, before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test change surround with multicaret`() { fun `test change surround with multicaret`() {
val before = """ val before = """
(${c}abc) (${c}abc)
@ -556,7 +509,6 @@ class VimSurroundExtensionTest : VimTestCase() {
doTest(listOf("cs(]"), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE) doTest(listOf("cs(]"), before, after, VimStateMachine.Mode.COMMAND, VimStateMachine.SubMode.NONE)
} }
@TestWithoutNeovim(SkipNeovimReason.PLUGIN)
fun `test delete surround with multicaret`() { fun `test delete surround with multicaret`() {
val before = """ val before = """
(${c}abc) (${c}abc)

View File

@ -64,7 +64,7 @@ class IncrementDecrementTest : VimPropertyTestBase() {
moveCaretToRandomPlace(env, editor) moveCaretToRandomPlace(env, editor)
NeovimTesting.setupEditor(editor, this) NeovimTesting.setupEditor(editor, this)
NeovimTesting.typeCommand(":set nrformats+=octal<CR>", this) NeovimTesting.typeCommand(":set nrformats+=octal<CR>", this, editor)
env.executeCommands(Generator.sampledFrom(IncrementDecrementActions(editor, this))) env.executeCommands(Generator.sampledFrom(IncrementDecrementActions(editor, this)))
@ -84,7 +84,7 @@ private class IncrementDecrementActions(private val editor: Editor, val test: Vi
val action = injector.parser.parseKeys(key).single() val action = injector.parser.parseKeys(key).single()
env.logMessage("Use command: ${injector.parser.toKeyNotation(action)}.") env.logMessage("Use command: ${injector.parser.toKeyNotation(action)}.")
VimTestCase.typeText(listOf(action), editor, editor.project) VimTestCase.typeText(listOf(action), editor, editor.project)
NeovimTesting.typeCommand(key, test) NeovimTesting.typeCommand(key, test, editor)
IdeEventQueue.getInstance().flushQueue() IdeEventQueue.getInstance().flushQueue()
PlatformTestUtil.dispatchAllInvocationEventsInIdeEventQueue() PlatformTestUtil.dispatchAllInvocationEventsInIdeEventQueue()

View File

@ -158,8 +158,8 @@ abstract class VimChangeGroupBase : VimChangeGroup {
} }
} }
if (type == null || if (type == null ||
operatorArguments.mode.inInsertMode || caret.registerStorage.storeText(editor, updatedRange, type, true) operatorArguments.mode.inInsertMode || caret.registerStorage.storeText(editor, updatedRange, type, true) ||
|| caret != editor.primaryCaret() // sticky tape for VIM-2703 todo remove in the next release caret != editor.primaryCaret() // sticky tape for VIM-2703 todo remove in the next release
) { ) {
val startOffsets = updatedRange.startOffsets val startOffsets = updatedRange.startOffsets
val endOffsets = updatedRange.endOffsets val endOffsets = updatedRange.endOffsets

View File

@ -179,7 +179,8 @@ abstract class VimOptionServiceBase : OptionService {
} }
}, },
ToggleOption(OptionConstants.experimentalapiName, OptionConstants.experimentalapiAlias, false) ToggleOption(OptionConstants.experimentalapiName, OptionConstants.experimentalapiAlias, false),
ToggleOption("closenotebooks", "closenotebooks", true),
) )
private val globalValues = mutableMapOf<String, VimDataType>() private val globalValues = mutableMapOf<String, VimDataType>()

View File

@ -35,6 +35,18 @@ import com.maddyhome.idea.vim.vimscript.model.ExecutionResult
data class CmdCommand(val ranges: Ranges, val argument: String) : Command.SingleExecution(ranges) { data class CmdCommand(val ranges: Ranges, val argument: String) : Command.SingleExecution(ranges) {
override val argFlags = flags(RangeFlag.RANGE_FORBIDDEN, ArgumentFlag.ARGUMENT_OPTIONAL, Access.READ_ONLY) override val argFlags = flags(RangeFlag.RANGE_FORBIDDEN, ArgumentFlag.ARGUMENT_OPTIONAL, Access.READ_ONLY)
private val unsupportedArgs = listOf(
Regex("-range(=[^ ])?") to "-range",
Regex("-complete=[^ ]*") to "-complete",
Regex("-count=[^ ]*") to "-count",
Regex("-addr=[^ ]*") to "-addr",
Regex("-bang") to "-bang",
Regex("-bar") to "-bar",
Regex("-register") to "-register",
Regex("-buffer") to "-buffer",
Regex("-keepscript") to "-keepscript",
)
// Static definitions needed for aliases. // Static definitions needed for aliases.
private companion object { private companion object {
const val overridePrefix = "!" const val overridePrefix = "!"
@ -76,6 +88,14 @@ data class CmdCommand(val ranges: Ranges, val argument: String) : Command.Single
argument = argument.removePrefix(overridePrefix).trim() argument = argument.removePrefix(overridePrefix).trim()
} }
for ((arg, message) in unsupportedArgs) {
val match = arg.find(argument)
match?.range?.let {
argument = argument.removeRange(it)
injector.messages.showStatusBarMessage("'$message' is not supported by `command`")
}
}
// Handle alias arguments // Handle alias arguments
val hasArguments = argument.startsWith(argsPrefix) val hasArguments = argument.startsWith(argsPrefix)
var minNumberOfArgs = 0 var minNumberOfArgs = 0

View File

@ -30,7 +30,6 @@ data class Register(val char: Char) : Expression() {
override fun evaluate(editor: VimEditor, context: ExecutionContext, vimContext: VimLContext): VimDataType { override fun evaluate(editor: VimEditor, context: ExecutionContext, vimContext: VimLContext): VimDataType {
val register = injector.registerGroup.getRegister(char) ?: throw ExException("Register is not supported yet") val register = injector.registerGroup.getRegister(char) ?: throw ExException("Register is not supported yet")
// todo Esc like keys should be one char return VimString(injector.parser.toPrintableString(register.keys))
return VimString(injector.parser.toKeyNotation(register.keys))
} }
} }

View File

@ -112,6 +112,8 @@ interface VariableService {
*/ */
fun unlockVariable(variable: Variable, depth: Int, editor: VimEditor, context: ExecutionContext, vimContext: VimLContext) fun unlockVariable(variable: Variable, depth: Int, editor: VimEditor, context: ExecutionContext, vimContext: VimLContext)
fun getGlobalVariables(): Map<String, VimDataType>
/** /**
* Clears all global variables * Clears all global variables
*/ */

View File

@ -71,6 +71,10 @@ abstract class VimVariableServiceBase : VariableService {
value.unlockVar(depth) value.unlockVar(depth)
} }
override fun getGlobalVariables(): Map<String, VimDataType> {
return globalVariables
}
override fun storeVariable(variable: Variable, value: VimDataType, editor: VimEditor, context: ExecutionContext, vimContext: VimLContext) { override fun storeVariable(variable: Variable, value: VimDataType, editor: VimEditor, context: ExecutionContext, vimContext: VimLContext) {
val scope = variable.scope ?: getDefaultVariableScope(vimContext) val scope = variable.scope ?: getDefaultVariableScope(vimContext)
val name = variable.name.evaluate(editor, context, vimContext).value val name = variable.name.evaluate(editor, context, vimContext).value